@arturwojnar/hermes-mongodb
Version:
Production-Ready TypeScript Outbox Pattern for MongoDB
34 lines • 1.11 kB
JavaScript
import { NotSupportedMongoVersionError, parseSemVer } from '@arturwojnar/hermes';
import { SupportedMajorMongoVersions } from './consts.js';
export const generateVersionPolicies = async (db) => {
const buildInfo = (await db.admin().buildInfo());
const semver = parseSemVer(buildInfo.version);
const major = semver.major || 0;
const throwNotSupportedError = () => {
throw new NotSupportedMongoVersionError({
currentVersion: buildInfo.version,
supportedVersions: SupportedMajorMongoVersions,
});
};
const supportedVersionCheckPolicy = () => {
if (major < 5) {
throwNotSupportedError();
}
};
const changeStreamFullDocumentValuePolicy = (() => {
if (major >= 6) {
return 'whenAvailable';
}
else if (major === 5) {
return 'updateLookup';
}
else {
throwNotSupportedError();
}
});
return {
supportedVersionCheckPolicy,
changeStreamFullDocumentValuePolicy,
};
};
//# sourceMappingURL=versionPolicies.js.map