UNPKG

@cloudquery/plugin-sdk-javascript

Version:

This is the high-level package to use for developing CloudQuery plugins in JavaScript

42 lines 1.74 kB
import { WriteError } from '../errors/errors.js'; import { decodeTable, decodeRecord, getPrimaryKeys } from '../schema/table.js'; export const createWrite = ( //eslint-disable-next-line @typescript-eslint/no-explicit-any memoryDB, tables, overwrite, deleteStale) => { return async (stream) => { for await (const data of stream) { const request = data; switch (request.message) { case 'migrate_table': { // Update table schema in the `tables` map const table = decodeTable(request.migrate_table.table); tables[table.name] = table; break; } case 'insert': { const [tableName, batches] = decodeRecord(request.insert.record); if (!memoryDB[tableName]) { memoryDB[tableName] = []; } const tableSchema = tables[tableName]; const pks = getPrimaryKeys(tableSchema); for (const batch of batches) { //eslint-disable-next-line unicorn/no-array-for-each for (const record of batch) { overwrite(tableSchema, pks, record); } } break; } case 'delete': { deleteStale(request.delete); break; } default: { throw new WriteError(`Unknown request message type`, { props: { message: request.message } }); } } } }; }; //# sourceMappingURL=write.js.map