Merge branch 'main' into poc/onboarding-setup

# Conflicts:
#	src/lib/tasks/cleaning/index.ts
This commit is contained in:
charles-gauthereau
2026-06-24 16:21:29 +02:00
4 changed files with 41 additions and 30 deletions
+1 -1
View File
@@ -33,5 +33,5 @@ keywords:
- web-ui
- agent
license: Apache-2.0
version: 1.20.0
version: 1.20.1
date-released: '2026-03-02'
-1
View File
@@ -108,7 +108,6 @@ export const PATCH = withAgentCheck(async (request: Request, {params, agent}: {
}) => {
try {
const body: BodyPatch = await request.json();
log.info({data: body}, "Body from PATH in backup route");
const status = body.status
const backupId = body.backupId
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "portabase",
"version": "1.20.0",
"version": "1.20.1",
"private": true,
"scripts": {
"dev": "next dev --turbopack -p 8887",
+39 -27
View File
@@ -1,33 +1,45 @@
import { db } from "@/db";
import { and, eq, isNotNull } from "drizzle-orm";
import {db} from "@/db";
import {and, eq, isNotNull, isNull} from "drizzle-orm";
import * as drizzleDb from "@/db";
import { withUpdatedAt } from "@/db/utils";
import { logger } from "@/lib/logger";
import {withUpdatedAt} from "@/db/utils";
import {logger} from "@/lib/logger";
const log = logger.child({ module: "tasks/cleaning" });
const log = logger.child({module: "tasks/cleaning"});
export const backupCleanTask = async () => {
try {
const backups = await db.query.backup.findMany({
where: and(
isNotNull(drizzleDb.schemas.backup.deletedAt),
eq(drizzleDb.schemas.backup.status, "ongoing"),
),
});
log.debug(`Backups to clean: ${backups.length}`);
try {
const ongoingBackups = await db.query.backup.findMany({
where: and(
isNotNull(drizzleDb.schemas.backup.deletedAt),
eq(drizzleDb.schemas.backup.status, "ongoing")
)
});
log.debug(`Backups to clean: ${ongoingBackups.length}`);
for (const backup of backups) {
await db
.update(drizzleDb.schemas.backup)
.set(
withUpdatedAt({
status: "failed",
}),
)
.where(eq(drizzleDb.schemas.backup.id, backup.id));
for (const backup of ongoingBackups) {
await db.update(drizzleDb.schemas.backup).set(withUpdatedAt({
status: "failed",
}))
.where(eq(drizzleDb.schemas.backup.id, backup.id));
}
const failedBackups = await db.query.backup.findMany({
where: and(
isNull(drizzleDb.schemas.backup.deletedAt),
eq(drizzleDb.schemas.backup.status, "failed")
)
});
log.debug(`Failed backups to clean: ${failedBackups.length}`);
for (const backup of failedBackups) {
await db.update(drizzleDb.schemas.backup).set(withUpdatedAt({
deletedAt: new Date(),
}))
.where(eq(drizzleDb.schemas.backup.id, backup.id));
}
} catch (e: any) {
log.error({name: "backupCleanTask", error: e},`Backup cleanup failed`);
throw e;
}
} catch (e: any) {
log.error({ name: "backupCleanTask", error: e }, `Backup cleanup failed`);
throw e;
}
};
};