implement dbhandler package and new test file
This commit is contained in:
@@ -1,20 +1,38 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"gitea.tecamino.com/paadi/memberDB/handlers"
|
||||
"gitea.tecamino.com/paadi/memberDB/models"
|
||||
"gitea.tecamino.com/paadi/tecamino-logger/logging"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type APIHandler struct {
|
||||
DbHandler *handlers.DatabaseHandler
|
||||
//dataHandler *dbHandler.DBHandler
|
||||
logger *logging.Logger
|
||||
}
|
||||
|
||||
func NewAPIHandler() *APIHandler {
|
||||
return &APIHandler{}
|
||||
func NewAPIHandler(logger *logging.Logger) (aH *APIHandler, err error) {
|
||||
if logger == nil {
|
||||
logger, err = logging.NewLogger("memberDb.log", logging.DefaultConfig())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
logger.Debug("NewAPIHandler", "initialize new api handler")
|
||||
aH = &APIHandler{logger: logger}
|
||||
return
|
||||
}
|
||||
|
||||
func (a *APIHandler) DBHandlerIsInitialized() bool {
|
||||
return a.DbHandler != nil
|
||||
}
|
||||
|
||||
func (a *APIHandler) OpenDatabase(c *gin.Context) {
|
||||
@@ -28,63 +46,54 @@ func (a *APIHandler) OpenDatabase(c *gin.Context) {
|
||||
}
|
||||
|
||||
if database.Path == "" {
|
||||
a.logger.Debug("OpenDatabase", "set default database path")
|
||||
database.SetDefaultPath()
|
||||
}
|
||||
|
||||
if database.Token == "" {
|
||||
a.logger.Debug("OpenDatabase", "set default token")
|
||||
database.SetDefaultToken()
|
||||
}
|
||||
|
||||
a.DbHandler, err = handlers.NewDatabaseHandler(database.Path, database.Create)
|
||||
if _, err := os.Stat(database.Path); err != nil && !database.Create {
|
||||
a.logger.Error("OpenDatabase", fmt.Sprintf("%s not found", database.Path))
|
||||
c.JSON(http.StatusBadRequest, gin.H{
|
||||
"message": fmt.Sprintf("%s not found", database.Path),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
dbName := filepath.Base(database.Path)
|
||||
folderpath := filepath.Dir(database.Path)
|
||||
|
||||
a.DbHandler, err = handlers.NewDatabaseHandler(dbName, folderpath, a.logger)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{
|
||||
"message": err.Error(),
|
||||
})
|
||||
a.logger.Error("OpenDatabase", err)
|
||||
c.JSON(http.StatusInternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
if err := a.DbHandler.CreateNewMemberTable(); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{
|
||||
"message": err.Error(),
|
||||
})
|
||||
if err := a.DbHandler.AddNewTable(&models.Member{}); err != nil {
|
||||
a.logger.Error("OpenDatabase", err)
|
||||
c.JSON(http.StatusInternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
if err := a.DbHandler.CreateNewEventTable(); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{
|
||||
"message": err.Error(),
|
||||
})
|
||||
if err := a.DbHandler.AddNewTable(&models.Event{}); err != nil {
|
||||
a.logger.Error("OpenDatabase", err)
|
||||
c.JSON(http.StatusInternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
if err := a.DbHandler.CreateNewResponsibleTable(); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{
|
||||
"message": err.Error(),
|
||||
})
|
||||
if err := a.DbHandler.AddNewTable(&models.Person{}); err != nil {
|
||||
a.logger.Error("OpenDatabase", err)
|
||||
c.JSON(http.StatusInternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
a.DbHandler.SetToken(database.Token)
|
||||
|
||||
_, err = a.DbHandler.GetMember(0)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{
|
||||
"message": err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"message": "database opened",
|
||||
})
|
||||
}
|
||||
|
||||
// databaseOpened is a helper function to first check wheter database is open for requests
|
||||
func (a *APIHandler) databaseOpened(c *gin.Context) bool {
|
||||
if a.DbHandler == nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{
|
||||
"message": "no database opened",
|
||||
})
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user