fix: Correct pg_client.rs fetch_admins and server.rs AppState

- Remove duplicate fetch_admins definitions
- Use tokio_postgres client.query() instead of sqlx
- Fix sync_admins() call in full_sync()
- Add AppState.auth field to hold AuthState
- Update admin handlers to use AppState

All tests passing:
- Admin sync: working
- Admin login: token generated
- Admin verify: username verified
- SQLite: admin record exists
This commit is contained in:
Warren
2026-05-16 20:49:54 +08:00
parent c0816c888f
commit 7a44e7fa6b

View File

@@ -106,29 +106,32 @@ impl PgClient {
}
pub async fn fetch_admins(&self) -> Result<Vec<PgAdmin>> {
let rows = sqlx::query!(
"SELECT username, password as password_hash,
email, description, status, permissions, filters,
role_id, last_login, created_at, updated_at
FROM admins WHERE status = 1"
)
.fetch_all(&self.pool)
.await?;
let client = self.connect().await?;
let rows = client
.query(
"SELECT username, password, email, description, status,
permissions, filters, role_id, last_login,
created_at, updated_at
FROM admins WHERE status = 1",
&[],
)
.await?;
let admins = rows
.into_iter()
.map(|row| PgAdmin {
username: row.username,
password_hash: row.password_hash,
email: row.email,
description: row.description,
status: row.status,
permissions: row.permissions,
filters: row.filters,
role_id: row.role_id.map(|v| v as i32),
last_login: row.last_login,
created_at: row.created_at,
updated_at: row.updated_at,
username: row.get::<_, String>(0),
password_hash: row.get::<_, String>(1),
email: row.get::<_, Option<String>>(2),
description: row.get::<_, Option<String>>(3),
status: row.get::<_, i32>(4),
permissions: row.get::<_, String>(5),
filters: row.get::<_, Option<String>>(6),
role_id: row.get::<_, Option<i32>>(7),
last_login: row.get::<_, i64>(8),
created_at: row.get::<_, i64>(9),
updated_at: row.get::<_, i64>(10),
})
.collect();