UNPKG

@dossierhq/sqlite-core

Version:

A library used by concrete SQLite adapters for Dossier.

48 lines 2.2 kB
/// <reference types="./deleteGetEntityInfo.d.ts" /> import { notOk, ok, } from '@dossierhq/core'; import { buildSqliteSqlQuery, } from '@dossierhq/database-adapter'; import { queryMany } from '../QueryFunctions.js'; export async function adminEntityDeleteGetEntityInfo(database, context, references) { const uuids = references.map(({ id }) => id); const entityResult = await queryMany(database, context, buildSqliteSqlQuery(({ sql, addValueList }) => sql `SELECT e.id, e.uuid, e.auth_key, e.resolved_auth_key, e.status, e.latest_entity_versions_id FROM entities e WHERE e.uuid IN ${addValueList(uuids)}`)); if (entityResult.isError()) return entityResult; const missingUuids = []; const payload = []; for (const uuid of uuids) { const row = entityResult.value.find((row) => row.uuid === uuid); if (!row) { missingUuids.push(uuid); } else { payload.push({ entityId: uuid, entityInternalId: row.id, entityVersionInternalId: row.latest_entity_versions_id, authKey: row.auth_key, resolvedAuthKey: row.resolved_auth_key, status: row.status, referencedBy: [], }); } } if (missingUuids.length > 0) { return notOk.NotFound(`No such entities: ${missingUuids.join(', ')}`); } const latestReferencesResult = await queryMany(database, context, buildSqliteSqlQuery(({ sql, addValueList }) => sql `SELECT elr.to_entities_id, e.uuid FROM entity_latest_references elr JOIN entities e ON elr.from_entities_id = e.id WHERE elr.to_entities_id IN ${addValueList(payload.map((it) => it.entityInternalId))}`)); if (latestReferencesResult.isError()) return latestReferencesResult; for (const row of latestReferencesResult.value) { const entity = payload.find((it) => it.entityInternalId === row.to_entities_id); if (entity && row.uuid) { entity.referencedBy.push({ id: row.uuid }); } } return ok(payload); } //# sourceMappingURL=deleteGetEntityInfo.js.map