const prisma = require("../utils/prisma"); const DocumentSyncRun = { statuses: { unknown: "unknown", exited: "exited", failed: "failed", success: "success", }, save: async function (queueId = null, status = null, result = {}) { try { if (!this.statuses.hasOwnProperty(status)) throw new Error( `DocumentSyncRun status ${status} is not a valid status.` ); const run = await prisma.document_sync_executions.create({ data: { queueId: Number(queueId), status: String(status), result: JSON.stringify(result), }, }); return run || null; } catch (error) { console.error(error.message); return null; } }, get: async function (clause = {}) { try { const queue = await prisma.document_sync_executions.findFirst({ where: clause, }); return queue || null; } catch (error) { console.error(error.message); return null; } }, where: async function ( clause = {}, limit = null, orderBy = null, include = {} ) { try { const results = await prisma.document_sync_executions.findMany({ where: clause, ...(limit !== null ? { take: limit } : {}), ...(orderBy !== null ? { orderBy } : {}), ...(include !== null ? { include } : {}), }); return results; } catch (error) { console.error(error.message); return []; } }, count: async function (clause = {}, limit = null, orderBy = {}) { try { const count = await prisma.document_sync_executions.count({ where: clause, ...(limit !== null ? { take: limit } : {}), ...(orderBy !== null ? { orderBy } : {}), }); return count; } catch (error) { console.error("FAILED TO COUNT DOCUMENTS.", error.message); return 0; } }, delete: async function (clause = {}) { try { await prisma.document_sync_executions.deleteMany({ where: clause }); return true; } catch (error) { console.error(error.message); return false; } }, }; module.exports = { DocumentSyncRun };