diff --git a/controllers/serverController.go b/controllers/serverController.go new file mode 100644 index 0000000..a07df64 --- /dev/null +++ b/controllers/serverController.go @@ -0,0 +1,59 @@ +package controllers + +import ( + "api/database" + "api/models" + "api/utils" + + "github.com/gofiber/fiber/v2" +) + +// AddServer - Adds a server to the database +func AddServer(c *fiber.Ctx) error { + + var data map[string]string + + if err := c.BodyParser(&data); err != nil { + return fiber.ErrBadRequest + } + + if data["name"] == "" || data["ip"] == "" { + return fiber.ErrBadRequest + } + + server := models.Server{ + Name: data["name"], + IP: data["ip"], + } + + database.DB.Create(&server) + + if server.Id == 0 { + return fiber.ErrNotAcceptable + } + + return c.JSON(fiber.Map{ + "seerver": server, + }) +} + +// GetAllServers - Returns all servers +func GetAllServers(c *fiber.Ctx) error { + + var servers []models.Server + + _, err := utils.ProcessToken(c) + if err != nil { + return fiber.ErrUnauthorized + } + + database.DB.Find(&servers) + + if len(servers) == 0 { + return fiber.ErrNotFound + } + + return c.JSON(fiber.Map{ + "servers": servers, + }) +} diff --git a/database/database.go b/database/database.go index 4aaf060..0377200 100644 --- a/database/database.go +++ b/database/database.go @@ -52,6 +52,24 @@ func ConnectDB() error { return result } + if result := db.AutoMigrate(&models.Server{}); result != nil { + return result + } + + // Count how many servers we have on the database. If none, creates our initial server. + var servers []models.Server + + db.Find(&servers) + + if len(servers) == 0 { + server := models.Server{ + Name: "Pcast Main Server", + IP: "177.153.50.98", + } + + db.Create(&server) + } + // Count how many users we have on the database. If none, creates our initial admin user. var users []models.User diff --git a/globals/globals.go b/globals/globals.go index 4046df3..e58ba64 100644 --- a/globals/globals.go +++ b/globals/globals.go @@ -1,5 +1,5 @@ package globals var ( - API_VERSION = "1.0.13" + API_VERSION = "1.0.14" ) diff --git a/models/servers.go b/models/servers.go new file mode 100644 index 0000000..44f8803 --- /dev/null +++ b/models/servers.go @@ -0,0 +1,7 @@ +package models + +type Server struct { + Id uint `gorm:"primary key" json:"id"` + Name string `gorm:"size:40;not null" json:"name"` + IP string `gorm:"size:40;not null" json:"ip"` +} diff --git a/routes/routes.go b/routes/routes.go index 0b44bec..89dbae4 100644 --- a/routes/routes.go +++ b/routes/routes.go @@ -29,6 +29,9 @@ func Setup(app *fiber.App) { SigningKey: []byte(os.Getenv("API_SECRET")), })) + protected.Get("servers", controllers.GetAllServers) + protected.Post("server", controllers.AddServer) + protected.Get("user", controllers.GetOwnUser) protected.Get("users", controllers.GetAllUsers) protected.Post("user", controllers.AddUser)