package database import ( "backend/model" "os" "github.com/glebarez/sqlite" "github.com/gofiber/fiber/v2/log" "gorm.io/gorm" ) var Db *gorm.DB func Init() error { if os.Getenv("DATABASE") == "" { log.Fatal("Error no DATABASE path or url") } var err error Db, err = gorm.Open(sqlite.Open(os.Getenv("DATABASE")), &gorm.Config{}) if err != nil { log.Error("Failed to connect database") return err } return nil } func Migrate() { Db.AutoMigrate( &model.User{}, &model.Category{}, &model.Subcategory{}, &model.Operation{}, ) } func InitDatabase() { Init() Migrate() if os.Getenv("USERS_FILE") != "" { allusers := GetUsersFromFile(os.Getenv("USERS_FILE")) for i := range allusers { CreateUser(&allusers[i]) if os.Getenv("DEFAULT_CATEGORIES_FILE") != "" { default_categories := GetCategoriesFromFile(os.Getenv("DEFAULT_CATEGORIES_FILE")) for j := range default_categories { default_categories[j].UserID = allusers[i].ID for k := range default_categories[j].Subcategories { default_categories[j].Subcategories[k].UserID = allusers[i].ID } CreateCategory(&default_categories[j]) } } if os.Getenv("DEFAULT_OPERATIONS_FILE") != "" { default_operations := GetOperationsFromFile(os.Getenv("DEFAULT_OPERATIONS_FILE")) for j := range default_operations { default_operations[j].UserID = allusers[i].ID CreateOperation(&default_operations[j]) } } } } }