Add mysql support
This commit is contained in:
@@ -15,6 +15,13 @@ type config struct {
|
||||
JwtSecret string
|
||||
JwtIssuer string
|
||||
JwtAudience string
|
||||
|
||||
DBEngine string
|
||||
DBHost string
|
||||
DBPort string
|
||||
DBUser string
|
||||
DBPassword string
|
||||
DBName string
|
||||
}
|
||||
|
||||
var Config *config
|
||||
@@ -58,6 +65,23 @@ func Load() *config {
|
||||
audience = "CatsOfMastodonBotGo"
|
||||
}
|
||||
|
||||
|
||||
dbEngine := os.Getenv("CAOM_DB_ENGINE")
|
||||
dbHost := os.Getenv("CAOM_DB_HOST")
|
||||
dbPort := os.Getenv("CAOM_DB_PORT")
|
||||
dbUser := os.Getenv("CAOM_DB_USER")
|
||||
dbPassword := os.Getenv("CAOM_DB_PASSWORD")
|
||||
dbName := os.Getenv("CAOM_DB_NAME")
|
||||
|
||||
if dbEngine == "" || dbHost == "" || dbPort == "" || dbUser == "" || dbPassword == "" || dbName == "" {
|
||||
slog.Info("No database connection provided, using sqlite")
|
||||
dbEngine = "sqlite"
|
||||
dbHost = ""
|
||||
dbPort = ""
|
||||
dbUser = ""
|
||||
dbPassword = ""
|
||||
dbName = "caom.db"
|
||||
}
|
||||
// Inititlize AppContext
|
||||
var appContext = &config{
|
||||
AdminPassword: adminPassword,
|
||||
@@ -67,6 +91,13 @@ func Load() *config {
|
||||
JwtSecret: secret,
|
||||
JwtIssuer: issuer,
|
||||
JwtAudience: audience,
|
||||
|
||||
DBEngine: dbEngine,
|
||||
DBHost: dbHost,
|
||||
DBPort: dbPort,
|
||||
DBUser: dbUser,
|
||||
DBPassword: dbPassword,
|
||||
DBName: dbName,
|
||||
}
|
||||
return appContext
|
||||
|
||||
|
@@ -1,9 +1,12 @@
|
||||
package database
|
||||
|
||||
import (
|
||||
"CatsOfMastodonBotGo/internal/config"
|
||||
"CatsOfMastodonBotGo/internal/domain"
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"gorm.io/driver/mysql"
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
@@ -11,17 +14,34 @@ import (
|
||||
var Gorm *gorm.DB
|
||||
|
||||
func Connect() (*gorm.DB, error) {
|
||||
_, err := os.ReadDir("data")
|
||||
if err != nil {
|
||||
err := os.Mkdir("data", 0755)
|
||||
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
|
||||
}
|
||||
}
|
||||
db, err := gorm.Open(sqlite.Open("data/caom.db"), &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
|
||||
|
Reference in New Issue
Block a user