UNPKG

@minimaltech/node-infra

Version:

Minimal Technology NodeJS Infrastructure - Loopback 4 Framework

178 lines 7.2 kB
"use strict"; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ViewRepository = exports.KVRepository = exports.AbstractKVRepository = exports.AbstractTzRepository = exports.DefaultCrudRepository = exports.WhereBuilder = void 0; const helpers_1 = require("../../helpers"); const utilities_1 = require("../../utilities"); const repository_1 = require("@loopback/repository"); const cloneDeep_1 = __importDefault(require("lodash/cloneDeep")); const get_1 = __importDefault(require("lodash/get")); const factory_1 = require("./relations/has-many-polymorphic/factory"); // ---------------------------------------------------------------------------------------------------------------------------------------- class WhereBuilder extends repository_1.WhereBuilder { constructor(opts) { super(opts); } newInstance(opts) { return new WhereBuilder(opts); } clone() { return new WhereBuilder((0, cloneDeep_1.default)(this.build())); } } exports.WhereBuilder = WhereBuilder; // ---------------------------------------------------------------------------------------------------------------------------------------- class DefaultCrudRepository extends repository_1.DefaultCrudRepository { /** * @experimental */ createHasManyPolymorphicRepositoryFactoryFor(opts) { const { relationName, principalType, targetRepositoryGetter } = opts; const relationMetadata = this.entityClass.definition.relations[relationName]; if (!relationMetadata.polymorphic) { throw (0, utilities_1.getError)({ message: '[createHasManyPolymorphicRepositoryFactoryFor] polymorphic missing in relation definition!', }); } return (0, factory_1.createHasManyPolymorphicRepositoryFactoryFor)({ relationMetadata, principalType, targetRepositoryGetter, }); } } exports.DefaultCrudRepository = DefaultCrudRepository; // ---------------------------------------------------------------------------------------------------------------------------------------- class AbstractTzRepository extends DefaultCrudRepository { constructor(entityClass, dataSource, scope) { super(entityClass, dataSource); this.logger = helpers_1.LoggerFactory.getLogger([scope !== null && scope !== void 0 ? scope : '']); } beginTransaction(options) { return new Promise((resolve, reject) => { this.dataSource .beginTransaction(options !== null && options !== void 0 ? options : {}) .then(rs => { resolve(rs); }) .catch(reject); }); } executeSql(command, parameters, options) { return this.execute(command, parameters, options); } getObservers(opts) { const { operation } = opts; return (0, get_1.default)(this.modelClass, `_observers.${operation}`, []); } notifyObservers(opts) { const { operation } = opts, rest = __rest(opts, ["operation"]); const observers = this.getObservers({ operation }); observers.forEach(observer => observer(Object.assign(Object.assign({}, this.modelClass), rest))); } } exports.AbstractTzRepository = AbstractTzRepository; // ---------------------------------------------------------------------------------------------------------------------------------------- class AbstractKVRepository extends repository_1.DefaultKeyValueRepository { constructor(entityClass, dataSource) { super(entityClass, dataSource); } } exports.AbstractKVRepository = AbstractKVRepository; // ---------------------------------------------------------------------------------------------------------------------------------------- class KVRepository extends AbstractKVRepository { constructor(entityClass, dataSource) { super(entityClass, dataSource); } } exports.KVRepository = KVRepository; // ---------------------------------------------------------------------------------------------------------------------------------------- class ViewRepository extends DefaultCrudRepository { constructor(entityClass, dataSource) { super(entityClass, dataSource); } existsWith(where, options) { return new Promise((resolve, reject) => { this.findOne({ where }, options) .then(rs => { resolve(rs !== null && rs !== undefined); }) .catch(reject); }); } create(_data, _options) { throw (0, utilities_1.getError)({ statusCode: 500, message: 'Cannot manipulate entity with view repository!', }); } createAll(_datum, _options) { throw (0, utilities_1.getError)({ statusCode: 500, message: 'Cannot manipulate entity with view repository!', }); } save(_entity, _options) { throw (0, utilities_1.getError)({ statusCode: 500, message: 'Cannot manipulate entity with view repository!', }); } update(_entity, _options) { throw (0, utilities_1.getError)({ statusCode: 500, message: 'Cannot manipulate entity with view repository!', }); } delete(_entity, _options) { throw (0, utilities_1.getError)({ statusCode: 500, message: 'Cannot manipulate entity with view repository!', }); } updateAll(_data, _where, _options) { throw (0, utilities_1.getError)({ statusCode: 500, message: 'Cannot manipulate entity with view repository!', }); } updateById(_id, _data, _options) { throw (0, utilities_1.getError)({ statusCode: 500, message: 'Cannot manipulate entity with view repository!', }); } replaceById(_id, _data, _options) { throw (0, utilities_1.getError)({ statusCode: 500, message: 'Cannot manipulate entity with view repository!', }); } deleteAll(_where, _options) { throw (0, utilities_1.getError)({ statusCode: 500, message: 'Cannot manipulate entity with view repository!', }); } deleteById(_id, _options) { throw (0, utilities_1.getError)({ statusCode: 500, message: 'Cannot manipulate entity with view repository!', }); } } exports.ViewRepository = ViewRepository; //# sourceMappingURL=base.repository.js.map