-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.go
More file actions
55 lines (41 loc) · 1.34 KB
/
main.go
File metadata and controls
55 lines (41 loc) · 1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package main
import (
"log"
"os"
"github.com/gin-gonic/gin"
"github.com/keren/pao-event-panel/config"
"github.com/keren/pao-event-panel/internal/database"
"github.com/keren/pao-event-panel/internal/router"
)
func main() {
config.Load()
gin.SetMode(config.AppConfig.GinMode)
if err := database.InitDB(config.AppConfig.DBDriver, config.AppConfig.DBDSN); err != nil {
log.Fatalf("Failed to initialize database: %v", err)
}
if err := database.Migrate(); err != nil {
log.Fatalf("Failed to migrate database: %v", err)
}
database.Seed(config.AppConfig.SuperAdminUser, config.AppConfig.SuperAdminPass)
if err := os.MkdirAll("uploads", 0755); err != nil {
log.Fatalf("Failed to create uploads directory: %v", err)
}
if err := os.MkdirAll("data", 0755); err != nil {
log.Fatalf("Failed to create data directory: %v", err)
}
r := gin.Default()
r.MaxMultipartMemory = 5 << 20 // 5 MB
router.Setup(r)
// Serve frontend static files (production)
if _, err := os.Stat("web/dist"); err == nil {
r.Static("/assets", "./web/dist/assets")
r.StaticFile("/favicon.ico", "./web/dist/favicon.ico")
r.NoRoute(func(c *gin.Context) {
c.File("./web/dist/index.html")
})
}
log.Printf("Server starting on :%s", config.AppConfig.Port)
if err := r.Run(":" + config.AppConfig.Port); err != nil {
log.Fatalf("Failed to start server: %v", err)
}
}