64 lines
1.4 KiB
Go
64 lines
1.4 KiB
Go
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])
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|