package database import ( "CatsOfMastodonBotGo/internal/config" "CatsOfMastodonBotGo/internal/domain" "fmt" "os" "gorm.io/driver/mysql" "gorm.io/driver/sqlite" "gorm.io/gorm" ) var Gorm *gorm.DB func Connect() (*gorm.DB, error) { var db *gorm.DB var err error = nil if config.Config.DBEngine == "sqlite" { _, err = os.ReadDir("data") if err != nil { err = os.Mkdir("data", 0755) if err != nil { return nil, err } } db, err = gorm.Open(sqlite.Open("data/caom.db"), &gorm.Config{}) if err != nil { return nil, err } } else { dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", config.Config.DBUser, config.Config.DBPassword, config.Config.DBHost, config.Config.DBPort, config.Config.DBName) db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { return nil, err } } // Migrate the schema if err := db.AutoMigrate(&domain.Post{}, &domain.MediaAttachment{}, &domain.Account{}); err != nil { return nil, err } return db, nil } // IDK if this is how it works or not, leave it as is for now func Init() { var err error Gorm, err = Connect() if err != nil { panic(err) } }