文件夹挂载逻辑变动
This commit is contained in:
@@ -17,17 +17,7 @@ import (
|
||||
|
||||
var DB *sql.DB
|
||||
|
||||
// ============================================================
|
||||
// 数据库版本常量
|
||||
// ============================================================
|
||||
|
||||
const (
|
||||
SchemaVersion = "v2" // 当前数据库 Schema 版本
|
||||
)
|
||||
|
||||
// ============================================================
|
||||
// 数据模型
|
||||
// ============================================================
|
||||
const SchemaVersion = "v2"
|
||||
|
||||
type GlobalConfig struct {
|
||||
ID int `json:"id"`
|
||||
@@ -61,10 +51,6 @@ type User struct {
|
||||
CreatedAt string `json:"createdAt"`
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// 数据库初始化
|
||||
// ============================================================
|
||||
|
||||
func InitDB() error {
|
||||
// 确保 data 目录存在
|
||||
if err := os.MkdirAll("./data", 0755); err != nil {
|
||||
@@ -94,12 +80,7 @@ func InitDB() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// 建表
|
||||
// ============================================================
|
||||
|
||||
func createTables() error {
|
||||
// 用户表
|
||||
_, err := DB.Exec(`
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
@@ -113,7 +94,6 @@ func createTables() error {
|
||||
return err
|
||||
}
|
||||
|
||||
// 全局配置表
|
||||
_, err = DB.Exec(`
|
||||
CREATE TABLE IF NOT EXISTS global_config (
|
||||
id INTEGER PRIMARY KEY CHECK (id = 1),
|
||||
@@ -135,7 +115,6 @@ func createTables() error {
|
||||
return err
|
||||
}
|
||||
|
||||
// 隧道表
|
||||
_, err = DB.Exec(`
|
||||
CREATE TABLE IF NOT EXISTS proxies (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
@@ -153,7 +132,6 @@ func createTables() error {
|
||||
return err
|
||||
}
|
||||
|
||||
// 应用配置表
|
||||
_, err = DB.Exec(`
|
||||
CREATE TABLE IF NOT EXISTS app_config (
|
||||
key TEXT PRIMARY KEY,
|
||||
@@ -165,7 +143,6 @@ func createTables() error {
|
||||
return err
|
||||
}
|
||||
|
||||
// 初始化默认配置
|
||||
var count int
|
||||
DB.QueryRow("SELECT COUNT(*) FROM global_config").Scan(&count)
|
||||
if count == 0 {
|
||||
@@ -185,10 +162,6 @@ func createTables() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// 迁移引擎
|
||||
// ============================================================
|
||||
|
||||
func getCurrentSchemaVersion() string {
|
||||
var version string
|
||||
err := DB.QueryRow("SELECT value FROM app_config WHERE key = 'schema_version'").Scan(&version)
|
||||
@@ -272,7 +245,6 @@ func runMigrations() error {
|
||||
log.Printf("📌 当前数据库 Schema: %s, 目标版本: %s", currentVer, targetVer)
|
||||
|
||||
if currentVer == targetVer {
|
||||
// 检查数据库是否包含有效数据
|
||||
var userCount int
|
||||
err := DB.QueryRow("SELECT COUNT(*) FROM users").Scan(&userCount)
|
||||
if err != nil || userCount == 0 {
|
||||
@@ -302,7 +274,6 @@ func runMigrations() error {
|
||||
|
||||
if currentSchema == nil || schemaVersionsEqual(currentSchema, targetSchema) {
|
||||
log.Println(" 迁移类型: 轻量复制(Schema 无变更)")
|
||||
// 验证数据库是否有效
|
||||
var userCount int
|
||||
err := DB.QueryRow("SELECT COUNT(*) FROM users").Scan(&userCount)
|
||||
if err != nil || userCount == 0 {
|
||||
@@ -448,10 +419,6 @@ func buildInsertSQL(oldTable, newTable string, oldDef, newDef *SchemaVersionDef)
|
||||
), nil
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// JWT 密钥管理
|
||||
// ============================================================
|
||||
|
||||
func ensureJwtSecret() error {
|
||||
var value string
|
||||
err := DB.QueryRow("SELECT value FROM app_config WHERE key = 'jwt_secret'").Scan(&value)
|
||||
@@ -484,10 +451,6 @@ func GetJwtSecret() (string, error) {
|
||||
return secret, nil
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// 全局配置 CRUD
|
||||
// ============================================================
|
||||
|
||||
func GetGlobalConfig() (*GlobalConfig, error) {
|
||||
var cfg GlobalConfig
|
||||
err := DB.QueryRow(`
|
||||
@@ -523,10 +486,6 @@ func UpdateGlobalConfig(cfg *GlobalConfig) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// 隧道 CRUD
|
||||
// ============================================================
|
||||
|
||||
func GetProxies() ([]Proxy, error) {
|
||||
rows, err := DB.Query(`
|
||||
SELECT id, name, type, local_ip, local_port, remote_port, enabled
|
||||
@@ -589,10 +548,6 @@ func DeleteProxy(id int) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// 用户 CRUD
|
||||
// ============================================================
|
||||
|
||||
func GetUserByUsername(username string) (*User, error) {
|
||||
var u User
|
||||
err := DB.QueryRow(`
|
||||
|
||||
Reference in New Issue
Block a user