From 852f13fa61745a452603e32a039837095d3f5637 Mon Sep 17 00:00:00 2001 From: NanamiAdmin Date: Fri, 27 Feb 2026 21:16:27 +0800 Subject: [PATCH] refactor(database): move database initialization functions to single file Consolidate InitFrpcDatabase and InitUserDatabase functions into database.go for better code organization and maintainability. Remove duplicate code from frpc.go. --- database.go | 86 +++++++++++++++++++++++++++++++++++++++-------------- frpc.go | 34 --------------------- 2 files changed, 63 insertions(+), 57 deletions(-) diff --git a/database.go b/database.go index 87db93a..46e334d 100644 --- a/database.go +++ b/database.go @@ -19,29 +19,8 @@ type User struct { } func InitDatabase(dbPath string) error { - var err error - db, err = sql.Open("sqlite", dbPath) - if err != nil { - return fmt.Errorf("failed to open database: %w", err) - } - - if err = db.Ping(); err != nil { - return fmt.Errorf("failed to ping database: %w", err) - } - - createTableSQL := ` - CREATE TABLE IF NOT EXISTS userLogin ( - userID INTEGER PRIMARY KEY AUTOINCREMENT, - username TEXT UNIQUE NOT NULL, - passwd TEXT NOT NULL, - type TEXT NOT NULL DEFAULT 'visitor' - ); - ` - _, err = db.Exec(createTableSQL) - if err != nil { - return fmt.Errorf("failed to create table: %w", err) - } - + InitUserDatabase(dbPath) + InitFrpcDatabase(dbPath) return nil } @@ -244,3 +223,64 @@ func GetAllUsers() ([]User, error) { return users, nil } + +func InitFrpcDatabase(dbPath string) error { + var err error + frpcDB, err = sql.Open("sqlite", dbPath) + if err != nil { + return fmt.Errorf("failed to open frpc database: %w", err) + } + + if err = frpcDB.Ping(); err != nil { + return fmt.Errorf("failed to ping frpc database: %w", err) + } + + createTableSQL := ` + CREATE TABLE IF NOT EXISTS frpcInstances ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + userID INTEGER NOT NULL, + name TEXT NOT NULL, + serverAddr TEXT NOT NULL, + serverPort TEXT NOT NULL, + auth_method TEXT NOT NULL, + bootAtStart INTEGER NOT NULL DEFAULT 0, + runUser TEXT NOT NULL DEFAULT 'root', + configPath TEXT NOT NULL, + createdAt TEXT NOT NULL, + UNIQUE(userID, name) + ); + ` + _, err = frpcDB.Exec(createTableSQL) + if err != nil { + return fmt.Errorf("failed to create frpcInstances table: %w", err) + } + + return nil +} + +func InitUserDatabase(dbPath string) error { + var err error + db, err = sql.Open("sqlite", dbPath) + if err != nil { + return fmt.Errorf("failed to open database: %w", err) + } + + if err = db.Ping(); err != nil { + return fmt.Errorf("failed to ping database: %w", err) + } + + createTableSQL := ` + CREATE TABLE IF NOT EXISTS userLogin ( + userID INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT UNIQUE NOT NULL, + passwd TEXT NOT NULL, + type TEXT NOT NULL DEFAULT 'visitor' + ); + ` + _, err = db.Exec(createTableSQL) + if err != nil { + return fmt.Errorf("failed to create table: %w", err) + } + + return nil + } \ No newline at end of file diff --git a/frpc.go b/frpc.go index ad89efa..50031ca 100644 --- a/frpc.go +++ b/frpc.go @@ -49,40 +49,6 @@ type FrpcInstance struct { var frpcDB *sql.DB -func InitFrpcDatabase(dbPath string) error { - var err error - frpcDB, err = sql.Open("sqlite", dbPath) - if err != nil { - return fmt.Errorf("failed to open frpc database: %w", err) - } - - if err = frpcDB.Ping(); err != nil { - return fmt.Errorf("failed to ping frpc database: %w", err) - } - - createTableSQL := ` - CREATE TABLE IF NOT EXISTS frpcInstances ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - userID INTEGER NOT NULL, - name TEXT NOT NULL, - serverAddr TEXT NOT NULL, - serverPort TEXT NOT NULL, - auth_method TEXT NOT NULL, - bootAtStart INTEGER NOT NULL DEFAULT 0, - runUser TEXT NOT NULL DEFAULT 'root', - configPath TEXT NOT NULL, - createdAt TEXT NOT NULL, - UNIQUE(userID, name) - ); - ` - _, err = frpcDB.Exec(createTableSQL) - if err != nil { - return fmt.Errorf("failed to create frpcInstances table: %w", err) - } - - return nil -} - func CloseFrpcDatabase() error { if frpcDB != nil { return frpcDB.Close()