Files
memberDB/api/apiHandler.go
2025-10-17 15:41:13 +02:00

91 lines
1.8 KiB
Go

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
}