using the helper:
using the helper:
export async function withSQLiteTransaction<T>(
db: any,
logic: (db: any) => Promise<{ rollback?: boolean; reason?: string; result?: T }>
): Promise<{ success: boolean; result?: T; error?: any; reason?: string }> {
try {
await db.prepare?.("BEGIN").run?.() ?? db.exec("BEGIN");
const { rollback, result, reason } = await logic(db);
if (rollback) {
await db.prepare?.("ROLLBACK").run?.() ?? db.exec("ROLLBACK");
return { success: false, reason };
}
await db.prepare?.("COMMIT").run?.() ?? db.exec("COMMIT");
return { success: true, result };
} catch (error) {
await db.prepare?.("ROLLBACK").run?.() ?? db.exec("ROLLBACK");
return { success: false, error };
}
}export async function withSQLiteTransaction<T>(
db: any,
logic: (db: any) => Promise<{ rollback?: boolean; reason?: string; result?: T }>
): Promise<{ success: boolean; result?: T; error?: any; reason?: string }> {
try {
await db.prepare?.("BEGIN").run?.() ?? db.exec("BEGIN");
const { rollback, result, reason } = await logic(db);
if (rollback) {
await db.prepare?.("ROLLBACK").run?.() ?? db.exec("ROLLBACK");
return { success: false, reason };
}
await db.prepare?.("COMMIT").run?.() ?? db.exec("COMMIT");
return { success: true, result };
} catch (error) {
await db.prepare?.("ROLLBACK").run?.() ?? db.exec("ROLLBACK");
return { success: false, error };
}
}