Files
3m-ui/backend/internal/database/database.go
T
dzx941 5b4cb63a73 fix: align listener generation with mihomo official spec
- Port now supports mihomo ports format (single/range/list)
- Add explicit RoutingMark field support
- Auto-propagate UDP flag for vmess/vless/trojan/anytls/trusttunnel
- Update validator to accept port ranges
- Sync visual config and client converter port types
- Rename module from dzx941 to kazeyukiro
- Fix missing ExpiresAt in JWTClaims
- Fix nodeDTO Port type to string
- Fix frontend tsconfig and add missing dependencies
2026-08-16 09:21:42 +08:00

48 lines
1.0 KiB
Go

package database
import (
"fmt"
"os"
"path/filepath"
"github.com/kazeyukiro/3m-ui/backend/internal/database/models"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
var GlobalDB *gorm.DB
func InitDB(dbPath string) (*gorm.DB, error) {
// Create directory of database path if not exists
dir := filepath.Dir(dbPath)
if err := os.MkdirAll(dir, 0755); err != nil {
return nil, fmt.Errorf("failed to create database directory: %w", err)
}
db, err := gorm.Open(sqlite.New(sqlite.Config{
DriverName: sqliteDriverName,
DSN: dbPath,
}), &gorm.Config{})
if err != nil {
return nil, fmt.Errorf("failed to connect to sqlite database: %w", err)
}
// AutoMigrate all models
err = db.AutoMigrate(
&models.User{},
&models.Listener{},
&models.ListenerUser{},
&models.Subscription{},
&models.AccessToken{},
&models.Config{},
&models.ProxyUser{},
&models.TrafficRecord{},
)
if err != nil {
return nil, fmt.Errorf("failed to run database auto-migration: %w", err)
}
GlobalDB = db
return db, nil
}