refactor(frpc, database): move all database actions to database.go

This commit is contained in:
2026-03-02 13:32:58 +08:00
parent 75642fb415
commit 9203f69432
2 changed files with 119 additions and 55 deletions
+61 -1
View File
@@ -5,6 +5,7 @@ import (
"errors"
"fmt"
"strings"
"time"
_ "modernc.org/sqlite"
)
@@ -283,4 +284,63 @@ func InitUserDatabase(dbPath string) error {
}
return nil
}
}
func DBAddFrpcInstance(instance FrpcInstance) error {
_, err := frpcDB.Exec("INSERT INTO frpcInstances (userID, name, serverAddr, serverPort, auth_method, bootAtStart, runUser, configPath, createdAt) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)",
instance.UserID, instance.Name, instance.ServerAddr, instance.ServerPort, instance.AuthMethod, instance.BootAtStart, instance.RunUser, instance.ConfigPath, time.Now().Format(time.RFC3339))
if err != nil {
return fmt.Errorf("failed to insert frpc instance: %w", err)
}
return nil
}
func DBQueryFrpcInstance(userID int, instanceName string) (FrpcInstance, error) {
var instance FrpcInstance
err := frpcDB.QueryRow("SELECT id, userID, name, serverAddr, serverPort, auth_method, bootAtStart, runUser, configPath, createdAt FROM frpcInstances WHERE userID = ? AND name = ?", userID, instanceName).Scan(
&instance.ID, &instance.UserID, &instance.Name, &instance.ServerAddr, &instance.ServerPort, &instance.AuthMethod, &instance.BootAtStart, &instance.RunUser, &instance.ConfigPath, &instance.CreatedAt)
if err != nil {
return instance, fmt.Errorf("failed to query frpc instance: %w", err)
}
return instance, nil
}
func DBRemoveFrpcInstance(userID int, instanceName string) error {
_, err := frpcDB.Exec("DELETE FROM frpcInstances WHERE userID = ? AND name = ?", userID, instanceName)
if err != nil {
return fmt.Errorf("failed to delete frpc instance: %w", err)
}
return nil
}
func DBUpdateFrpcInstance(instance FrpcInstance) error {
_, err := frpcDB.Exec("UPDATE frpcInstances SET serverAddr = ?, serverPort = ?, auth_method = ?, bootAtStart = ?, runUser = ?, configPath = ? WHERE id = ?",
instance.ServerAddr, instance.ServerPort, instance.AuthMethod, instance.BootAtStart, instance.RunUser, instance.ConfigPath, instance.ID)
if err != nil {
return fmt.Errorf("failed to update frpc instance: %w", err)
}
return nil
}
func DBListFrpcInstances(userID int) ([]FrpcInstance, error) {
rows, err := frpcDB.Query("SELECT id, userID, name, serverAddr, serverPort, auth_method, bootAtStart, runUser, configPath, createdAt FROM frpcInstances WHERE userID = ?", userID)
if err != nil {
return nil, fmt.Errorf("failed to query frpc instances: %w", err)
}
defer rows.Close()
var instances []FrpcInstance
for rows.Next() {
var instance FrpcInstance
if err := rows.Scan(&instance.ID, &instance.UserID, &instance.Name, &instance.ServerAddr, &instance.ServerPort, &instance.AuthMethod, &instance.BootAtStart, &instance.RunUser, &instance.ConfigPath, &instance.CreatedAt); err != nil {
return nil, fmt.Errorf("failed to scan frpc instance: %w", err)
}
instances = append(instances, instance)
}
if err = rows.Err(); err != nil {
return nil, fmt.Errorf("rows error: %w", err)
}
return instances, nil
}