123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.defineAspects = exports.AbstractOperation = exports.Aspect = void 0;
- const bson_1 = require("../bson");
- const read_preference_1 = require("../read_preference");
- exports.Aspect = {
- READ_OPERATION: Symbol('READ_OPERATION'),
- WRITE_OPERATION: Symbol('WRITE_OPERATION'),
- RETRYABLE: Symbol('RETRYABLE'),
- EXPLAINABLE: Symbol('EXPLAINABLE'),
- SKIP_COLLATION: Symbol('SKIP_COLLATION'),
- CURSOR_CREATING: Symbol('CURSOR_CREATING'),
- CURSOR_ITERATING: Symbol('CURSOR_ITERATING')
- };
- /** @internal */
- const kSession = Symbol('session');
- /**
- * This class acts as a parent class for any operation and is responsible for setting this.options,
- * as well as setting and getting a session.
- * Additionally, this class implements `hasAspect`, which determines whether an operation has
- * a specific aspect.
- * @internal
- */
- class AbstractOperation {
- constructor(options = {}) {
- var _a;
- this.readPreference = this.hasAspect(exports.Aspect.WRITE_OPERATION)
- ? read_preference_1.ReadPreference.primary
- : (_a = read_preference_1.ReadPreference.fromOptions(options)) !== null && _a !== void 0 ? _a : read_preference_1.ReadPreference.primary;
- // Pull the BSON serialize options from the already-resolved options
- this.bsonOptions = (0, bson_1.resolveBSONOptions)(options);
- if (options.session) {
- this[kSession] = options.session;
- }
- this.options = options;
- this.bypassPinningCheck = !!options.bypassPinningCheck;
- this.trySecondaryWrite = false;
- }
- hasAspect(aspect) {
- const ctor = this.constructor;
- if (ctor.aspects == null) {
- return false;
- }
- return ctor.aspects.has(aspect);
- }
- get session() {
- return this[kSession];
- }
- get canRetryRead() {
- return true;
- }
- get canRetryWrite() {
- return true;
- }
- }
- exports.AbstractOperation = AbstractOperation;
- function defineAspects(operation, aspects) {
- if (!Array.isArray(aspects) && !(aspects instanceof Set)) {
- aspects = [aspects];
- }
- aspects = new Set(aspects);
- Object.defineProperty(operation, 'aspects', {
- value: aspects,
- writable: false
- });
- return aspects;
- }
- exports.defineAspects = defineAspects;
- //# sourceMappingURL=operation.js.map
|