@drip_sync/drip
Version:
Scalable incremental sync for MongoDB aggregation pipelines
51 lines (50 loc) • 2.2 kB
JavaScript
"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,
]);