feat: database health logs

This commit is contained in:
Charles GTE
2026-03-27 23:06:19 +01:00
parent 595ccadfb3
commit 7aecd911c0
5 changed files with 2573 additions and 3 deletions
+25 -3
View File
@@ -67,12 +67,24 @@ export async function handleDatabases(body: Body, agent: Agent, lastContact: Dat
name: db.name, name: db.name,
dbms: db.dbms as EDbmsSchema, dbms: db.dbms as EDbmsSchema,
agentDatabaseId: db.generatedId, agentDatabaseId: db.generatedId,
lastContact: lastContact, lastContact: db.pingStatus ? lastContact : null,
}) })
.returning(); .returning();
if (databaseCreated) { if (databaseCreated) {
await dbClient
.insert(drizzleDb.schemas.healthcheckLog)
.values({
kind: "database",
status: db.pingStatus ? "success" : "failed",
objectId: databaseCreated.id,
date: lastContact
})
const storages = await getDatabaseStorageChannels(databaseCreated.id) const storages = await getDatabaseStorageChannels(databaseCreated.id)
databasesResponse.push(formatDatabase(databaseCreated, backupAction, restoreAction, urlBackup, storages, null)); databasesResponse.push(formatDatabase(databaseCreated, backupAction, restoreAction, urlBackup, storages, null));
@@ -84,11 +96,22 @@ export async function handleDatabases(body: Body, agent: Agent, lastContact: Dat
.set(withUpdatedAt({ .set(withUpdatedAt({
name: db.name, name: db.name,
agentId: agent.id, agentId: agent.id,
lastContact: lastContact lastContact: db.pingStatus ? lastContact : null,
})) }))
.where(eq(drizzleDb.schemas.database.id, existingDatabase.id)) .where(eq(drizzleDb.schemas.database.id, existingDatabase.id))
.returning(); .returning();
await dbClient
.insert(drizzleDb.schemas.healthcheckLog)
.values({
kind: "database",
status: db.pingStatus ? "success" : "failed",
objectId: databaseUpdated.id,
date: lastContact
})
const activeBackup = await dbClient.query.backup.findFirst({ const activeBackup = await dbClient.query.backup.findFirst({
where: and( where: and(
eq(drizzleDb.schemas.backup.databaseId, databaseUpdated.id), eq(drizzleDb.schemas.backup.databaseId, databaseUpdated.id),
@@ -180,7 +203,6 @@ export async function handleDatabases(body: Body, agent: Agent, lastContact: Dat
databasesResponse.push(formatDatabase(databaseUpdated, backupAction, restoreAction, urlBackup, storages, urlMeta)); databasesResponse.push(formatDatabase(databaseUpdated, backupAction, restoreAction, urlBackup, storages, urlMeta));
} }
} }
return databasesResponse; return databasesResponse;
} }
+1
View File
@@ -13,6 +13,7 @@ export type databaseAgent = {
name: string, name: string,
dbms: EDbmsSchema, dbms: EDbmsSchema,
generatedId: string generatedId: string
pingStatus: boolean
} }
export type Body = { export type Body = {
+1
View File
@@ -0,0 +1 @@
ALTER TYPE "public"."event_kind" ADD VALUE 'error_health_agent';
File diff suppressed because it is too large Load Diff
+7
View File
@@ -309,6 +309,13 @@
"when": 1774643615673, "when": 1774643615673,
"tag": "0043_peaceful_chat", "tag": "0043_peaceful_chat",
"breakpoints": true "breakpoints": true
},
{
"idx": 44,
"version": "7",
"when": 1774648872657,
"tag": "0044_steep_wiccan",
"breakpoints": true
} }
] ]
} }