testfb/main.go
2024-10-09 08:38:01 +08:00

65 lines
1.6 KiB
Go

package main
import (
"log"
"os"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/logger"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"testfb/config"
"testfb/handlers"
"testfb/middleware"
"testfb/models"
)
func main() {
// Initialize configuration
cfg := config.New()
// Set up logging
logFile, err := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
log.Fatalf("Error opening log file: %v", err)
}
defer logFile.Close()
// Initialize database
db, err := gorm.Open(mysql.Open(cfg.DBConnString), &gorm.Config{})
if err != nil {
log.Fatalf("Failed to connect to database: %v", err)
}
// Auto-migrate the users table
err = db.AutoMigrate(&models.User{})
if err != nil {
log.Fatalf("Failed to auto-migrate: %v", err)
}
// Initialize Redis client
redisClient := config.InitRedis(cfg.RedisAddr)
// Create Fiber app
app := fiber.New()
// Set up middleware
app.Use(logger.New(logger.Config{
Format: "[${time}] ${status} - ${latency} ${method} ${path}\n",
Output: logFile,
}))
// Set up routes
app.Post("/login", handlers.Login(db, redisClient))
app.Get("/user", middleware.AuthMiddleware(redisClient), handlers.GetCurrentUser(db))
app.Put("/user", middleware.AuthMiddleware(redisClient), handlers.UpdateCurrentUser(db))
app.Get("/users/:id", middleware.AuthMiddleware(redisClient), handlers.GetUserByID(db))
app.Post("/getuser", handlers.GetUserInfo(false, redisClient))
app.Post("/getstudent", handlers.GetUserInfo(true, redisClient))
app.Post("/getstudentsbynumber", handlers.GetStudentInfoByParent(redisClient))
// Start server
log.Fatal(app.Listen(":7777"))
}