UNPKG

@drip_sync/drip

Version:

Scalable incremental sync for MongoDB aggregation pipelines

51 lines (50 loc) 2.2 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.zodPCSEvent = exports.zodPCSNoopEvent = exports.zodPCSDeletionEvent = exports.zodPCSUpdateEvent = exports.zodPCSInsertionEvent = void 0; const mongodb_1 = require("mongodb"); const zod_1 = __importDefault(require("zod")); const zodPCSEventCommon = zod_1.default.object({ _id: zod_1.default.instanceof(mongodb_1.ObjectId), // cluster time ct: zod_1.default.instanceof(mongodb_1.Timestamp), o: zod_1.default.string(), }); exports.zodPCSInsertionEvent = zodPCSEventCommon.merge(zod_1.default.object({ // operation type o: zod_1.default.literal("i"), // key document k: zod_1.default.record(zod_1.default.string(), zod_1.default.unknown()), // after document a: zod_1.default.record(zod_1.default.string(), zod_1.default.unknown()), })); exports.zodPCSUpdateEvent = zodPCSEventCommon.merge(zod_1.default.object({ o: zod_1.default.literal("u"), // key document k: zod_1.default.record(zod_1.default.string(), zod_1.default.unknown()), // before document b: zod_1.default.record(zod_1.default.string(), zod_1.default.unknown()), a: zod_1.default.record(zod_1.default.string(), zod_1.default.unknown()), // update description // absent for updates coming from replace events u: zod_1.default.record(zod_1.default.string(), zod_1.default.unknown()).optional(), })); exports.zodPCSDeletionEvent = zodPCSEventCommon.merge(zod_1.default.object({ o: zod_1.default.literal("d"), // key document k: zod_1.default.record(zod_1.default.string(), zod_1.default.unknown()), b: zod_1.default.record(zod_1.default.string(), zod_1.default.unknown()), })); exports.zodPCSNoopEvent = zodPCSEventCommon.merge(zod_1.default.object({ o: zod_1.default.literal("n"), // wall clock w: zod_1.default.date(), })); exports.zodPCSEvent = zod_1.default.discriminatedUnion("o", [ exports.zodPCSDeletionEvent, exports.zodPCSNoopEvent, exports.zodPCSInsertionEvent, exports.zodPCSUpdateEvent, ]);