@dossierhq/sqlite-core
Version:
A library used by concrete SQLite adapters for Dossier.
23 lines • 1.37 kB
JavaScript
/// <reference types="./updateSpecification.d.ts" />
/* eslint-disable @typescript-eslint/no-unused-expressions */
import { ok, } from '@dossierhq/core';
import { buildSqliteSqlQuery, } from '@dossierhq/database-adapter';
import { queryOne } from '../QueryFunctions.js';
import { getTransactionTimestamp } from '../SqliteTransaction.js';
import { createUpdateSchemaEvent } from '../utils/EventUtils.js';
export async function schemaUpdateSpecification(database, context, session, schemaSpec, syncEvent) {
const { version, ...schemaSpecWithoutVersion } = schemaSpec;
const now = (syncEvent ? syncEvent.createdAt : getTransactionTimestamp(context.transaction)).toISOString();
const createVersionResult = await queryOne(database, context, buildSqliteSqlQuery(({ sql }) => {
sql `INSERT INTO schema_versions (version, specification, updated_at)`;
sql `VALUES (${version}, ${JSON.stringify(schemaSpecWithoutVersion)}, ${now}) RETURNING id`;
}));
if (createVersionResult.isError())
return createVersionResult;
const { id: schemaVersionId } = createVersionResult.value;
const createEventResult = await createUpdateSchemaEvent(database, context, session, schemaVersionId, syncEvent);
if (createEventResult.isError())
return createEventResult;
return ok(undefined);
}
//# sourceMappingURL=updateSpecification.js.map