82 lines
1.5 KiB
Go
82 lines
1.5 KiB
Go
package api
|
|
|
|
import (
|
|
"memberDB/handlers"
|
|
"memberDB/models"
|
|
"net/http"
|
|
|
|
"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.CreateNewAttendanceTable(); 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",
|
|
})
|
|
}
|
|
|
|
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
|
|
}
|