From fc4ad46f6cc4846f3a62b14fad78c663447bd05a Mon Sep 17 00:00:00 2001 From: NanamiAdmin Date: Mon, 2 Mar 2026 19:48:00 +0800 Subject: [PATCH] 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. --- database.db | Bin 24576 -> 24576 bytes database.go | 40 ++++++++++++++++++++++------------------ 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/database.db b/database.db index 4509f4b1687e759c4c0d1844520bed63ae878f49..fe97c041dc92dd3171a77116402a2ca401a67ccc 100644 GIT binary patch delta 221 zcmZoTz}Rqrae_1>-$WT_M!t;+6YZthco>=GIZKOEi+u9aGxK=)XE8AGn=tU3@Gsab zD4@YFlETW(z$q;+D$XGqY+sUETw-WsJb9hJt__r}SCXHbV`N}trfXoVYhV;&XlZ3) zVr68gZD3(#V8Fn@z{V*Z#|AV*6l{hs*bI;XdLRR^={B`8F@Wgi0%~XCf5y!Jng7{l bL4{lVQami2(u`1>SvgraMZp}lf@Br|MwK+a delta 230 zcmZoTz}Rqrae_1>$3z)tMvjdM6YZs$c^H}HIZKOEi+u9aGxK;E7#NuN^%(eP@#}3C z6j0(9&tm3g;8c_s73UC*w9l=KPb(@&jyE)%ywP9R2Eo-U$PNMQn+Aq_So7-j~@07Iw&*mN6O8CybhbAjFTn1TN@|KrVq3fK8% T`B^v>84;E<^RRGA!}v@9Rrxy1 diff --git a/database.go b/database.go index e7a619e..4614294 100644 --- a/database.go +++ b/database.go @@ -260,17 +260,17 @@ func InitFrpcDatabase(dbPath string) error { } 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) - } + 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) - } + if err = db.Ping(); err != nil { + return fmt.Errorf("failed to ping database: %w", err) + } - createTableSQL := ` + createTableSQL := ` CREATE TABLE IF NOT EXISTS userLogin ( userID INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT UNIQUE NOT NULL, @@ -278,14 +278,14 @@ func InitUserDatabase(dbPath string) error { type TEXT NOT NULL DEFAULT 'visitor' ); ` - _, err = db.Exec(createTableSQL) - if err != nil { - return fmt.Errorf("failed to create table: %w", err) - } - - return nil + _, err = db.Exec(createTableSQL) + if err != nil { + return fmt.Errorf("failed to create table: %w", err) } + 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)) @@ -297,11 +297,13 @@ func DBAddFrpcInstance(instance FrpcInstance) error { func DBQueryFrpcInstance(userID int, instanceName string) (FrpcInstance, error) { 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( - &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 { return instance, fmt.Errorf("failed to query frpc instance: %w", err) } + instance.CreatedAt, _ = time.Parse(time.RFC3339, createdAtStr) return instance, nil } @@ -332,9 +334,11 @@ func DBListFrpcInstances(userID int) ([]FrpcInstance, error) { 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 { + 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) } + instance.CreatedAt, _ = time.Parse(time.RFC3339, createdAtStr) instances = append(instances, instance) } @@ -343,4 +347,4 @@ func DBListFrpcInstances(userID int) ([]FrpcInstance, error) { } return instances, nil -} \ No newline at end of file +}