first step to remove global database.db
This commit is contained in:
@@ -18,18 +18,18 @@ func main() {
|
|||||||
|
|
||||||
config.LoadConfig()
|
config.LoadConfig()
|
||||||
|
|
||||||
err := database.Open(config.DB.Path, config.Recipients.AdminEmail)
|
db, err := database.Open(config.DB.Path, config.Recipients.AdminEmail)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error.Fatalf("Couldn't init database: %v", err)
|
logger.Error.Fatalf("Couldn't init database: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
if err := database.Close(); err != nil {
|
if err := database.Close(db); err != nil {
|
||||||
logger.Error.Fatalf("Failed to close database: %v", err)
|
logger.Error.Fatalf("Failed to close database: %v", err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
go server.Run()
|
go server.Run(db)
|
||||||
|
|
||||||
gracefulShutdown()
|
gracefulShutdown()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,11 +15,11 @@ import (
|
|||||||
|
|
||||||
var DB *gorm.DB
|
var DB *gorm.DB
|
||||||
|
|
||||||
func Open(dbPath string, adminMail string) error {
|
func Open(dbPath string, adminMail string) (*gorm.DB, error) {
|
||||||
|
|
||||||
db, err := gorm.Open(sqlite.Open(dbPath), &gorm.Config{})
|
db, err := gorm.Open(sqlite.Open(dbPath), &gorm.Config{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
if err := db.AutoMigrate(
|
if err := db.AutoMigrate(
|
||||||
&models.User{},
|
&models.User{},
|
||||||
@@ -31,12 +31,11 @@ func Open(dbPath string, adminMail string) error {
|
|||||||
&models.Category{},
|
&models.Category{},
|
||||||
&models.BankAccount{}); err != nil {
|
&models.BankAccount{}); err != nil {
|
||||||
logger.Error.Fatalf("Couldn't create database: %v", err)
|
logger.Error.Fatalf("Couldn't create database: %v", err)
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
DB = db
|
|
||||||
|
|
||||||
logger.Info.Print("Opened DB")
|
logger.Info.Print("Opened DB")
|
||||||
|
DB = db
|
||||||
var categoriesCount int64
|
var categoriesCount int64
|
||||||
db.Model(&models.Category{}).Count(&categoriesCount)
|
db.Model(&models.Category{}).Count(&categoriesCount)
|
||||||
if categoriesCount == 0 {
|
if categoriesCount == 0 {
|
||||||
@@ -44,7 +43,7 @@ func Open(dbPath string, adminMail string) error {
|
|||||||
for _, model := range categories {
|
for _, model := range categories {
|
||||||
result := db.Create(&model)
|
result := db.Create(&model)
|
||||||
if result.Error != nil {
|
if result.Error != nil {
|
||||||
return result.Error
|
return nil, result.Error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -62,7 +61,7 @@ func Open(dbPath string, adminMail string) error {
|
|||||||
if exists == 0 {
|
if exists == 0 {
|
||||||
result := db.Create(&model)
|
result := db.Create(&model)
|
||||||
if result.Error != nil {
|
if result.Error != nil {
|
||||||
return result.Error
|
return nil, result.Error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -72,20 +71,20 @@ func Open(dbPath string, adminMail string) error {
|
|||||||
if userCount == 0 {
|
if userCount == 0 {
|
||||||
var createdModel models.SubscriptionModel
|
var createdModel models.SubscriptionModel
|
||||||
if err := db.First(&createdModel).Error; err != nil {
|
if err := db.First(&createdModel).Error; err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
admin, err := createAdmin(adminMail, createdModel.ID)
|
admin, err := createAdmin(adminMail, createdModel.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
result := db.Session(&gorm.Session{FullSaveAssociations: true}).Create(&admin)
|
result := db.Session(&gorm.Session{FullSaveAssociations: true}).Create(&admin)
|
||||||
if result.Error != nil {
|
if result.Error != nil {
|
||||||
return result.Error
|
return nil, result.Error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return db, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func createSubscriptionModels() []models.SubscriptionModel {
|
func createSubscriptionModels() []models.SubscriptionModel {
|
||||||
@@ -167,11 +166,11 @@ func createAdmin(userMail string, subscriptionModelID uint) (*models.User, error
|
|||||||
//"DE49700500000008447644", //fake
|
//"DE49700500000008447644", //fake
|
||||||
}
|
}
|
||||||
|
|
||||||
func Close() error {
|
func Close(db *gorm.DB) error {
|
||||||
logger.Info.Print("Closing DB")
|
logger.Info.Print("Closing DB")
|
||||||
db, err := DB.DB()
|
database, err := db.DB()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return db.Close()
|
return database.Close()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,13 +20,14 @@ import (
|
|||||||
"GoMembership/pkg/logger"
|
"GoMembership/pkg/logger"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
var shutdownChannel = make(chan struct{})
|
var shutdownChannel = make(chan struct{})
|
||||||
var srv *http.Server
|
var srv *http.Server
|
||||||
|
|
||||||
// Run initializes the server configuration, sets up services and controllers, and starts the HTTP server.
|
// Run initializes the server configuration, sets up services and controllers, and starts the HTTP server.
|
||||||
func Run() {
|
func Run(db *gorm.DB) {
|
||||||
|
|
||||||
emailService := services.NewEmailService(config.SMTP.Host, config.SMTP.Port, config.SMTP.User, config.SMTP.Password)
|
emailService := services.NewEmailService(config.SMTP.Host, config.SMTP.Port, config.SMTP.User, config.SMTP.Password)
|
||||||
var consentRepo repositories.ConsentRepositoryInterface = &repositories.ConsentRepository{}
|
var consentRepo repositories.ConsentRepositoryInterface = &repositories.ConsentRepository{}
|
||||||
@@ -41,13 +42,11 @@ func Run() {
|
|||||||
|
|
||||||
var licenceRepo repositories.LicenceInterface = &repositories.LicenceRepository{}
|
var licenceRepo repositories.LicenceInterface = &repositories.LicenceRepository{}
|
||||||
licenceService := &services.LicenceService{Repo: licenceRepo}
|
licenceService := &services.LicenceService{Repo: licenceRepo}
|
||||||
|
userService := &services.UserService{DB: db, Licences: licenceRepo}
|
||||||
var userRepo repositories.UserRepositoryInterface = &repositories.UserRepository{}
|
|
||||||
userService := &services.UserService{Repo: userRepo, Licences: licenceRepo}
|
|
||||||
|
|
||||||
userController := &controllers.UserController{Service: userService, EmailService: emailService, ConsentService: consentService, LicenceService: licenceService, BankAccountService: bankAccountService, MembershipService: membershipService}
|
userController := &controllers.UserController{Service: userService, EmailService: emailService, ConsentService: consentService, LicenceService: licenceService, BankAccountService: bankAccountService, MembershipService: membershipService}
|
||||||
membershipController := &controllers.MembershipController{Service: *membershipService, UserController: userController}
|
membershipController := &controllers.MembershipController{Service: membershipService, UserService: userService}
|
||||||
licenceController := &controllers.LicenceController{Service: *licenceService}
|
licenceController := &controllers.LicenceController{Service: licenceService}
|
||||||
contactController := &controllers.ContactController{EmailService: emailService}
|
contactController := &controllers.ContactController{EmailService: emailService}
|
||||||
|
|
||||||
router := gin.Default()
|
router := gin.Default()
|
||||||
@@ -65,7 +64,7 @@ func Run() {
|
|||||||
router.Use(middlewares.RateLimitMiddleware(limiter))
|
router.Use(middlewares.RateLimitMiddleware(limiter))
|
||||||
|
|
||||||
routes.RegisterRoutes(router, userController, membershipController, contactController, licenceController)
|
routes.RegisterRoutes(router, userController, membershipController, contactController, licenceController)
|
||||||
validation.SetupValidators()
|
validation.SetupValidators(db)
|
||||||
|
|
||||||
logger.Info.Println("Starting server on :8080")
|
logger.Info.Println("Starting server on :8080")
|
||||||
srv = &http.Server{
|
srv = &http.Server{
|
||||||
|
|||||||
Reference in New Issue
Block a user