package api import ( "net/http" "gitea.tecamino.com/paadi/memberDB/handlers" "gitea.tecamino.com/paadi/memberDB/models" "github.com/gin-gonic/gin" ) type APIHandler struct { DbHandler *handlers.DatabaseHandler } func NewAPIHandler() *APIHandler { return &APIHandler{} } func (a *APIHandler) OpenDatabase(c *gin.Context) { var database models.Database var err error if err := c.BindJSON(&database); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "message": err.Error(), }) return } if database.Path == "" { database.SetDefaultPath() } if database.Token == "" { database.SetDefaultToken() } a.DbHandler, err = handlers.NewDatabaseHandler(database.Path, database.Create) if err != nil { c.JSON(http.StatusBadRequest, gin.H{ "message": err.Error(), }) return } if err := a.DbHandler.CreateNewMemberTable(); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "message": err.Error(), }) return } if err := a.DbHandler.CreateNewEventTable(); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "message": err.Error(), }) return } if err := a.DbHandler.CreateNewResponsibleTable(); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "message": err.Error(), }) 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 }