Abstract db handling into repositories

This commit is contained in:
2025-01-05 22:22:00 +01:00
parent 2eadad9135
commit 4e48e87f6c
5 changed files with 303 additions and 105 deletions

32
main.go
View File

@@ -6,20 +6,18 @@ import(
"net/http"
"fmt"
"gorm.io/gorm"
"gorm.io/driver/sqlite"
"github.com/gin-gonic/gin"
"github.com/joho/godotenv"
"example.com/gin/test/controllers"
"example.com/gin/test/models"
"example.com/gin/test/repositories"
"example.com/gin/test/middlewares"
)
var(
roomController controllers.RoomController
userController controllers.UserController
autoValidator middlewares.AuthValidator
roomController controllers.RoomController = controllers.NewRoomController()
userController controllers.UserController = controllers.UserController{}
authValidator middlewares.AuthValidator = middlewares.AuthValidator{}
)
func LoadEnvVariables() {
@@ -46,19 +44,8 @@ func SetReply(ctx *gin.Context, err error, message any) {
func main() {
LoadEnvVariables()
db, err := gorm.Open(sqlite.Open(os.Getenv("SQLITE_DB")), &gorm.Config{})
if err != nil {
panic("failed to connect to database")
}
repositories.InitRepositories()
err = db.AutoMigrate(&models.Room{}, &models.User{}, &models.Booking{})
if err != nil {
panic("failed to migrate database")
}
roomController = controllers.NewRoomController(db)
userController = controllers.NewUserController(db)
authValidator := middlewares.AuthValidator{ DB: db, }
server := gin.New()
server.Use(gin.Recovery())
@@ -84,5 +71,14 @@ func main() {
apiRoutes.GET("/users/validate", authValidator.OptionalAuth, userController.Validate)
}
viewRoutes := server.Group("/")
{
viewRoutes.GET("/", userController.MainView)
viewRoutes.GET("/login", userController.LoginView)
viewRoutes.GET("/register", userController.RegisterView)
viewRoutes.GET("/passwordreset", userController.ResetView)
}
server.Run(":"+os.Getenv("PORT"))
}