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