@common-stack/store-mongo 0.5.12 → 0.5.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -217,6 +217,7 @@ var IBaseServiceCommands;
217
217
  IBaseServiceCommands["BulkCreate"] = "bulkCreate";
218
218
  IBaseServiceCommands["Update"] = "update";
219
219
  IBaseServiceCommands["Delete"] = "delete";
220
+ IBaseServiceCommands["DeleteMany"] = "deleteMany";
220
221
  IBaseServiceCommands["GetAllWithCount"] = "getAllWithCount";
221
222
  })(IBaseServiceCommands = exports.IBaseServiceCommands || (exports.IBaseServiceCommands = {}));
222
223
  var ICacheControlScope;
@@ -303,8 +304,16 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
303
304
 
304
305
  Object.defineProperty(exports, "__esModule", ({ value: true }));
305
306
  exports.BaseServiceMixin = void 0;
307
+ const lodash_1 = __webpack_require__(/*! lodash */ "lodash");
306
308
  const interfaces_1 = __webpack_require__(/*! ../interfaces */ "./src/interfaces/index.ts");
307
- const BaseServiceMixin = (service) => ({
309
+ const defaultEvents = [
310
+ interfaces_1.IBaseServiceCommands.Create,
311
+ interfaces_1.IBaseServiceCommands.BulkCreate,
312
+ interfaces_1.IBaseServiceCommands.Update,
313
+ interfaces_1.IBaseServiceCommands.Delete,
314
+ interfaces_1.IBaseServiceCommands.DeleteMany
315
+ ];
316
+ const BaseServiceMixin = (service, broker, name, events = defaultEvents) => ({
308
317
  name: 'BaseServiceMixin',
309
318
  actions: {
310
319
  [interfaces_1.IBaseServiceCommands.Get]: {
@@ -323,19 +332,38 @@ const BaseServiceMixin = (service) => ({
323
332
  params: {
324
333
  data: { type: 'array', items: 'object' },
325
334
  },
326
- handler: async (ctx) => service.bulkCreate(ctx.params.data),
335
+ handler: async (ctx) => {
336
+ const response = await service.bulkCreate(ctx.params.data);
337
+ if (events.includes(interfaces_1.IBaseServiceCommands.BulkCreate)) {
338
+ await (broker === null || broker === void 0 ? void 0 : broker.emit(`${name}.on${(0, lodash_1.upperFirst)(interfaces_1.IBaseServiceCommands.BulkCreate)}`, response));
339
+ }
340
+ return response;
341
+ },
327
342
  },
328
343
  [interfaces_1.IBaseServiceCommands.Create]: {
329
344
  params: {
330
345
  data: 'object',
331
346
  },
332
- handler: async (ctx) => service.create(ctx.params.data),
347
+ handler: async (ctx) => {
348
+ const response = await service.create(ctx.params.data);
349
+ if (events.includes(interfaces_1.IBaseServiceCommands.Create)) {
350
+ await (broker === null || broker === void 0 ? void 0 : broker.emit(`${name}.on${(0, lodash_1.upperFirst)(interfaces_1.IBaseServiceCommands.Create)}`, response));
351
+ }
352
+ return response;
353
+ },
333
354
  },
334
355
  [interfaces_1.IBaseServiceCommands.Delete]: {
335
356
  params: {
336
357
  id: 'string',
337
358
  },
338
- handler: async (ctx) => service.delete(ctx.params.id),
359
+ handler: async (ctx) => {
360
+ const { id } = ctx.params;
361
+ const response = await service.delete(id);
362
+ if (events.includes(interfaces_1.IBaseServiceCommands.Delete)) {
363
+ await (broker === null || broker === void 0 ? void 0 : broker.emit(`${name}.on${(0, lodash_1.upperFirst)(interfaces_1.IBaseServiceCommands.Delete)}`, { id }));
364
+ }
365
+ return response;
366
+ }
339
367
  },
340
368
  [interfaces_1.IBaseServiceCommands.GetAll]: {
341
369
  params: {
@@ -362,7 +390,15 @@ const BaseServiceMixin = (service) => ({
362
390
  data: 'object',
363
391
  overwrite: 'boolean|optional',
364
392
  },
365
- handler: async (ctx) => service.insert(ctx.params.data, ctx.params.overwrite),
393
+ handler: async (ctx) => {
394
+ const { data } = ctx.params;
395
+ const response = await service.insert(data, ctx.params.overwrite);
396
+ const action = (data === null || data === void 0 ? void 0 : data.id) ? interfaces_1.IBaseServiceCommands.Update : interfaces_1.IBaseServiceCommands.Create;
397
+ if (events.includes(action)) {
398
+ await (broker === null || broker === void 0 ? void 0 : broker.emit(`${name}.on${(0, lodash_1.upperFirst)(action)}`, response));
399
+ }
400
+ return response;
401
+ },
366
402
  },
367
403
  [interfaces_1.IBaseServiceCommands.Update]: {
368
404
  params: {
@@ -370,7 +406,26 @@ const BaseServiceMixin = (service) => ({
370
406
  data: 'object',
371
407
  overwrite: 'boolean|optional',
372
408
  },
373
- handler: async (ctx) => service.update(ctx.params.id, ctx.params.data, ctx.params.overwrite),
409
+ handler: async (ctx) => {
410
+ const response = await service.update(ctx.params.id, ctx.params.data, ctx.params.overwrite);
411
+ if (events.includes(interfaces_1.IBaseServiceCommands.Update)) {
412
+ await (broker === null || broker === void 0 ? void 0 : broker.emit(`${name}.on${(0, lodash_1.upperFirst)(interfaces_1.IBaseServiceCommands.Update)}`, response));
413
+ }
414
+ return response;
415
+ }
416
+ },
417
+ [interfaces_1.IBaseServiceCommands.DeleteMany]: {
418
+ params: {
419
+ criteria: 'object',
420
+ },
421
+ handler: async (ctx) => {
422
+ const { criteria } = ctx.params;
423
+ const response = await service.delete(criteria);
424
+ if (events.includes(interfaces_1.IBaseServiceCommands.DeleteMany)) {
425
+ await (broker === null || broker === void 0 ? void 0 : broker.emit(`${name}.on${(0, lodash_1.upperFirst)(interfaces_1.IBaseServiceCommands.DeleteMany)}`, criteria));
426
+ }
427
+ return response;
428
+ },
374
429
  },
375
430
  },
376
431
  });
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","mappings":"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","sources":["webpack://@common-stack/store-mongo/./src/dataloaders/bulk-dataloader.ts","webpack://@common-stack/store-mongo/./src/dataloaders/index.ts","webpack://@common-stack/store-mongo/./src/helpers/index.ts","webpack://@common-stack/store-mongo/./src/helpers/mongoose-connection.ts","webpack://@common-stack/store-mongo/./src/index.ts","webpack://@common-stack/store-mongo/./src/interfaces/base-repository.ts","webpack://@common-stack/store-mongo/./src/interfaces/base-service.ts","webpack://@common-stack/store-mongo/./src/interfaces/dataloaders.ts","webpack://@common-stack/store-mongo/./src/interfaces/generated-models.ts","webpack://@common-stack/store-mongo/./src/interfaces/get-all-args.ts","webpack://@common-stack/store-mongo/./src/interfaces/index.ts","webpack://@common-stack/store-mongo/./src/interfaces/mongoose-settings.ts","webpack://@common-stack/store-mongo/./src/mixins/base-service-mixin.ts","webpack://@common-stack/store-mongo/./src/mixins/index.ts","webpack://@common-stack/store-mongo/./src/services/base-proxy-service.ts","webpack://@common-stack/store-mongo/./src/services/base-service.ts","webpack://@common-stack/store-mongo/./src/services/index.ts","webpack://@common-stack/store-mongo/./src/store/index.ts","webpack://@common-stack/store-mongo/./src/store/models/common-options.ts","webpack://@common-stack/store-mongo/./src/store/models/index.ts","webpack://@common-stack/store-mongo/./src/store/repositories/base-repository.ts","webpack://@common-stack/store-mongo/./src/store/repositories/index.ts","webpack://@common-stack/store-mongo/external commonjs \"@common-stack/core\"","webpack://@common-stack/store-mongo/external commonjs \"dataloader\"","webpack://@common-stack/store-mongo/external commonjs \"inversify\"","webpack://@common-stack/store-mongo/external commonjs \"lodash\"","webpack://@common-stack/store-mongo/external commonjs \"mongoose\"","webpack://@common-stack/store-mongo/webpack/bootstrap","webpack://@common-stack/store-mongo/webpack/before-startup","webpack://@common-stack/store-mongo/webpack/startup","webpack://@common-stack/store-mongo/webpack/after-startup"],"sourcesContent":["import * as DataLoader from 'dataloader';\nimport { injectable, unmanaged } from 'inversify';\nimport { IBaseService } from '../interfaces';\n\n@injectable()\nexport class BulkDataLoader<T extends { id: string }> extends DataLoader<string, T> {\n constructor(\n @unmanaged()\n service: IBaseService<T>,\n ) {\n super(async (ids: string[]) => {\n const data = await service.getByIds(ids);\n return ids.map((id) => data.find((record) => record.id === id));\n });\n }\n}\n","export * from './bulk-dataloader';\n","export * from './mongoose-connection';\n","import * as mongoose from 'mongoose';\n\nconst generateMongo: (monoUrl) => mongoose.Connection = (mongoUrl) => {\n\n // creates default connection\n mongoose.connect(mongoUrl, {\n }).then(() => {\n console.info('mogoose connect - success');\n // console.info(`uri - ${uri}`);\n // console.info(`connectionOptions - ${connectionOptions}`);\n }).catch((err: mongoose.Error) => {\n console.error('mogoose connect - error - ', err);\n // throw err;\n process.kill(process.pid);\n });\n // to access default connection\n const mongooseConnection: mongoose.Connection = mongoose.connection;\n\n return mongooseConnection;\n};\n\n\n\nexport { generateMongo };\n","export * from './interfaces';\nexport * from './helpers';\nexport * from './services';\nexport * from './store';\nexport * from './dataloaders';\nexport * from './mixins';\n","import { Document, FilterQuery, Model, UpdateQuery } from 'mongoose';\nimport { GetAllArgs } from './get-all-args';\n\nexport enum PAGINATION_OPTIONS {\n limit = 10,\n skip = 0,\n}\n\nexport interface IBaseRepository<T, D = Document<T>> {\n model: Model<D>;\n count(conditions?: FilterQuery<D>): Promise<number>;\n getAll(options: GetAllArgs<D>): Promise<T[]>;\n get(conditions?: FilterQuery<D>, selectedFields?: string): Promise<T>;\n create<I>(data: I): Promise<T>;\n upsert<I>(conditions: FilterQuery<D>, update: I, options): Promise<T>;\n update<I>(criteria: FilterQuery<D>, update: UpdateQuery<D>, options?): Promise<T>;\n bulkUpdate<I>(criteria: FilterQuery<D>, update: UpdateQuery<D>, options?): Promise<T[]>;\n delete(criteria: FilterQuery<D>): Promise<boolean>;\n bulkGet(ids: string[], selectedFields?: string): Promise<T[]>;\n bulkCreate<I>(data: I[]): Promise<T[]>;\n bulkDelete(criteria: FilterQuery<D>): Promise<number>;\n}\n","import { FilterQuery, Document } from 'mongoose';\nimport { GetAllArgs } from './get-all-args';\n\nexport interface IBaseService<T, C = Omit<T, 'id'>, U = C> {\n count(conditions?: FilterQuery<Document<T>>): Promise<number>;\n\n get(id: string): Promise<T>;\n\n get(conditions?: string | FilterQuery<Document<T>>): Promise<T>;\n\n getAll(options?: GetAllArgs<Document<T>>): Promise<T[]>;\n\n getByIds(ids: string[]): Promise<T[]>;\n\n create(data: C): Promise<T>;\n\n insert(data: (C | U) & { id?: string }, overwrite?: boolean): Promise<T>;\n\n bulkCreate(data: C[]): Promise<T[]>;\n\n update(id: string, data: U, overwrite?: boolean): Promise<T>;\n\n delete(id: string): Promise<boolean>;\n\n delete(conditions: string | FilterQuery<Document<T>>): Promise<boolean>;\n\n getAllWithCount(options: GetAllArgs<Document<T>>): Promise<{ data: T[]; totalCount: number }>;\n}\n","import * as DataLoader from 'dataloader';\n\nexport type IDataLoader<T> = DataLoader<string, T>;\n","/* tslint:disable */\nexport type Maybe<T> = T | null;\nexport type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };\nexport type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: string;\n String: string;\n Boolean: boolean;\n Int: number;\n Float: number;\n AnyObject: any;\n Date: any;\n DateTime: any;\n JSON: any;\n JSONObject: any;\n Observable: any;\n Time: any;\n Timestamp: any;\n URI: any;\n URIInput: any;\n};\n\n\nexport type IAdminIdeSettings = {\n __typename?: 'AdminIdeSettings';\n dummy?: Maybe<Scalars['Int']>;\n};\n\n\nexport enum IBaseServiceCommands {\n Count = 'count',\n Get = 'get',\n GetAll = 'getAll',\n GetByIds = 'getByIds',\n Create = 'create',\n Insert = 'insert',\n BulkCreate = 'bulkCreate',\n Update = 'update',\n Delete = 'delete',\n GetAllWithCount = 'getAllWithCount'\n}\n\nexport enum ICacheControlScope {\n Public = 'PUBLIC',\n Private = 'PRIVATE'\n}\n\n\n\n/** Represents a null return value. */\nexport type IEmptyResponse = {\n __typename?: 'EmptyResponse';\n alwaysNil?: Maybe<Scalars['String']>;\n};\n\nexport type IFieldError = {\n __typename?: 'FieldError';\n field: Scalars['String'];\n message: Scalars['String'];\n};\n\n\n\n/** All Moleculer Topic names are extended from this. */\nexport enum IMoleculerServiceName {\n Dummy = 'dummy'\n}\n\nexport type IMutation = {\n __typename?: 'Mutation';\n dummy?: Maybe<Scalars['Int']>;\n};\n\n/** An object with an ID. */\nexport type INode = {\n /** The ID of the node. */\n id: Scalars['ID'];\n};\n\n\nexport type IPageInfo = {\n __typename?: 'PageInfo';\n hasNextPage: Scalars['Boolean'];\n};\n\nexport type IQuery = {\n __typename?: 'Query';\n /** Looks up a node by ID. */\n node?: Maybe<INode>;\n};\n\n\nexport type IQueryNodeArgs = {\n id: Scalars['ID'];\n};\n\nexport type ISort = {\n key: Scalars['String'];\n value: ISortEnum;\n};\n\nexport enum ISortEnum {\n Asc = 'ASC',\n Desc = 'DESC'\n}\n\nexport type ISubscription = {\n __typename?: 'Subscription';\n dummy?: Maybe<Scalars['Int']>;\n};\n\n\n\n\n","import { FilterQuery } from 'mongoose';\nimport { ISortEnum, ISort } from './generated-models';\n\nexport interface GetAllArgs<T> {\n criteria?: FilterQuery<T>;\n sort?: ISort;\n skip?: number;\n limit?: number;\n selectedFields?: string;\n}\n","export * from './mongoose-settings';\nexport * from './get-all-args';\nexport * from './base-repository';\nexport * from './base-service';\nexport * from './dataloaders';\nexport * from './generated-models';\n","import * as mongoose from 'mongoose';\n\nexport interface IMongoDBSettings {\n mongoConnection: mongoose.Connection;\n}\nexport interface IMongoOptions {\n collectionName?: string;\n sessionCollectionName?: string;\n timestamps?: {\n createdAt: string;\n updatedAt: string;\n };\n convertUserIdToMongoObjectId?: boolean;\n convertSessionIdToMongoObjectId?: boolean;\n caseSensitiveUserName?: boolean;\n idProvider?: (() => string | Object);\n dateProvider?: (date?: Date) => any;\n}\n","import { Context, ServiceSchema } from 'moleculer';\nimport { Document, FilterQuery } from 'mongoose';\nimport { IBaseServiceCommands, GetAllArgs, IBaseService } from '../interfaces';\n\nexport const BaseServiceMixin = <T, C, U>(service: IBaseService<T, C, U>): Partial<ServiceSchema> => ({\n name: 'BaseServiceMixin',\n actions: {\n [IBaseServiceCommands.Get]: {\n params: {\n id: 'string',\n },\n handler: async (ctx: Context<{ id: string }>) => service.get(ctx.params.id),\n },\n [IBaseServiceCommands.Count]: {\n params: {\n criteria: { type: 'object', optional: true },\n },\n handler: async (ctx: Context<{ criteria?: FilterQuery<Document<T>> }>) =>\n service.count(ctx.params.criteria),\n },\n [IBaseServiceCommands.BulkCreate]: {\n params: {\n data: { type: 'array', items: 'object' },\n },\n handler: async (ctx: Context<{ data: never[] }>) => service.bulkCreate(ctx.params.data),\n },\n [IBaseServiceCommands.Create]: {\n params: {\n data: 'object',\n },\n handler: async (ctx: Context<{ data: never }>) => service.create(ctx.params.data),\n },\n [IBaseServiceCommands.Delete]: {\n params: {\n id: 'string',\n },\n handler: async (ctx: Context<{ id: string | FilterQuery<Document<T>> }>) =>\n service.delete(ctx.params.id as never),\n },\n [IBaseServiceCommands.GetAll]: {\n params: {\n criteria: 'object|optional',\n sort: 'object|optional',\n skip: 'number|optional',\n limit: 'number|optional',\n selectedFields: 'string|optional',\n },\n handler: async (ctx: Context<GetAllArgs<Document<T>>>) => service.getAll(ctx.params),\n },\n [IBaseServiceCommands.GetAllWithCount]: {\n params: {\n criteria: 'object|optional',\n sort: 'object|optional',\n skip: 'number|optional',\n limit: 'number|optional',\n selectedFields: 'string|optional',\n },\n handler: async (ctx: Context<GetAllArgs<Document<T>>>) => service.getAllWithCount(ctx.params),\n },\n [IBaseServiceCommands.Insert]: {\n params: {\n data: 'object',\n overwrite: 'boolean|optional',\n },\n handler: async (ctx: Context<{ data: never & { id?: string }; overwrite: boolean }>) =>\n service.insert(ctx.params.data, ctx.params.overwrite),\n },\n [IBaseServiceCommands.Update]: {\n params: {\n id: 'string',\n data: 'object',\n overwrite: 'boolean|optional',\n },\n handler: async (ctx: Context<{ id: string; data: never; overwrite: boolean }>) =>\n service.update(ctx.params.id, ctx.params.data, ctx.params.overwrite),\n },\n },\n});\n","export { BaseServiceMixin } from './base-service-mixin';\n","import { inject, injectable, optional } from 'inversify';\nimport { ServiceBroker } from 'moleculer';\nimport { FilterQuery } from 'mongoose';\nimport { CdmLogger } from '@cdm-logger/core';\nimport { CommonType } from '@common-stack/core';\nimport { IBaseServiceCommands, GetAllArgs, IBaseService } from '../interfaces';\n\ntype MethodsNames<T, C, U> = keyof IBaseService<T, C, U>;\ntype MethodResponse<T, C, U, M extends MethodsNames<T, C, U>> = ReturnType<IBaseService<T, C, U>[M]>;\n\n@injectable()\nexport abstract class BaseProxyService<T, C = T, U = T> implements IBaseService<T, C, U> {\n protected abstract logger?: CdmLogger.ILogger;\n\n protected abstract topic;\n\n constructor(\n @inject(CommonType.MOLECULER_BROKER)\n private readonly broker: ServiceBroker,\n @inject(CommonType.LOGGER)\n @optional()\n logger: CdmLogger.ILogger,\n ) {\n }\n\n bulkCreate(data: C[]): MethodResponse<T, C, U, 'bulkCreate'> {\n return this.callAction<T[], { data: C[] }>(IBaseServiceCommands.BulkCreate, { data });\n }\n\n count(criteria?: FilterQuery<Document>): MethodResponse<T, C, U, 'count'> {\n return this.callAction(IBaseServiceCommands.Count, { criteria });\n }\n\n create(data: C): MethodResponse<T, C, U, 'create'> {\n return this.callAction(IBaseServiceCommands.Create, { data });\n }\n\n delete(id: string | FilterQuery<Document>): MethodResponse<T, C, U, 'delete'> {\n return this.callAction(IBaseServiceCommands.Delete, { id });\n }\n\n get(id?: string | FilterQuery<Document>): MethodResponse<T, C, U, 'get'> {\n return this.callAction(IBaseServiceCommands.Get, { id });\n }\n\n getAll(options?: GetAllArgs<Document>): MethodResponse<T, C, U, 'getAll'> {\n return this.callAction(IBaseServiceCommands.GetAll, options);\n }\n\n getByIds(ids: string[]): Promise<T[]> {\n return this.callAction(IBaseServiceCommands.GetByIds, { ids });\n }\n\n getAllWithCount(options: GetAllArgs<Document>): MethodResponse<T, C, U, 'getAllWithCount'> {\n return this.callAction(IBaseServiceCommands.GetAllWithCount, options);\n }\n\n insert(data: C | U, overwrite?: boolean): MethodResponse<T, C, U, 'insert'> {\n return this.callAction(IBaseServiceCommands.Insert, { data, overwrite });\n }\n\n update(id: string, data: U, overwrite?: boolean): MethodResponse<T, C, U, 'update'> {\n return this.callAction<T>(IBaseServiceCommands.Update, { id, data, overwrite });\n }\n\n protected async callAction<T, P = unknown>(command: string, params?: P): Promise<T> {\n return this.broker.call<T, P>(`${this.topic}.${command}`, params);\n }\n}\n","import { Document, FilterQuery } from 'mongoose';\nimport { injectable } from 'inversify';\nimport { GetAllArgs, IBaseRepository, IBaseService } from '../interfaces';\n\n@injectable()\nexport class BaseService<T, C = Omit<T, 'id'>, U = C> implements IBaseService<T, C, U> {\n constructor(protected repository: IBaseRepository<T>) {\n this.repository = repository;\n }\n\n async getAllWithCount(options: GetAllArgs<Document<T>>): Promise<{ data: T[]; totalCount: number }> {\n const totalCount = await this.count(options.criteria);\n const data = await this.getAll(options);\n return {\n totalCount,\n data,\n };\n }\n\n count(conditions?: FilterQuery<Document<T>>): Promise<number> {\n return this.repository.count(conditions);\n }\n\n get(conditions: string | FilterQuery<Document<T>>): Promise<T> {\n if (typeof conditions === 'string') {\n return this.repository.get({ id: conditions });\n }\n return this.repository.get(conditions);\n }\n\n getName(name: string): Promise<T> {\n return this.repository.get({ name });\n }\n\n getAll(options: GetAllArgs<Document<T>>): Promise<T[]> {\n return this.repository.getAll(options);\n }\n\n getByIds(ids: string[]): Promise<T[]> {\n return this.repository.bulkGet(ids);\n }\n\n create(data: C): Promise<T> {\n return this.repository.create<C>(data);\n }\n\n bulkCreate(data: C[]): Promise<T[]> {\n return this.repository.bulkCreate<C>(data);\n }\n\n async update(id: string, data: Partial<U>, overwrite = false): Promise<T> {\n return this.repository.update<U>({ id }, data, { overwrite });\n }\n\n insert(data: (C | U) & { id?: string }, overwrite = true): Promise<T> {\n const { id, ...rest } = data;\n if (id) {\n const existing = this.repository.get({ id });\n if (existing) {\n return this.update(id, rest as U, overwrite);\n }\n }\n return this.create(rest as C);\n }\n\n delete(id: string | FilterQuery<Document<T>>): Promise<boolean> {\n if (typeof id === 'string') {\n return this.repository.delete({ id });\n }\n return this.repository.delete(id);\n }\n}\n","export * from './base-service';\nexport * from './base-proxy-service';\n","export * from './models';\nexport * from './repositories';\n","import { Schema } from 'mongoose';\n\nexport const commonModeSchemaOptions = {\n timestamps: true,\n toJSON: {\n virtuals: true,\n },\n toObject: {\n virtuals: true,\n getters: true,\n transform(doc, ret) {\n delete ret.__v;\n delete ret._id;\n },\n },\n};\n\nexport const addIdVirtualFields = (schema: Schema) => {\n schema.set('toJSON', {\n virtuals: true,\n });\n return schema;\n};\n","export * from './common-options';\n","import { isObject } from 'lodash';\nimport { logger as Logger } from '@cdm-logger/server';\nimport { Connection, Document, FilterQuery, Model, PipelineStage, UpdateQuery } from 'mongoose';\nimport { injectable, unmanaged } from 'inversify';\nimport { GetAllArgs, IBaseRepository, IMongoOptions, PAGINATION_OPTIONS, } from '../../interfaces';\n\n@injectable()\nexport class BaseRepository<T, D = Document<T>> implements IBaseRepository<T, D> {\n private options: IMongoOptions;\n\n protected logger: typeof Logger;\n\n model: Model<D>;\n\n constructor(\n @unmanaged()\n private modelFunc: (db: Connection) => Model<D>,\n @unmanaged()\n db: Connection,\n @unmanaged()\n logger: typeof Logger,\n @unmanaged()\n options?: IMongoOptions,\n ) {\n this.model = modelFunc(db);\n this.options = options;\n this.logger = logger.child({ className: BaseRepository.name });\n }\n\n\n private computeSort(sort: GetAllArgs<D>['sort']): Record<string, 1 | -1> | null {\n if (isObject(sort)) {\n return { [sort?.key]: sort.value.toLowerCase() === 'asc' ? 1 : -1 }\n }\n return null;\n }\n\n public async getAll(options: GetAllArgs<D>, withCount = false): Promise<T[]> {\n try {\n const { criteria, selectedFields, sort, limit, skip } = options;\n // map id to mongoose _id\n const { id, ...rest } = criteria || { id: undefined };\n const pipeline: PipelineStage[] = [\n { $match: Object.assign({}, rest, id ? { _id: id } : {}) },\n ...(sort ? [{ $sort: this.computeSort(sort) }] : []),\n { $skip: skip || PAGINATION_OPTIONS.skip },\n { $limit: limit || PAGINATION_OPTIONS.limit },\n ];\n const data = await this.model.aggregate(pipeline);\n return data.map((i) => ({ id: i._id, ...i })) as T[];\n } catch (e) {\n this.logger.error(`Unable to retrieve Model with criteria ${JSON.stringify(options)}`);\n throw e;\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n private mapConditions(conditions: FilterQuery<D>): FilterQuery<D> {\n const { id: _id, ...remaining } = conditions;\n return {\n ...(_id ? { _id } : {}),\n ...remaining,\n };\n }\n\n public async count(conditions?: FilterQuery<D>): Promise<number> {\n return this.model.count(conditions).exec();\n }\n\n public async get(conditions?: FilterQuery<D>, selectedFields?: string): Promise<T> {\n try {\n const response = await this.model.findOne(this.mapConditions(conditions), selectedFields).exec();\n return response?.toObject() as T;\n } catch (e) {\n this.logger.error(`Unable to retrieve Model with criteria ${JSON.stringify(conditions)}`);\n throw e;\n }\n }\n\n public async bulkGet(ids: string[]): Promise<T[]> {\n try {\n const results = await this.model.find().setOptions({ batchSize: 100 }).where('_id').in(ids).exec();\n return results.map((i) => i.toObject()) as T[];\n } catch (e) {\n this.logger.error(`Unable to retrieve Model with criteria ${JSON.stringify(ids)}`);\n throw e;\n }\n }\n\n public async find(conditions: Partial<FilterQuery<D>>, selectedFields?: string): Promise<T> {\n try {\n const response = await this.model.findOne(conditions, selectedFields).exec();\n return response?.toObject() as T;\n } catch (e) {\n this.logger.error(`Unable to retrieve Model with criteria ${JSON.stringify(conditions)}`);\n throw e;\n }\n }\n\n public async create<I>(data: I): Promise<T> {\n try {\n const response = await this.model.create(data);\n return response.toObject() as T;\n } catch (e) {\n this.logger.error(`Unable to create Model with data ${JSON.stringify(data)} due to ${e?.message}`);\n throw e;\n }\n }\n\n public async bulkCreate<I>(data: I[]): Promise<T[]> {\n try {\n const response = await this.model.insertMany(data, {\n lean: true,\n ordered: true,\n });\n return response as unknown as T[];\n } catch (e) {\n this.logger.error(`Unable to bulk create due to error`, e.message);\n }\n }\n\n public async upsert<I>(conditions: FilterQuery<D>, update: I, options?: Record<string, unknown>): Promise<T> {\n return this.update<I>(conditions, update, {\n upsert: true,\n ...options,\n });\n }\n\n public async bulkUpdate<I>(\n criteria: FilterQuery<D>,\n update: UpdateQuery<D>,\n options: Record<string, unknown>,\n ): Promise<T[]> {\n try {\n const { id, ...rest } = criteria;\n const processedCriteria = id ? { _id: id, ...rest } : criteria;\n const res = await this.model.updateMany(processedCriteria, update);\n if (res) {\n const response = await this.model\n .find(processedCriteria)\n .exec();\n return response.map((i) => i?.toObject()) as T[];\n } else {\n this.logger.error(\n `Unable to Bulk Update with criteria ${JSON.stringify(criteria)} and data ${JSON.stringify(update)}`,\n );\n throw new Error('Unable to do bulk update');\n }\n\n } catch (e) {\n this.logger.error(\n `Unable to Bulk Update with criteria ${JSON.stringify(criteria)} and data ${JSON.stringify(update)}`,\n );\n throw e;\n }\n }\n\n public async update<I>(\n criteria: FilterQuery<D>,\n update: UpdateQuery<D>,\n options: Record<string, unknown>,\n ): Promise<T> {\n try {\n const { id, ...rest } = criteria;\n const processedCriteria = id ? { _id: id, ...rest } : criteria;\n const mergedOptions = {\n new: true,\n useFindAndModify: false,\n ...options,\n };\n if (id) {\n return (await this.model\n .findByIdAndUpdate(id, update as unknown as never, mergedOptions)\n .exec()) as unknown as Promise<T>;\n }\n return (await this.model\n .findOneAndUpdate(processedCriteria, update as unknown as never, mergedOptions)\n .exec()) as unknown as Promise<T>;\n } catch (e) {\n this.logger.error(\n `Unable to Update with criteria ${JSON.stringify(criteria)} and data ${JSON.stringify(update)}`,\n );\n throw e;\n }\n }\n\n public async delete(criteria: FilterQuery<D>): Promise<boolean> {\n try {\n let deleted;\n if (criteria?.id) {\n deleted = await this.model.findByIdAndDelete(criteria.id);\n } else {\n deleted = await this.model.findOneAndDelete(this.mapConditions(criteria));\n }\n return !!deleted;\n } catch (e) {\n this.logger.error(`Unable to delete the model with criteria`, criteria);\n throw e;\n }\n }\n\n public async bulkDelete(criteria: FilterQuery<D>): Promise<number> {\n try {\n const deleted = await this.model.deleteMany(this.mapConditions(criteria));\n return deleted?.deletedCount || 0;\n } catch (e) {\n this.logger.error(`Unable to delete the model with criteria`, criteria);\n throw e;\n }\n }\n\n}\n","export * from './base-repository';\n","module.exports = require(\"@common-stack/core\");","module.exports = require(\"dataloader\");","module.exports = require(\"inversify\");","module.exports = require(\"lodash\");","module.exports = require(\"mongoose\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/index.ts\");\n",""],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"index.js","mappings":"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","sources":["webpack://@common-stack/store-mongo/./src/dataloaders/bulk-dataloader.ts","webpack://@common-stack/store-mongo/./src/dataloaders/index.ts","webpack://@common-stack/store-mongo/./src/helpers/index.ts","webpack://@common-stack/store-mongo/./src/helpers/mongoose-connection.ts","webpack://@common-stack/store-mongo/./src/index.ts","webpack://@common-stack/store-mongo/./src/interfaces/base-repository.ts","webpack://@common-stack/store-mongo/./src/interfaces/base-service.ts","webpack://@common-stack/store-mongo/./src/interfaces/dataloaders.ts","webpack://@common-stack/store-mongo/./src/interfaces/generated-models.ts","webpack://@common-stack/store-mongo/./src/interfaces/get-all-args.ts","webpack://@common-stack/store-mongo/./src/interfaces/index.ts","webpack://@common-stack/store-mongo/./src/interfaces/mongoose-settings.ts","webpack://@common-stack/store-mongo/./src/mixins/base-service-mixin.ts","webpack://@common-stack/store-mongo/./src/mixins/index.ts","webpack://@common-stack/store-mongo/./src/services/base-proxy-service.ts","webpack://@common-stack/store-mongo/./src/services/base-service.ts","webpack://@common-stack/store-mongo/./src/services/index.ts","webpack://@common-stack/store-mongo/./src/store/index.ts","webpack://@common-stack/store-mongo/./src/store/models/common-options.ts","webpack://@common-stack/store-mongo/./src/store/models/index.ts","webpack://@common-stack/store-mongo/./src/store/repositories/base-repository.ts","webpack://@common-stack/store-mongo/./src/store/repositories/index.ts","webpack://@common-stack/store-mongo/external commonjs \"@common-stack/core\"","webpack://@common-stack/store-mongo/external commonjs \"dataloader\"","webpack://@common-stack/store-mongo/external commonjs \"inversify\"","webpack://@common-stack/store-mongo/external commonjs \"lodash\"","webpack://@common-stack/store-mongo/external commonjs \"mongoose\"","webpack://@common-stack/store-mongo/webpack/bootstrap","webpack://@common-stack/store-mongo/webpack/before-startup","webpack://@common-stack/store-mongo/webpack/startup","webpack://@common-stack/store-mongo/webpack/after-startup"],"sourcesContent":["import * as DataLoader from 'dataloader';\nimport { injectable, unmanaged } from 'inversify';\nimport { IBaseService } from '../interfaces';\n\n@injectable()\nexport class BulkDataLoader<T extends { id: string }> extends DataLoader<string, T> {\n constructor(\n @unmanaged()\n service: IBaseService<T>,\n ) {\n super(async (ids: string[]) => {\n const data = await service.getByIds(ids);\n return ids.map((id) => data.find((record) => record.id === id));\n });\n }\n}\n","export * from './bulk-dataloader';\n","export * from './mongoose-connection';\n","import * as mongoose from 'mongoose';\n\nconst generateMongo: (monoUrl) => mongoose.Connection = (mongoUrl) => {\n\n // creates default connection\n mongoose.connect(mongoUrl, {\n }).then(() => {\n console.info('mogoose connect - success');\n // console.info(`uri - ${uri}`);\n // console.info(`connectionOptions - ${connectionOptions}`);\n }).catch((err: mongoose.Error) => {\n console.error('mogoose connect - error - ', err);\n // throw err;\n process.kill(process.pid);\n });\n // to access default connection\n const mongooseConnection: mongoose.Connection = mongoose.connection;\n\n return mongooseConnection;\n};\n\n\n\nexport { generateMongo };\n","export * from './interfaces';\nexport * from './helpers';\nexport * from './services';\nexport * from './store';\nexport * from './dataloaders';\nexport * from './mixins';\n","import { Document, FilterQuery, Model, UpdateQuery } from 'mongoose';\nimport { GetAllArgs } from './get-all-args';\n\nexport enum PAGINATION_OPTIONS {\n limit = 10,\n skip = 0,\n}\n\nexport interface IBaseRepository<T, D = Document<T>> {\n model: Model<D>;\n count(conditions?: FilterQuery<D>): Promise<number>;\n getAll(options: GetAllArgs<D>): Promise<T[]>;\n get(conditions?: FilterQuery<D>, selectedFields?: string): Promise<T>;\n create<I>(data: I): Promise<T>;\n upsert<I>(conditions: FilterQuery<D>, update: I, options): Promise<T>;\n update<I>(criteria: FilterQuery<D>, update: UpdateQuery<D>, options?): Promise<T>;\n bulkUpdate<I>(criteria: FilterQuery<D>, update: UpdateQuery<D>, options?): Promise<T[]>;\n delete(criteria: FilterQuery<D>): Promise<boolean>;\n bulkGet(ids: string[], selectedFields?: string): Promise<T[]>;\n bulkCreate<I>(data: I[]): Promise<T[]>;\n bulkDelete(criteria: FilterQuery<D>): Promise<number>;\n}\n","import { FilterQuery, Document } from 'mongoose';\nimport { GetAllArgs } from './get-all-args';\n\nexport interface IBaseService<T, C = Omit<T, 'id'>, U = C> {\n count(conditions?: FilterQuery<Document<T>>): Promise<number>;\n\n get(id: string): Promise<T>;\n\n get(conditions?: string | FilterQuery<Document<T>>): Promise<T>;\n\n getAll(options?: GetAllArgs<Document<T>>): Promise<T[]>;\n\n getByIds(ids: string[]): Promise<T[]>;\n\n create(data: C): Promise<T>;\n\n insert(data: (C | U) & { id?: string }, overwrite?: boolean): Promise<T>;\n\n bulkCreate(data: C[]): Promise<T[]>;\n\n update(id: string, data: U, overwrite?: boolean): Promise<T>;\n\n delete(id: string): Promise<boolean>;\n\n delete(conditions: string | FilterQuery<Document<T>>): Promise<boolean>;\n\n getAllWithCount(options: GetAllArgs<Document<T>>): Promise<{ data: T[]; totalCount: number }>;\n}\n","import * as DataLoader from 'dataloader';\n\nexport type IDataLoader<T> = DataLoader<string, T>;\n","/* tslint:disable */\nexport type Maybe<T> = T | null;\nexport type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };\nexport type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: string;\n String: string;\n Boolean: boolean;\n Int: number;\n Float: number;\n AnyObject: any;\n Date: any;\n DateTime: any;\n JSON: any;\n JSONObject: any;\n Observable: any;\n Time: any;\n Timestamp: any;\n URI: any;\n URIInput: any;\n};\n\n\nexport type IAdminIdeSettings = {\n __typename?: 'AdminIdeSettings';\n dummy?: Maybe<Scalars['Int']>;\n};\n\n\nexport enum IBaseServiceCommands {\n Count = 'count',\n Get = 'get',\n GetAll = 'getAll',\n GetByIds = 'getByIds',\n Create = 'create',\n Insert = 'insert',\n BulkCreate = 'bulkCreate',\n Update = 'update',\n Delete = 'delete',\n DeleteMany = 'deleteMany',\n GetAllWithCount = 'getAllWithCount'\n}\n\nexport enum ICacheControlScope {\n Public = 'PUBLIC',\n Private = 'PRIVATE'\n}\n\n\n\n/** Represents a null return value. */\nexport type IEmptyResponse = {\n __typename?: 'EmptyResponse';\n alwaysNil?: Maybe<Scalars['String']>;\n};\n\nexport type IFieldError = {\n __typename?: 'FieldError';\n field: Scalars['String'];\n message: Scalars['String'];\n};\n\n\n\n/** All Moleculer Topic names are extended from this. */\nexport enum IMoleculerServiceName {\n Dummy = 'dummy'\n}\n\nexport type IMutation = {\n __typename?: 'Mutation';\n dummy?: Maybe<Scalars['Int']>;\n};\n\n/** An object with an ID. */\nexport type INode = {\n /** The ID of the node. */\n id: Scalars['ID'];\n};\n\n\nexport type IPageInfo = {\n __typename?: 'PageInfo';\n hasNextPage: Scalars['Boolean'];\n};\n\nexport type IQuery = {\n __typename?: 'Query';\n /** Looks up a node by ID. */\n node?: Maybe<INode>;\n};\n\n\nexport type IQueryNodeArgs = {\n id: Scalars['ID'];\n};\n\nexport type ISort = {\n key: Scalars['String'];\n value: ISortEnum;\n};\n\nexport enum ISortEnum {\n Asc = 'ASC',\n Desc = 'DESC'\n}\n\nexport type ISubscription = {\n __typename?: 'Subscription';\n dummy?: Maybe<Scalars['Int']>;\n};\n\n\n\n\n","import { FilterQuery } from 'mongoose';\nimport { ISortEnum, ISort } from './generated-models';\n\nexport interface GetAllArgs<T> {\n criteria?: FilterQuery<T>;\n sort?: ISort;\n skip?: number;\n limit?: number;\n selectedFields?: string;\n}\n","export * from './mongoose-settings';\nexport * from './get-all-args';\nexport * from './base-repository';\nexport * from './base-service';\nexport * from './dataloaders';\nexport * from './generated-models';\n","import * as mongoose from 'mongoose';\n\nexport interface IMongoDBSettings {\n mongoConnection: mongoose.Connection;\n}\nexport interface IMongoOptions {\n collectionName?: string;\n sessionCollectionName?: string;\n timestamps?: {\n createdAt: string;\n updatedAt: string;\n };\n convertUserIdToMongoObjectId?: boolean;\n convertSessionIdToMongoObjectId?: boolean;\n caseSensitiveUserName?: boolean;\n idProvider?: (() => string | Object);\n dateProvider?: (date?: Date) => any;\n}\n","import { Context, ServiceBroker, ServiceSchema } from 'moleculer';\nimport { Document, FilterQuery } from 'mongoose';\nimport { upperFirst } from 'lodash';\nimport { GetAllArgs, IBaseService, IBaseServiceCommands } from '../interfaces';\n\n\nconst defaultEvents = [\n IBaseServiceCommands.Create,\n IBaseServiceCommands.BulkCreate,\n IBaseServiceCommands.Update,\n IBaseServiceCommands.Delete,\n IBaseServiceCommands.DeleteMany\n];\n\nexport const BaseServiceMixin = <T, C, U>(\n service: IBaseService<T, C, U>,\n broker?: ServiceBroker,\n name?: string,\n events = defaultEvents,\n): Partial<ServiceSchema> => ({\n name: 'BaseServiceMixin',\n actions: {\n [IBaseServiceCommands.Get]: {\n params: {\n id: 'string',\n },\n handler: async (ctx: Context<{ id: string }>) => service.get(ctx.params.id),\n },\n [IBaseServiceCommands.Count]: {\n params: {\n criteria: { type: 'object', optional: true },\n },\n handler: async (ctx: Context<{ criteria?: FilterQuery<Document<T>> }>) =>\n service.count(ctx.params.criteria),\n },\n [IBaseServiceCommands.BulkCreate]: {\n params: {\n data: { type: 'array', items: 'object' },\n },\n handler: async (ctx: Context<{ data: never[] }>) => {\n const response = await service.bulkCreate(ctx.params.data);\n if (events.includes(IBaseServiceCommands.BulkCreate)) {\n await broker?.emit(`${name}.on${upperFirst(IBaseServiceCommands.BulkCreate)}`, response);\n }\n return response;\n },\n },\n [IBaseServiceCommands.Create]: {\n params: {\n data: 'object',\n },\n handler: async (ctx: Context<{ data: never }>) => {\n const response = await service.create(ctx.params.data);\n if (events.includes(IBaseServiceCommands.Create)) {\n await broker?.emit(`${name}.on${upperFirst(IBaseServiceCommands.Create)}`, response);\n }\n return response\n },\n },\n [IBaseServiceCommands.Delete]: {\n params: {\n id: 'string',\n },\n handler: async (ctx: Context<{ id: string | FilterQuery<Document<T>> }>) => {\n const { id } = ctx.params;\n const response = await service.delete(id as never);\n if (events.includes(IBaseServiceCommands.Delete)) {\n await broker?.emit(`${name}.on${upperFirst(IBaseServiceCommands.Delete)}`, { id });\n }\n return response\n }\n },\n [IBaseServiceCommands.GetAll]: {\n params: {\n criteria: 'object|optional',\n sort: 'object|optional',\n skip: 'number|optional',\n limit: 'number|optional',\n selectedFields: 'string|optional',\n },\n handler: async (ctx: Context<GetAllArgs<Document<T>>>) => service.getAll(ctx.params),\n },\n [IBaseServiceCommands.GetAllWithCount]: {\n params: {\n criteria: 'object|optional',\n sort: 'object|optional',\n skip: 'number|optional',\n limit: 'number|optional',\n selectedFields: 'string|optional',\n },\n handler: async (ctx: Context<GetAllArgs<Document<T>>>) => service.getAllWithCount(ctx.params),\n },\n [IBaseServiceCommands.Insert]: {\n params: {\n data: 'object',\n overwrite: 'boolean|optional',\n },\n handler: async (ctx: Context<{ data: never & { id?: string }; overwrite: boolean }>) => {\n const { data } = ctx.params;\n const response = await service.insert(data, ctx.params.overwrite);\n const action = (data as { id: string })?.id ? IBaseServiceCommands.Update : IBaseServiceCommands.Create;\n if (events.includes(action)) {\n await broker?.emit(`${name}.on${upperFirst(action)}`, response);\n }\n return response;\n },\n },\n [IBaseServiceCommands.Update]: {\n params: {\n id: 'string',\n data: 'object',\n overwrite: 'boolean|optional',\n },\n handler: async (ctx: Context<{ id: string; data: never; overwrite: boolean }>) => {\n const response = await service.update(ctx.params.id, ctx.params.data, ctx.params.overwrite);\n if (events.includes(IBaseServiceCommands.Update)) {\n await broker?.emit(`${name}.on${upperFirst(IBaseServiceCommands.Update)}`, response);\n }\n return response\n }\n },\n [IBaseServiceCommands.DeleteMany]: {\n params: {\n criteria: 'object',\n },\n handler: async (ctx: Context<{ criteria }>) => {\n const { criteria } = ctx.params;\n const response = await service.delete(criteria);\n if (events.includes(IBaseServiceCommands.DeleteMany)) {\n await broker?.emit(`${name}.on${upperFirst(IBaseServiceCommands.DeleteMany)}`, criteria);\n }\n return response\n },\n },\n },\n});\n","export { BaseServiceMixin } from './base-service-mixin';\n","import { inject, injectable, optional } from 'inversify';\nimport { ServiceBroker } from 'moleculer';\nimport { FilterQuery } from 'mongoose';\nimport { CdmLogger } from '@cdm-logger/core';\nimport { CommonType } from '@common-stack/core';\nimport { IBaseServiceCommands, GetAllArgs, IBaseService } from '../interfaces';\n\ntype MethodsNames<T, C, U> = keyof IBaseService<T, C, U>;\ntype MethodResponse<T, C, U, M extends MethodsNames<T, C, U>> = ReturnType<IBaseService<T, C, U>[M]>;\n\n@injectable()\nexport abstract class BaseProxyService<T, C = T, U = T> implements IBaseService<T, C, U> {\n protected abstract logger?: CdmLogger.ILogger;\n\n protected abstract topic;\n\n constructor(\n @inject(CommonType.MOLECULER_BROKER)\n private readonly broker: ServiceBroker,\n @inject(CommonType.LOGGER)\n @optional()\n logger: CdmLogger.ILogger,\n ) {\n }\n\n bulkCreate(data: C[]): MethodResponse<T, C, U, 'bulkCreate'> {\n return this.callAction<T[], { data: C[] }>(IBaseServiceCommands.BulkCreate, { data });\n }\n\n count(criteria?: FilterQuery<Document>): MethodResponse<T, C, U, 'count'> {\n return this.callAction(IBaseServiceCommands.Count, { criteria });\n }\n\n create(data: C): MethodResponse<T, C, U, 'create'> {\n return this.callAction(IBaseServiceCommands.Create, { data });\n }\n\n delete(id: string | FilterQuery<Document>): MethodResponse<T, C, U, 'delete'> {\n return this.callAction(IBaseServiceCommands.Delete, { id });\n }\n\n get(id?: string | FilterQuery<Document>): MethodResponse<T, C, U, 'get'> {\n return this.callAction(IBaseServiceCommands.Get, { id });\n }\n\n getAll(options?: GetAllArgs<Document>): MethodResponse<T, C, U, 'getAll'> {\n return this.callAction(IBaseServiceCommands.GetAll, options);\n }\n\n getByIds(ids: string[]): Promise<T[]> {\n return this.callAction(IBaseServiceCommands.GetByIds, { ids });\n }\n\n getAllWithCount(options: GetAllArgs<Document>): MethodResponse<T, C, U, 'getAllWithCount'> {\n return this.callAction(IBaseServiceCommands.GetAllWithCount, options);\n }\n\n insert(data: C | U, overwrite?: boolean): MethodResponse<T, C, U, 'insert'> {\n return this.callAction(IBaseServiceCommands.Insert, { data, overwrite });\n }\n\n update(id: string, data: U, overwrite?: boolean): MethodResponse<T, C, U, 'update'> {\n return this.callAction<T>(IBaseServiceCommands.Update, { id, data, overwrite });\n }\n\n protected async callAction<T, P = unknown>(command: string, params?: P): Promise<T> {\n return this.broker.call<T, P>(`${this.topic}.${command}`, params);\n }\n}\n","import { Document, FilterQuery } from 'mongoose';\nimport { injectable } from 'inversify';\nimport { GetAllArgs, IBaseRepository, IBaseService } from '../interfaces';\n\n@injectable()\nexport class BaseService<T, C = Omit<T, 'id'>, U = C> implements IBaseService<T, C, U> {\n constructor(protected repository: IBaseRepository<T>) {\n this.repository = repository;\n }\n\n async getAllWithCount(options: GetAllArgs<Document<T>>): Promise<{ data: T[]; totalCount: number }> {\n const totalCount = await this.count(options.criteria);\n const data = await this.getAll(options);\n return {\n totalCount,\n data,\n };\n }\n\n count(conditions?: FilterQuery<Document<T>>): Promise<number> {\n return this.repository.count(conditions);\n }\n\n get(conditions: string | FilterQuery<Document<T>>): Promise<T> {\n if (typeof conditions === 'string') {\n return this.repository.get({ id: conditions });\n }\n return this.repository.get(conditions);\n }\n\n getName(name: string): Promise<T> {\n return this.repository.get({ name });\n }\n\n getAll(options: GetAllArgs<Document<T>>): Promise<T[]> {\n return this.repository.getAll(options);\n }\n\n getByIds(ids: string[]): Promise<T[]> {\n return this.repository.bulkGet(ids);\n }\n\n create(data: C): Promise<T> {\n return this.repository.create<C>(data);\n }\n\n bulkCreate(data: C[]): Promise<T[]> {\n return this.repository.bulkCreate<C>(data);\n }\n\n async update(id: string, data: Partial<U>, overwrite = false): Promise<T> {\n return this.repository.update<U>({ id }, data, { overwrite });\n }\n\n insert(data: (C | U) & { id?: string }, overwrite = true): Promise<T> {\n const { id, ...rest } = data;\n if (id) {\n const existing = this.repository.get({ id });\n if (existing) {\n return this.update(id, rest as U, overwrite);\n }\n }\n return this.create(rest as C);\n }\n\n delete(id: string | FilterQuery<Document<T>>): Promise<boolean> {\n if (typeof id === 'string') {\n return this.repository.delete({ id });\n }\n return this.repository.delete(id);\n }\n}\n","export * from './base-service';\nexport * from './base-proxy-service';\n","export * from './models';\nexport * from './repositories';\n","import { Schema } from 'mongoose';\n\nexport const commonModeSchemaOptions = {\n timestamps: true,\n toJSON: {\n virtuals: true,\n },\n toObject: {\n virtuals: true,\n getters: true,\n transform(doc, ret) {\n delete ret.__v;\n delete ret._id;\n },\n },\n};\n\nexport const addIdVirtualFields = (schema: Schema) => {\n schema.set('toJSON', {\n virtuals: true,\n });\n return schema;\n};\n","export * from './common-options';\n","import { isObject } from 'lodash';\nimport { logger as Logger } from '@cdm-logger/server';\nimport { Connection, Document, FilterQuery, Model, PipelineStage, UpdateQuery } from 'mongoose';\nimport { injectable, unmanaged } from 'inversify';\nimport { GetAllArgs, IBaseRepository, IMongoOptions, PAGINATION_OPTIONS, } from '../../interfaces';\n\n@injectable()\nexport class BaseRepository<T, D = Document<T>> implements IBaseRepository<T, D> {\n private options: IMongoOptions;\n\n protected logger: typeof Logger;\n\n model: Model<D>;\n\n constructor(\n @unmanaged()\n private modelFunc: (db: Connection) => Model<D>,\n @unmanaged()\n db: Connection,\n @unmanaged()\n logger: typeof Logger,\n @unmanaged()\n options?: IMongoOptions,\n ) {\n this.model = modelFunc(db);\n this.options = options;\n this.logger = logger.child({ className: BaseRepository.name });\n }\n\n\n private computeSort(sort: GetAllArgs<D>['sort']): Record<string, 1 | -1> | null {\n if (isObject(sort)) {\n return { [sort?.key]: sort.value.toLowerCase() === 'asc' ? 1 : -1 }\n }\n return null;\n }\n\n public async getAll(options: GetAllArgs<D>, withCount = false): Promise<T[]> {\n try {\n const { criteria, selectedFields, sort, limit, skip } = options;\n // map id to mongoose _id\n const { id, ...rest } = criteria || { id: undefined };\n const pipeline: PipelineStage[] = [\n { $match: Object.assign({}, rest, id ? { _id: id } : {}) },\n ...(sort ? [{ $sort: this.computeSort(sort) }] : []),\n { $skip: skip || PAGINATION_OPTIONS.skip },\n { $limit: limit || PAGINATION_OPTIONS.limit },\n ];\n const data = await this.model.aggregate(pipeline);\n return data.map((i) => ({ id: i._id, ...i })) as T[];\n } catch (e) {\n this.logger.error(`Unable to retrieve Model with criteria ${JSON.stringify(options)}`);\n throw e;\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n private mapConditions(conditions: FilterQuery<D>): FilterQuery<D> {\n const { id: _id, ...remaining } = conditions;\n return {\n ...(_id ? { _id } : {}),\n ...remaining,\n };\n }\n\n public async count(conditions?: FilterQuery<D>): Promise<number> {\n return this.model.count(conditions).exec();\n }\n\n public async get(conditions?: FilterQuery<D>, selectedFields?: string): Promise<T> {\n try {\n const response = await this.model.findOne(this.mapConditions(conditions), selectedFields).exec();\n return response?.toObject() as T;\n } catch (e) {\n this.logger.error(`Unable to retrieve Model with criteria ${JSON.stringify(conditions)}`);\n throw e;\n }\n }\n\n public async bulkGet(ids: string[]): Promise<T[]> {\n try {\n const results = await this.model.find().setOptions({ batchSize: 100 }).where('_id').in(ids).exec();\n return results.map((i) => i.toObject()) as T[];\n } catch (e) {\n this.logger.error(`Unable to retrieve Model with criteria ${JSON.stringify(ids)}`);\n throw e;\n }\n }\n\n public async find(conditions: Partial<FilterQuery<D>>, selectedFields?: string): Promise<T> {\n try {\n const response = await this.model.findOne(conditions, selectedFields).exec();\n return response?.toObject() as T;\n } catch (e) {\n this.logger.error(`Unable to retrieve Model with criteria ${JSON.stringify(conditions)}`);\n throw e;\n }\n }\n\n public async create<I>(data: I): Promise<T> {\n try {\n const response = await this.model.create(data);\n return response.toObject() as T;\n } catch (e) {\n this.logger.error(`Unable to create Model with data ${JSON.stringify(data)} due to ${e?.message}`);\n throw e;\n }\n }\n\n public async bulkCreate<I>(data: I[]): Promise<T[]> {\n try {\n const response = await this.model.insertMany(data, {\n lean: true,\n ordered: true,\n });\n return response as unknown as T[];\n } catch (e) {\n this.logger.error(`Unable to bulk create due to error`, e.message);\n }\n }\n\n public async upsert<I>(conditions: FilterQuery<D>, update: I, options?: Record<string, unknown>): Promise<T> {\n return this.update<I>(conditions, update, {\n upsert: true,\n ...options,\n });\n }\n\n public async bulkUpdate<I>(\n criteria: FilterQuery<D>,\n update: UpdateQuery<D>,\n options: Record<string, unknown>,\n ): Promise<T[]> {\n try {\n const { id, ...rest } = criteria;\n const processedCriteria = id ? { _id: id, ...rest } : criteria;\n const res = await this.model.updateMany(processedCriteria, update);\n if (res) {\n const response = await this.model\n .find(processedCriteria)\n .exec();\n return response.map((i) => i?.toObject()) as T[];\n } else {\n this.logger.error(\n `Unable to Bulk Update with criteria ${JSON.stringify(criteria)} and data ${JSON.stringify(update)}`,\n );\n throw new Error('Unable to do bulk update');\n }\n\n } catch (e) {\n this.logger.error(\n `Unable to Bulk Update with criteria ${JSON.stringify(criteria)} and data ${JSON.stringify(update)}`,\n );\n throw e;\n }\n }\n\n public async update<I>(\n criteria: FilterQuery<D>,\n update: UpdateQuery<D>,\n options: Record<string, unknown>,\n ): Promise<T> {\n try {\n const { id, ...rest } = criteria;\n const processedCriteria = id ? { _id: id, ...rest } : criteria;\n const mergedOptions = {\n new: true,\n useFindAndModify: false,\n ...options,\n };\n if (id) {\n return (await this.model\n .findByIdAndUpdate(id, update as unknown as never, mergedOptions)\n .exec()) as unknown as Promise<T>;\n }\n return (await this.model\n .findOneAndUpdate(processedCriteria, update as unknown as never, mergedOptions)\n .exec()) as unknown as Promise<T>;\n } catch (e) {\n this.logger.error(\n `Unable to Update with criteria ${JSON.stringify(criteria)} and data ${JSON.stringify(update)}`,\n );\n throw e;\n }\n }\n\n public async delete(criteria: FilterQuery<D>): Promise<boolean> {\n try {\n let deleted;\n if (criteria?.id) {\n deleted = await this.model.findByIdAndDelete(criteria.id);\n } else {\n deleted = await this.model.findOneAndDelete(this.mapConditions(criteria));\n }\n return !!deleted;\n } catch (e) {\n this.logger.error(`Unable to delete the model with criteria`, criteria);\n throw e;\n }\n }\n\n public async bulkDelete(criteria: FilterQuery<D>): Promise<number> {\n try {\n const deleted = await this.model.deleteMany(this.mapConditions(criteria));\n return deleted?.deletedCount || 0;\n } catch (e) {\n this.logger.error(`Unable to delete the model with criteria`, criteria);\n throw e;\n }\n }\n\n}\n","export * from './base-repository';\n","module.exports = require(\"@common-stack/core\");","module.exports = require(\"dataloader\");","module.exports = require(\"inversify\");","module.exports = require(\"lodash\");","module.exports = require(\"mongoose\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/index.ts\");\n",""],"names":[],"sourceRoot":""}
@@ -42,6 +42,7 @@ export declare enum IBaseServiceCommands {
42
42
  BulkCreate = "bulkCreate",
43
43
  Update = "update",
44
44
  Delete = "delete",
45
+ DeleteMany = "deleteMany",
45
46
  GetAllWithCount = "getAllWithCount"
46
47
  }
47
48
  export declare enum ICacheControlScope {
@@ -1,3 +1,3 @@
1
- import { ServiceSchema } from 'moleculer';
2
- import { IBaseService } from '../interfaces';
3
- export declare const BaseServiceMixin: <T, C, U>(service: IBaseService<T, C, U>) => Partial<ServiceSchema>;
1
+ import { ServiceBroker, ServiceSchema } from 'moleculer';
2
+ import { IBaseService, IBaseServiceCommands } from '../interfaces';
3
+ export declare const BaseServiceMixin: <T, C, U>(service: IBaseService<T, C, U>, broker?: ServiceBroker, name?: string, events?: IBaseServiceCommands[]) => Partial<ServiceSchema>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@common-stack/store-mongo",
3
- "version": "0.5.12",
3
+ "version": "0.5.13",
4
4
  "description": "Sample core for higher packages to depend on",
5
5
  "license": "ISC",
6
6
  "author": "CDMBase LLC",
@@ -31,5 +31,5 @@
31
31
  "typescript": {
32
32
  "definition": "lib/index.d.ts"
33
33
  },
34
- "gitHead": "f69aae83248fd9b740388e39d5a3ce44b05bca81"
34
+ "gitHead": "f30ba1fdd7392b52b45e720ee0097f2894b31e11"
35
35
  }