Files
old-backend/main.go

66 lines
1.5 KiB
Go
Raw Normal View History

package main
import (
"fmt"
2023-09-05 11:37:03 +02:00
"log"
"net/http"
2023-09-05 11:37:03 +02:00
"novatech/config"
"novatech/models"
2023-09-05 11:37:03 +02:00
"novatech/routes"
"novatech/shared"
"github.com/gin-gonic/gin"
"github.com/jinzhu/gorm"
"github.com/qor/admin"
)
var DB *gorm.DB
func main() {
2023-09-05 11:37:03 +02:00
// LOAD APPLICATION CONFIGURATION
err := config.Load()
if err != nil {
2023-09-05 11:37:03 +02:00
log.Fatal(err)
}
2023-09-05 11:37:03 +02:00
// Db Connect and Close
2023-09-06 11:58:33 +02:00
if shared.Init() != nil {
panic("Failed to connect to database")
}
2023-09-05 11:37:03 +02:00
defer shared.CloseDb()
// Initialize Admin interface
2023-09-05 11:37:03 +02:00
Admin := admin.New(&admin.AdminConfig{DB: shared.GetDb()})
2023-09-06 11:58:33 +02:00
fmt.Printf("Admin instance: %+v\n", Admin)
// Allow Admin to manage User resource
2023-09-06 11:58:33 +02:00
company := Admin.AddResource(&models.Company{})
company.Meta(&admin.Meta{Name: "Users", Config: &admin.SelectManyConfig{SelectMode: "bottom_sheet"}})
company.Meta(&admin.Meta{Name: "Devices", Config: &admin.SelectManyConfig{SelectMode: "bottom_sheet"}})
// Add User and Device resources
Admin.AddResource(&models.User{})
2023-09-06 11:58:33 +02:00
Admin.AddResource(&models.Device{})
// Initialize HTTP request multiplexer
mux := http.NewServeMux()
// Mount admin interface to mux
Admin.MountTo("/admin", mux)
// Start the admin server in a separate goroutine
go func() {
2023-09-05 11:37:03 +02:00
port := config.AppConfig.Service.Port
fmt.Println("Admin server listening on :" + port)
http.ListenAndServe(":" + port, mux)
}()
// Initialize Gin
r := gin.Default()
routes.InitRouter(r)
// Start the Gin server on another port
2023-09-05 11:37:03 +02:00
port := config.AppConfig.AdminService.Port
fmt.Println("Application server listening on :" + port)
r.Run(":" + port)
}