refactor(database): make DBListFrpcInstances able to list all users' frpc instances but not single user

feat(frpcAct): user will get createdBy when query frpc instances on current server
docs(api): update related api documentation
This commit is contained in:
2026-03-12 22:41:17 +08:00
parent f2b07a7732
commit 49048597f2
4 changed files with 45 additions and 25 deletions
+23 -4
View File
@@ -21,6 +21,20 @@ type User struct {
CreatedAt string
}
type FrpcInstance struct {
ID int
UserID int
Name string
ServerAddr string
ServerPort string
AuthMethod string
BootAtStart bool
RunUser string
ConfigPath string
CreatedAt time.Time
CreatedBy string
}
func InitDatabase(dbPath string) error {
InitUserDatabase(dbPath)
InitFrpcDatabase(dbPath)
@@ -362,10 +376,15 @@ func DBUpdateFrpcInstance(instance FrpcInstance) error {
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)
func DBListFrpcInstances() ([]FrpcInstance, error) {
rows, err := frpcDB.Query(`
SELECT fi.id, fi.userID, fi.name, fi.serverAddr, fi.serverPort, fi.auth_method,
fi.bootAtStart, fi.runUser, fi.configPath, fi.createdAt, u.username
FROM frpcInstances fi
JOIN userLogin u ON fi.userID = u.userID
`)
if err != nil {
return nil, fmt.Errorf("failed to query frpc instances: %w", err)
return nil, fmt.Errorf("failed to query all frpc instances: %w", err)
}
defer rows.Close()
@@ -373,7 +392,7 @@ func DBListFrpcInstances(userID int) ([]FrpcInstance, error) {
for rows.Next() {
var instance FrpcInstance
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 {
if err := rows.Scan(&instance.ID, &instance.UserID, &instance.Name, &instance.ServerAddr, &instance.ServerPort, &instance.AuthMethod, &instance.BootAtStart, &instance.RunUser, &instance.ConfigPath, &createdAtStr, &instance.CreatedBy); err != nil {
return nil, fmt.Errorf("failed to scan frpc instance: %w", err)
}
instance.CreatedAt, _ = time.Parse(time.RFC3339, createdAtStr)