UNPKG

database-proxy

Version:

Through a set of access control rules configuration database access to realize the client directly access the database via HTTP.

182 lines (181 loc) 5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.QUERY_COMMANDS = exports.LOGIC_COMMANDS = exports.UPDATE_COMMANDS = exports.getAction = exports.JoinType = exports.Direction = exports.ActionType = void 0; var ActionType; (function (ActionType) { ActionType["READ"] = "database.queryDocument"; ActionType["UPDATE"] = "database.updateDocument"; ActionType["ADD"] = "database.addDocument"; ActionType["REMOVE"] = "database.deleteDocument"; ActionType["COUNT"] = "database.countDocument"; ActionType["WATCH"] = "database.watchDocument"; ActionType["AGGREGATE"] = "database.aggregateDocuments"; ActionType["CREATE_INDEX"] = "database.createIndex"; ActionType["CREATE_INDEXES"] = "database.createIndexes"; ActionType["DROP_INDEX"] = "database.dropIndex"; ActionType["DROP_INDEXES"] = "database.dropIndexes"; ActionType["LIST_INDEXES"] = "database.listIndexes"; })(ActionType || (exports.ActionType = ActionType = {})); // params types var Direction; (function (Direction) { Direction["DESC"] = "desc"; Direction["ASC"] = "asc"; })(Direction || (exports.Direction = Direction = {})); // left, right, inner, full var JoinType; (function (JoinType) { JoinType["INNER"] = "inner"; JoinType["LEFT"] = "left"; JoinType["RIGHT"] = "right"; JoinType["FULL"] = "full"; })(JoinType || (exports.JoinType = JoinType = {})); const ReadAcceptParams = [ 'query', 'order', 'offset', 'limit', 'projection', 'multi', 'count', 'joins', 'nested', ]; const UpdateAcceptParams = [ 'query', 'data', 'multi', 'upsert', 'merge', 'joins', ]; const AddAcceptParams = ['data', 'multi']; const RemoveAcceptParams = ['query', 'multi', 'joins']; const CountAcceptParams = ['query', 'joins']; const AggregateAcceptParams = ['stages']; const CreateIndexParams = ['data']; const DropIndexParams = ['data']; const DropIndexesParams = ['data']; const ListIndexesParams = ['data']; const ReadAction = { type: ActionType.READ, fields: ReadAcceptParams }; const UpdateAction = { type: ActionType.UPDATE, fields: UpdateAcceptParams, }; const RemoveAction = { type: ActionType.REMOVE, fields: RemoveAcceptParams, }; const AddAction = { type: ActionType.ADD, fields: AddAcceptParams }; const CountAction = { type: ActionType.COUNT, fields: CountAcceptParams, }; const WatchAction = { type: ActionType.WATCH, fields: ReadAcceptParams }; const AggregateAction = { type: ActionType.AGGREGATE, fields: AggregateAcceptParams, }; const CreateIndexAction = { type: ActionType.CREATE_INDEX, fields: CreateIndexParams, }; const DropIndexAction = { type: ActionType.DROP_INDEX, fields: DropIndexParams, }; const DropIndexesAction = { type: ActionType.DROP_INDEXES, fields: DropIndexesParams, }; const ListIndexesAction = { type: ActionType.LIST_INDEXES, fields: ListIndexesParams, }; function getAction(actionName) { let action; switch (actionName) { case ActionType.READ: action = ReadAction; break; case ActionType.UPDATE: action = UpdateAction; break; case ActionType.ADD: action = AddAction; break; case ActionType.REMOVE: action = RemoveAction; break; case ActionType.COUNT: action = CountAction; break; case ActionType.WATCH: action = WatchAction; break; case ActionType.AGGREGATE: action = AggregateAction; break; case ActionType.CREATE_INDEX: action = CreateIndexAction; break; case ActionType.DROP_INDEX: action = DropIndexAction; break; case ActionType.DROP_INDEXES: action = DropIndexesAction; break; case ActionType.LIST_INDEXES: action = ListIndexesAction; break; default: action = null; } return action; } exports.getAction = getAction; exports.UPDATE_COMMANDS = { SET: '$set', REMOVE: '$unset', INC: '$inc', MUL: '$mul', PUSH: '$push', PULL: '$pull', PULL_ALL: '$pullAll', POP: '$pop', SHIFT: '$shift', UNSHIFT: '$unshift', BIT: '$bit', ADD_TO_SET: '$addToSet', RENAME: '$rename', MAX: '$max', MIN: '$min', }; exports.LOGIC_COMMANDS = { AND: '$and', OR: '$or', NOT: '$not', NOR: '$nor', }; exports.QUERY_COMMANDS = { EQ: '$eq', NEQ: '$ne', GT: '$gt', GTE: '$gte', LT: '$lt', LTE: '$lte', IN: '$in', NIN: '$nin', ALL: '$all', EXISTS: '$exists', SIZE: '$size', MOD: '$mod', ELE_MATCH: '$elemMatch', GEO_NEAR: '$geoNear', GEO_WITHIN: '$geoWithin', GEO_INTERSECTS: '$geoIntersects', LIKE: '$like', // only for SQL query EXPR: '$expr', TEXT: '$text', SEARCH: '$search', };