fix(database): correct time parsing for frpc instance queries

Fix incorrect time parsing when querying frpc instances by properly handling the createdAt string field and converting it to time.Time. Also fix indentation in InitUserDatabase function.
This commit is contained in:
2026-03-02 19:48:00 +08:00
parent 13a401dafe
commit fc4ad46f6c
2 changed files with 22 additions and 18 deletions
BIN
View File
Binary file not shown.
+22 -18
View File
@@ -260,17 +260,17 @@ func InitFrpcDatabase(dbPath string) error {
} }
func InitUserDatabase(dbPath string) error { func InitUserDatabase(dbPath string) error {
var err error var err error
db, err = sql.Open("sqlite", dbPath) db, err = sql.Open("sqlite", dbPath)
if err != nil { if err != nil {
return fmt.Errorf("failed to open database: %w", err) return fmt.Errorf("failed to open database: %w", err)
} }
if err = db.Ping(); err != nil { if err = db.Ping(); err != nil {
return fmt.Errorf("failed to ping database: %w", err) return fmt.Errorf("failed to ping database: %w", err)
} }
createTableSQL := ` createTableSQL := `
CREATE TABLE IF NOT EXISTS userLogin ( CREATE TABLE IF NOT EXISTS userLogin (
userID INTEGER PRIMARY KEY AUTOINCREMENT, userID INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL, username TEXT UNIQUE NOT NULL,
@@ -278,14 +278,14 @@ func InitUserDatabase(dbPath string) error {
type TEXT NOT NULL DEFAULT 'visitor' type TEXT NOT NULL DEFAULT 'visitor'
); );
` `
_, err = db.Exec(createTableSQL) _, err = db.Exec(createTableSQL)
if err != nil { if err != nil {
return fmt.Errorf("failed to create table: %w", err) return fmt.Errorf("failed to create table: %w", err)
}
return nil
} }
return nil
}
func DBAddFrpcInstance(instance FrpcInstance) error { func DBAddFrpcInstance(instance FrpcInstance) error {
_, err := frpcDB.Exec("INSERT INTO frpcInstances (userID, name, serverAddr, serverPort, auth_method, bootAtStart, runUser, configPath, createdAt) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", _, 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)) instance.UserID, instance.Name, instance.ServerAddr, instance.ServerPort, instance.AuthMethod, instance.BootAtStart, instance.RunUser, instance.ConfigPath, time.Now().Format(time.RFC3339))
@@ -297,11 +297,13 @@ func DBAddFrpcInstance(instance FrpcInstance) error {
func DBQueryFrpcInstance(userID int, instanceName string) (FrpcInstance, error) { func DBQueryFrpcInstance(userID int, instanceName string) (FrpcInstance, error) {
var instance FrpcInstance var instance FrpcInstance
var createdAtStr string
err := frpcDB.QueryRow("SELECT id, userID, name, serverAddr, serverPort, auth_method, bootAtStart, runUser, configPath, createdAt FROM frpcInstances WHERE userID = ? AND name = ?", userID, instanceName).Scan( 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) &instance.ID, &instance.UserID, &instance.Name, &instance.ServerAddr, &instance.ServerPort, &instance.AuthMethod, &instance.BootAtStart, &instance.RunUser, &instance.ConfigPath, &createdAtStr)
if err != nil { if err != nil {
return instance, fmt.Errorf("failed to query frpc instance: %w", err) return instance, fmt.Errorf("failed to query frpc instance: %w", err)
} }
instance.CreatedAt, _ = time.Parse(time.RFC3339, createdAtStr)
return instance, nil return instance, nil
} }
@@ -332,9 +334,11 @@ func DBListFrpcInstances(userID int) ([]FrpcInstance, error) {
var instances []FrpcInstance var instances []FrpcInstance
for rows.Next() { for rows.Next() {
var instance FrpcInstance 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 { var createdAtStr string
if err := rows.Scan(&instance.ID, &instance.UserID, &instance.Name, &instance.ServerAddr, &instance.ServerPort, &instance.AuthMethod, &instance.BootAtStart, &instance.RunUser, &instance.ConfigPath, &createdAtStr); err != nil {
return nil, fmt.Errorf("failed to scan frpc instance: %w", err) return nil, fmt.Errorf("failed to scan frpc instance: %w", err)
} }
instance.CreatedAt, _ = time.Parse(time.RFC3339, createdAtStr)
instances = append(instances, instance) instances = append(instances, instance)
} }
@@ -343,4 +347,4 @@ func DBListFrpcInstances(userID int) ([]FrpcInstance, error) {
} }
return instances, nil return instances, nil
} }