package database import ( "database/sql" "fmt" "log" _ "modernc.org/sqlite" ) var DB *sql.DB func InitDB(dbFile string) error { var err error DB, err = sql.Open("sqlite", dbFile) if err != nil { return fmt.Errorf("无法打开数据库: %w", err) } // 初始化表 if err := createTables(); err != nil { return err } return nil } func createTables() error { // 创建 users 表 _, err := DB.Exec(` CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT UNIQUE NOT NULL, password_hash TEXT NOT NULL, role TEXT NOT NULL )`) if err != nil { return err } // 创建 devices 表 _, err = DB.Exec(` CREATE TABLE IF NOT EXISTS devices ( id INTEGER PRIMARY KEY AUTOINCREMENT, device_id TEXT UNIQUE NOT NULL, expiration DATETIME NOT NULL )`) if err != nil { return err } // **创建 pending_requests 表** _, err = DB.Exec(`CREATE TABLE IF NOT EXISTS pending_requests ( id INTEGER PRIMARY KEY AUTOINCREMENT, device_id TEXT NOT NULL, request_time DATETIME NOT NULL, status TEXT NOT NULL CHECK(status IN ('pending', 'approved', 'rejected')), approved_by TEXT DEFAULT NULL, approved_at DATETIME DEFAULT NULL, expiration DATETIME DEFAULT NULL );`) if err != nil { log.Fatalf("创建 pending_requests 失败: %v", err) return err } return nil }