mirror of
https://github.com/Sagit-chu/flvx.git
synced 2026-09-29 07:56:37 +08:00
97 lines
2.0 KiB
Go
97 lines
2.0 KiB
Go
package common
|
|
|
|
import (
|
|
"database/sql"
|
|
"fmt"
|
|
"log"
|
|
|
|
_ "github.com/mattn/go-sqlite3"
|
|
)
|
|
|
|
var DB *sql.DB
|
|
|
|
// InitDatabase 初始化sqlite3数据库
|
|
func InitDatabase() error {
|
|
var err error
|
|
DB, err = sql.Open("sqlite3", "data.db")
|
|
if err != nil {
|
|
return fmt.Errorf("连接数据库失败: %v", err)
|
|
}
|
|
|
|
if err = DB.Ping(); err != nil {
|
|
return fmt.Errorf("数据库连接测试失败: %v", err)
|
|
}
|
|
|
|
// 创建表结构
|
|
if err = createTables(); err != nil {
|
|
return fmt.Errorf("创建表结构失败: %v", err)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// createTables 创建表结构
|
|
func createTables() error {
|
|
tables := []string{
|
|
`CREATE TABLE IF NOT EXISTS users (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
username VARCHAR(100) NOT NULL UNIQUE,
|
|
password VARCHAR(100) NOT NULL,
|
|
email VARCHAR(100),
|
|
is_active BOOLEAN NOT NULL DEFAULT 1
|
|
)`,
|
|
}
|
|
|
|
for _, table := range tables {
|
|
if _, err := DB.Exec(table); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
// 创建默认管理员用户
|
|
//createDefaultUser()
|
|
|
|
fmt.Println("✅ 数据库表创建完成")
|
|
return nil
|
|
}
|
|
|
|
// createDefaultUser 创建默认管理员用户
|
|
func createDefaultUser() {
|
|
var count int
|
|
err := DB.QueryRow("SELECT COUNT(*) FROM users").Scan(&count)
|
|
if err != nil || count > 0 {
|
|
return
|
|
}
|
|
|
|
// 插入默认管理员用户
|
|
_, err = DB.Exec(`INSERT INTO users (username, password, email, is_active)
|
|
VALUES (?, ?, ?, ?)`,
|
|
"admin", "123456", "admin@example.com", true)
|
|
|
|
if err != nil {
|
|
log.Printf("创建默认用户失败: %v", err)
|
|
} else {
|
|
fmt.Println("✅ 创建默认管理员用户成功")
|
|
}
|
|
}
|
|
|
|
// Insert 插入数据
|
|
func Insert(sql string, args ...interface{}) (sql.Result, error) {
|
|
return DB.Exec(sql, args...)
|
|
}
|
|
|
|
// Update 更新数据
|
|
func Update(sql string, args ...interface{}) (sql.Result, error) {
|
|
return DB.Exec(sql, args...)
|
|
}
|
|
|
|
// Delete 删除数据
|
|
func Delete(sql string, args ...interface{}) (sql.Result, error) {
|
|
return DB.Exec(sql, args...)
|
|
}
|
|
|
|
// Select 查询数据
|
|
func Select(sql string, args ...interface{}) (*sql.Rows, error) {
|
|
return DB.Query(sql, args...)
|
|
}
|