1 Commits

Author SHA1 Message Date
admin d4d2d74811 fix: auto-create system_settings and users tables on first use
Docker Build / Build and Push Docker Image (push) Successful in 2m13s
Release / Build and Release (push) Successful in 1m0s
2026-06-22 22:31:19 +00:00
+43
View File
@@ -164,6 +164,11 @@ func (r *installRepository) IsInstalled(ctx context.Context) (bool, error) {
// upsertSetting 插入或更新设置
func (r *installRepository) upsertSetting(ctx context.Context, key, value string) error {
// 先确保表存在
if err := r.ensureTablesExist(ctx); err != nil {
return err
}
now := time.Now()
result := r.db.WithContext(ctx).
@@ -189,6 +194,44 @@ func (r *installRepository) upsertSetting(ctx context.Context, key, value string
return nil
}
// ensureTablesExist 确保必要的表存在
func (r *installRepository) ensureTablesExist(ctx context.Context) error {
// 创建 system_settings 表
if err := r.db.WithContext(ctx).Exec(`
CREATE TABLE IF NOT EXISTS system_settings (
id TEXT PRIMARY KEY,
category TEXT,
key TEXT UNIQUE,
value TEXT,
created_at DATETIME,
updated_at DATETIME
)
`).Error; err != nil {
return err
}
// 创建 users 表
if err := r.db.WithContext(ctx).Exec(`
CREATE TABLE IF NOT EXISTS users (
id TEXT PRIMARY KEY,
username TEXT UNIQUE,
password_hash TEXT,
email TEXT,
email_verified BOOLEAN,
role TEXT,
status TEXT,
encrypted_config_key TEXT,
config_key_nonce TEXT,
created_at DATETIME,
updated_at DATETIME
)
`).Error; err != nil {
return err
}
return nil
}
func boolToStr(b bool) string {
if b {
return "true"