tango-app-api-trax 3.9.39 → 3.9.41

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.
Files changed (51) hide show
  1. package/index.js +2 -1
  2. package/package.json +1 -1
  3. package/src/controllers/internalTrax.controller.js +225 -94
  4. package/src/controllers/mobileTrax.controller.js +69 -29
  5. package/src/controllers/trax.controller.js +3 -2
  6. package/src/controllers/traxDashboard.controllers.js +69 -55
  7. package/src/hbs/flag.hbs +1 -1
  8. package/src/hbs/template.hbs +7 -0
  9. package/src/hbs/visit-checklist.hbs +77 -93
  10. package/src/logging/activityLogFlusher.js +59 -0
  11. package/src/logging/activityLogMiddleware.js +45 -0
  12. package/src/logging/activityLogStore.js +91 -0
  13. package/src/logging/compressBatches.js +83 -0
  14. package/src/logging/config.js +24 -0
  15. package/src/logging/createLoggableService.js +46 -0
  16. package/src/logging/logExternalCall.js +37 -0
  17. package/src/routes/internalTraxApi.router.js +1 -0
  18. package/src/services/app.service.js +15 -9
  19. package/src/services/approver.service.js +23 -15
  20. package/src/services/authentication.service.js +9 -3
  21. package/src/services/camera.service.js +19 -13
  22. package/src/services/checklist.service.js +35 -27
  23. package/src/services/checklistAssign.service.js +43 -38
  24. package/src/services/checklistQuestion.service.js +39 -34
  25. package/src/services/checklistlog.service.js +39 -34
  26. package/src/services/clientRequest.service.js +9 -2
  27. package/src/services/clients.services.js +23 -18
  28. package/src/services/cluster.service.js +31 -23
  29. package/src/services/domain.service.js +23 -18
  30. package/src/services/download.services.js +35 -25
  31. package/src/services/group.service.js +23 -17
  32. package/src/services/lenskartEmployeeMapping.service.js +15 -10
  33. package/src/services/locus.service.js +35 -28
  34. package/src/services/notification.service.js +35 -26
  35. package/src/services/otp.service.js +20 -13
  36. package/src/services/planogram.service.js +9 -2
  37. package/src/services/processedTaskConfig.service.js +35 -27
  38. package/src/services/processedTaskList.service.js +32 -26
  39. package/src/services/processedchecklist.services.js +55 -47
  40. package/src/services/processedchecklistconfig.services.js +39 -34
  41. package/src/services/recurringFlagTracker.service.js +39 -32
  42. package/src/services/runAIFeatures.services.js +32 -27
  43. package/src/services/runAIRequest.services.js +43 -38
  44. package/src/services/store.service.js +32 -27
  45. package/src/services/tagging.service.js +9 -2
  46. package/src/services/taskConfig.service.js +35 -27
  47. package/src/services/teams.service.js +35 -24
  48. package/src/services/ticket.service.js +15 -10
  49. package/src/services/user.service.js +27 -20
  50. package/src/services/userAssignedstores.service.js +12 -5
  51. package/src/utils/visitChecklistPdf.utils.js +449 -21
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Post-process a steps array to compress repeated adjacent cycles into a single
3
+ * "batch" entry. Complements the push-time collapse of identical adjacent
4
+ * steps (which merges A,A,A into A×3) by merging repeated *sequences*
5
+ * (A,B,C,A,B,C,A,B,C → batch[A→B→C]×3).
6
+ *
7
+ * Rules:
8
+ * - A cycle is detected only if the same ordered sequence of step names/types
9
+ * appears ≥ 2 times back-to-back.
10
+ * - Failed steps are never included in cycles — each failure stands alone so
11
+ * you can see exactly which iteration broke.
12
+ * - Greedy: smallest cycle length (≥ 2) wins. This gives the most compact,
13
+ * most readable output.
14
+ * - Cycle length is bounded to keep the O(n·k) scan cheap.
15
+ */
16
+
17
+ const MIN_CYCLE_LEN = 2;
18
+ const MAX_CYCLE_LEN = 10;
19
+
20
+ export function compressBatches( rawSteps ) {
21
+ if ( !Array.isArray( rawSteps ) || rawSteps.length < MIN_CYCLE_LEN * 2 ) return rawSteps;
22
+
23
+ const out = [];
24
+ let i = 0;
25
+ while ( i < rawSteps.length ) {
26
+ let absorbed = false;
27
+ const maxK = Math.min( MAX_CYCLE_LEN, Math.floor( ( rawSteps.length - i ) / 2 ) );
28
+
29
+ for ( let k = MIN_CYCLE_LEN; k <= maxK; k++ ) {
30
+ if ( !cycleEquals( rawSteps, i, k, i + k ) ) continue;
31
+
32
+ // At least 2 repeats confirmed. Count forward.
33
+ let repeats = 2;
34
+ let j = i + 2 * k;
35
+ while ( cycleEquals( rawSteps, i, k, j ) ) {
36
+ repeats++;
37
+ j += k;
38
+ }
39
+
40
+ const patternSteps = rawSteps.slice( i, i + k );
41
+ const totalMs = rawSteps.slice( i, j ).reduce( ( sum, s ) => sum + ( s.ms || 0 ), 0 );
42
+
43
+ out.push( {
44
+ stepIndex: out.length + 1,
45
+ name: patternSteps.map( ( s ) => s.count ? `${ s.name }×${ s.count }` : s.name ).join( ' → ' ),
46
+ type: 'batch',
47
+ status: 'success',
48
+ count: repeats,
49
+ ms: totalMs,
50
+ pattern: patternSteps.map( ( s ) => ( {
51
+ name: s.name,
52
+ type: s.type,
53
+ count: s.count ?? 1,
54
+ } ) ),
55
+ } );
56
+
57
+ i = j;
58
+ absorbed = true;
59
+ break;
60
+ }
61
+
62
+ if ( !absorbed ) {
63
+ out.push( { ...rawSteps[i], stepIndex: out.length + 1 } );
64
+ i++;
65
+ }
66
+ }
67
+
68
+ return out;
69
+ }
70
+
71
+ function cycleEquals( steps, patternStart, patternLen, checkStart ) {
72
+ if ( checkStart + patternLen > steps.length ) return false;
73
+ for ( let i = 0; i < patternLen; i++ ) {
74
+ const a = steps[patternStart + i];
75
+ const b = steps[checkStart + i];
76
+ if ( !a || !b ) return false;
77
+ if ( a.status === 'failed' || b.status === 'failed' ) return false;
78
+ if ( a.name !== b.name ) return false;
79
+ if ( a.type !== b.type ) return false;
80
+ if ( a.status !== b.status ) return false;
81
+ }
82
+ return true;
83
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Self-contained configuration for the activity logging module.
3
+ *
4
+ * Read directly from process.env so this module has zero dependency on
5
+ * consumers' env.js layout. Getters (not cached values) so dotenv can load
6
+ * after this module is imported.
7
+ */
8
+
9
+ const DEFAULT_INDEX = 'trax-activity-logs-test';
10
+ const LOG_VERSION = 'v1';
11
+
12
+ export const loggingConfig = {
13
+ get enabled() {
14
+ return process.env.TRAX_ACTIVITY_LOGGING === 'true';
15
+ },
16
+ get index() {
17
+ try {
18
+ return JSON.parse( process.env.OPENSEARCH || '{}' )?.traxActivityLog || DEFAULT_INDEX;
19
+ } catch ( _e ) {
20
+ return DEFAULT_INDEX;
21
+ }
22
+ },
23
+ version: LOG_VERSION,
24
+ };
@@ -0,0 +1,46 @@
1
+ import { getLogContext, pushStep, pushStepFailure } from './activityLogStore.js';
2
+ import { loggingConfig } from './config.js';
3
+
4
+ const WRITE_OPS = [
5
+ 'create',
6
+ 'updateOne',
7
+ 'updateMany',
8
+ 'deleteOne',
9
+ 'deleteMany',
10
+ 'upsertOne',
11
+ 'insertMany',
12
+ 'bulkUpsert',
13
+ 'bulkWrite',
14
+ 'removeKeys',
15
+ 'findOneAndUpdate',
16
+ 'findOneAndUpdate2',
17
+ 'updateOneArrayItem',
18
+ 'update',
19
+ ];
20
+
21
+ export function createLoggableService( serviceModule, collectionName ) {
22
+ // Install the proxy unconditionally. The enabled-check happens at call time
23
+ // inside the `get` trap so env vars loaded after module import (via dotenv)
24
+ // are observed correctly.
25
+ return new Proxy( serviceModule, {
26
+ get( target, prop ) {
27
+ const original = target[prop];
28
+ if ( !WRITE_OPS.includes( prop ) || typeof original !== 'function' ) return original;
29
+ if ( !loggingConfig.enabled ) return original;
30
+
31
+ return async function( ...args ) {
32
+ const ctx = getLogContext();
33
+ const start = Date.now();
34
+ const stepName = `${ collectionName }.${ prop }`;
35
+ try {
36
+ const result = await original.apply( target, args );
37
+ if ( ctx ) pushStep( { name: stepName, type: 'db', status: 'success', ms: Date.now() - start } );
38
+ return result;
39
+ } catch ( e ) {
40
+ if ( ctx ) pushStepFailure( { name: stepName, type: 'db', ms: Date.now() - start }, e );
41
+ throw e;
42
+ }
43
+ };
44
+ },
45
+ } );
46
+ }
@@ -0,0 +1,37 @@
1
+ import { pushStep, pushStepFailure } from './activityLogStore.js';
2
+
3
+ export async function logExternalCall( serviceName, url, options = {} ) {
4
+ const start = Date.now();
5
+ const stepName = `external.${ serviceName }`;
6
+ try {
7
+ const res = await fetch( url, options );
8
+ pushStep( {
9
+ name: stepName,
10
+ type: 'external',
11
+ status: res.ok ? 'success' : 'failed',
12
+ ms: Date.now() - start,
13
+ } );
14
+ return res;
15
+ } catch ( e ) {
16
+ pushStepFailure( { name: stepName, type: 'external', ms: Date.now() - start }, e );
17
+ throw e;
18
+ }
19
+ }
20
+
21
+ export async function logQueueMessage( serviceName, queueUrl, messageBody, sendMessageToQueueFn ) {
22
+ const start = Date.now();
23
+ const stepName = `external.${ serviceName }`;
24
+ try {
25
+ const result = await sendMessageToQueueFn( queueUrl, messageBody );
26
+ pushStep( {
27
+ name: stepName,
28
+ type: 'external',
29
+ status: 'success',
30
+ ms: Date.now() - start,
31
+ } );
32
+ return result;
33
+ } catch ( e ) {
34
+ pushStepFailure( { name: stepName, type: 'external', ms: Date.now() - start }, e );
35
+ throw e;
36
+ }
37
+ }
@@ -13,6 +13,7 @@ internalTraxRouter
13
13
  .get( '/list', isAllowedInternalAPIHandler, internalController.list )
14
14
  .post( '/updateAomDetails', isAllowedInternalAPIHandler, internalController.aomupdateCollection )
15
15
  .post( '/updateSaleManagerDetails', isAllowedInternalAPIHandler, internalController.saleUpdateCollection )
16
+ .post( '/updateValidationType', isAllowedInternalAPIHandler, internalController.updateMultipleChoiceSingleValidationType )
16
17
  .get( '/profile', isAllowedMobileSessionHandler, internalController.getUserStoreList )
17
18
  .post( '/pushNotification', isAllowedInternalAPIHandler, internalController.pushNotification )
18
19
  .post( '/taskPushNotification', isAllowedInternalAPIHandler, internalController.taskPushNotification )
@@ -1,14 +1,20 @@
1
1
  import model from 'tango-api-schema';
2
+ import { createLoggableService } from '../logging/createLoggableService.js';
2
3
 
3
- export const aggregate = async ( query ={} ) => {
4
- return model.appVersionModel.aggregate( query );
4
+ const _methods = {
5
+ async aggregate( query ={} ) {
6
+ return model.appVersionModel.aggregate( query );
7
+ },
8
+ async updateOne( query, record ) {
9
+ return model.appVersionModel.updateOne( query, { $set: record }, { upsert: true } );
10
+ },
11
+ async findOne( query ={}, field={} ) {
12
+ return model.appVersionModel.findOne( query, field );
13
+ },
5
14
  };
6
15
 
7
- export const updateOne = async ( query, record ) => {
8
- return model.appVersionModel.updateOne( query, { $set: record }, { upsert: true } );
9
- };
10
-
11
- export const findOne = async ( query ={}, field={} ) => {
12
- return model.appVersionModel.findOne( query, field );
13
- };
16
+ const _svc = createLoggableService( _methods, 'appversions' );
14
17
 
18
+ export const aggregate = ( ...args ) => _svc.aggregate( ...args );
19
+ export const updateOne = ( ...args ) => _svc.updateOne( ...args );
20
+ export const findOne = ( ...args ) => _svc.findOne( ...args );
@@ -1,20 +1,28 @@
1
1
  import model from 'tango-api-schema';
2
+ import { createLoggableService } from '../logging/createLoggableService.js';
2
3
 
3
- export const create = async ( data ) => {
4
- return model.traxApproverModel.create( data );
4
+ const _methods = {
5
+ async create( data ) {
6
+ return model.traxApproverModel.create( data );
7
+ },
8
+ async updateMany( query={}, record={} ) {
9
+ return model.traxApproverModel.updateMany( query, { $set: record } );
10
+ },
11
+ async insertMany( data = [] ) {
12
+ return model.traxApproverModel.insertMany( data );
13
+ },
14
+ async find( query ={}, field={} ) {
15
+ return model.traxApproverModel.find( query, field );
16
+ },
17
+ async findOne( query ={}, field={} ) {
18
+ return model.traxApproverModel.findOne( query, field );
19
+ },
5
20
  };
6
21
 
7
- export const updateMany = async ( query={}, record={} ) => {
8
- return model.traxApproverModel.updateMany( query, { $set: record } );
9
- };
10
-
11
- export const insertMany = async ( data = [] ) => {
12
- return model.traxApproverModel.insertMany( data );
13
- };
22
+ const _svc = createLoggableService( _methods, 'approvers' );
14
23
 
15
- export const find = async ( query ={}, field={} ) => {
16
- return model.traxApproverModel.find( query, field );
17
- };
18
- export const findOne = async ( query ={}, field={} ) => {
19
- return model.traxApproverModel.findOne( query, field );
20
- };
24
+ export const create = ( ...args ) => _svc.create( ...args );
25
+ export const updateMany = ( ...args ) => _svc.updateMany( ...args );
26
+ export const insertMany = ( ...args ) => _svc.insertMany( ...args );
27
+ export const find = ( ...args ) => _svc.find( ...args );
28
+ export const findOne = ( ...args ) => _svc.findOne( ...args );
@@ -1,6 +1,12 @@
1
1
  import authenticationModel from 'tango-api-schema/schema/authentication.model.js';
2
+ import { createLoggableService } from '../logging/createLoggableService.js';
2
3
 
3
- export async function create( data ) {
4
- return authenticationModel.create( data );
5
- }
4
+ const _methods = {
5
+ async create( data ) {
6
+ return authenticationModel.create( data );
7
+ },
8
+ };
6
9
 
10
+ const _svc = createLoggableService( _methods, 'authentications' );
11
+
12
+ export const create = ( ...args ) => _svc.create( ...args );
@@ -1,18 +1,24 @@
1
1
  import model from 'tango-api-schema';
2
+ import { createLoggableService } from '../logging/createLoggableService.js';
2
3
 
3
- export const aggregate = async ( query ={} ) => {
4
- return model.cameraModel.aggregate( query );
4
+ const _methods = {
5
+ async aggregate( query ={} ) {
6
+ return model.cameraModel.aggregate( query );
7
+ },
8
+ async updateOne( query, record ) {
9
+ return model.cameraModel.updateOne( query, { $set: record }, { upsert: true } );
10
+ },
11
+ async findOne( query ={}, field={} ) {
12
+ return model.cameraModel.findOne( query, field );
13
+ },
14
+ async find( query ={}, field={} ) {
15
+ return model.cameraModel.find( query, field );
16
+ },
5
17
  };
6
18
 
7
- export const updateOne = async ( query, record ) => {
8
- return model.cameraModel.updateOne( query, { $set: record }, { upsert: true } );
9
- };
10
-
11
- export const findOne = async ( query ={}, field={} ) => {
12
- return model.cameraModel.findOne( query, field );
13
- };
14
-
15
- export const find = async ( query ={}, field={} ) => {
16
- return model.cameraModel.find( query, field );
17
- };
19
+ const _svc = createLoggableService( _methods, 'cameras' );
18
20
 
21
+ export const aggregate = ( ...args ) => _svc.aggregate( ...args );
22
+ export const updateOne = ( ...args ) => _svc.updateOne( ...args );
23
+ export const findOne = ( ...args ) => _svc.findOne( ...args );
24
+ export const find = ( ...args ) => _svc.find( ...args );
@@ -1,31 +1,39 @@
1
1
  import model from 'tango-api-schema';
2
-
3
- export const findOne = async ( query={}, field={} ) => {
4
- return model.checklistconfigModel.findOne( query, field );
5
- };
6
-
7
- export const find = async ( query={}, field={} ) => {
8
- return model.checklistconfigModel.find( query, field );
9
- };
10
-
11
- export const create = async ( document = {} ) => {
12
- return model.checklistconfigModel.create( document );
13
- };
14
-
15
- export const deleteOne = async ( query = {} ) => {
16
- return model.checklistconfigModel.deleteOne( query );
17
- };
18
-
19
- export const updateOne = async ( query = {}, record={} ) => {
20
- return model.checklistconfigModel.updateOne( query, { $set: record }, { upsert: true } );
21
- };
22
-
23
- export const updateMany = async ( query = {}, record={} ) => {
24
- return model.checklistconfigModel.updateMany( query, { $set: record } );
25
- };
26
-
27
- export const aggregate = async ( query = {} ) => {
28
- return model.checklistconfigModel.aggregate( query );
2
+ import { createLoggableService } from '../logging/createLoggableService.js';
3
+
4
+ const _methods = {
5
+ async findOne( query={}, field={} ) {
6
+ return model.checklistconfigModel.findOne( query, field );
7
+ },
8
+ async find( query={}, field={} ) {
9
+ return model.checklistconfigModel.find( query, field );
10
+ },
11
+ async create( document = {} ) {
12
+ return model.checklistconfigModel.create( document );
13
+ },
14
+ async deleteOne( query = {} ) {
15
+ return model.checklistconfigModel.deleteOne( query );
16
+ },
17
+ async updateOne( query = {}, record={} ) {
18
+ return model.checklistconfigModel.updateOne( query, { $set: record }, { upsert: true } );
19
+ },
20
+ async updateMany( query = {}, record={} ) {
21
+ return model.checklistconfigModel.updateMany( query, { $set: record } );
22
+ },
23
+ async aggregate( query = {} ) {
24
+ return model.checklistconfigModel.aggregate( query ).collation( {
25
+ locale: 'en_US',
26
+ numericOrdering: true,
27
+ } ); ;
28
+ },
29
29
  };
30
30
 
31
+ const _svc = createLoggableService( _methods, 'checklists' );
31
32
 
33
+ export const findOne = ( ...args ) => _svc.findOne( ...args );
34
+ export const find = ( ...args ) => _svc.find( ...args );
35
+ export const create = ( ...args ) => _svc.create( ...args );
36
+ export const deleteOne = ( ...args ) => _svc.deleteOne( ...args );
37
+ export const updateOne = ( ...args ) => _svc.updateOne( ...args );
38
+ export const updateMany = ( ...args ) => _svc.updateMany( ...args );
39
+ export const aggregate = ( ...args ) => _svc.aggregate( ...args );
@@ -1,39 +1,44 @@
1
1
  import model from 'tango-api-schema';
2
-
3
- export const find = async ( query={}, field={} ) => {
4
- return model.checklistassignconfigModel.find( query, field );
5
- };
6
-
7
- export const findOne = async ( query={}, field={} ) => {
8
- return model.checklistassignconfigModel.findOne( query, field );
9
- };
10
-
11
- export const create = async ( document = {} ) => {
12
- return model.checklistassignconfigModel.create( document );
13
- };
14
-
15
- export const insertMany = async ( document = {} ) => {
16
- return model.checklistassignconfigModel.insertMany( document );
17
- };
18
-
19
- export const deleteMany = async ( document = {} ) => {
20
- return model.checklistassignconfigModel.deleteMany( document );
21
- };
22
-
23
- export const updateMany = async ( query = {}, record={} ) => {
24
- return model.checklistassignconfigModel.updateMany( query, { $set: record } );
25
- };
26
-
27
- export const updateOne = async ( query = {}, record={} ) => {
28
- return model.checklistassignconfigModel.updateOne( query, { $set: record }, { upsert: true } );
29
- };
30
-
31
- export const aggregate = async ( query = {} ) => {
32
- return model.checklistassignconfigModel.aggregate( query );
33
- };
34
-
35
- export const count = async ( query = {} ) => {
36
- return model.checklistassignconfigModel.countDocuments( query );
37
- };
38
-
39
-
2
+ import { createLoggableService } from '../logging/createLoggableService.js';
3
+
4
+ const _methods = {
5
+ async find( query={}, field={} ) {
6
+ return model.checklistassignconfigModel.find( query, field );
7
+ },
8
+ async findOne( query={}, field={} ) {
9
+ return model.checklistassignconfigModel.findOne( query, field );
10
+ },
11
+ async create( document = {} ) {
12
+ return model.checklistassignconfigModel.create( document );
13
+ },
14
+ async insertMany( document = {} ) {
15
+ return model.checklistassignconfigModel.insertMany( document );
16
+ },
17
+ async deleteMany( document = {} ) {
18
+ return model.checklistassignconfigModel.deleteMany( document );
19
+ },
20
+ async updateMany( query = {}, record={} ) {
21
+ return model.checklistassignconfigModel.updateMany( query, { $set: record } );
22
+ },
23
+ async updateOne( query = {}, record={} ) {
24
+ return model.checklistassignconfigModel.updateOne( query, { $set: record }, { upsert: true } );
25
+ },
26
+ async aggregate( query = {} ) {
27
+ return model.checklistassignconfigModel.aggregate( query );
28
+ },
29
+ async count( query = {} ) {
30
+ return model.checklistassignconfigModel.countDocuments( query );
31
+ },
32
+ };
33
+
34
+ const _svc = createLoggableService( _methods, 'checklistassigns' );
35
+
36
+ export const find = ( ...args ) => _svc.find( ...args );
37
+ export const findOne = ( ...args ) => _svc.findOne( ...args );
38
+ export const create = ( ...args ) => _svc.create( ...args );
39
+ export const insertMany = ( ...args ) => _svc.insertMany( ...args );
40
+ export const deleteMany = ( ...args ) => _svc.deleteMany( ...args );
41
+ export const updateMany = ( ...args ) => _svc.updateMany( ...args );
42
+ export const updateOne = ( ...args ) => _svc.updateOne( ...args );
43
+ export const aggregate = ( ...args ) => _svc.aggregate( ...args );
44
+ export const count = ( ...args ) => _svc.count( ...args );
@@ -1,35 +1,40 @@
1
1
  import model from 'tango-api-schema';
2
-
3
- export const find = async ( query={}, field={} ) => {
4
- return model.checklistquestionconfigModel.find( query, field );
5
- };
6
-
7
- export const findOne = async ( query={}, field={} ) => {
8
- return model.checklistquestionconfigModel.findOne( query, field );
9
- };
10
-
11
- export const create = async ( document = {} ) => {
12
- return model.checklistquestionconfigModel.create( document );
13
- };
14
-
15
- export const insertMany = async ( document = {} ) => {
16
- return model.checklistquestionconfigModel.insertMany( document );
17
- };
18
-
19
- export const updateMany = async ( query = {}, record={} ) => {
20
- return model.checklistquestionconfigModel.updateMany( query, { $set: record } );
21
- };
22
-
23
- export const deleteMany = async ( query = {} ) => {
24
- return model.checklistquestionconfigModel.deleteMany( query );
25
- };
26
-
27
- export const aggregate = async ( query = {} ) => {
28
- return model.checklistquestionconfigModel.aggregate( query );
29
- };
30
-
31
- export const findSort = async ( query={}, field={}, sort = {} ) => {
32
- return model.checklistquestionconfigModel.find( query, field ).sort( sort );
33
- };
34
-
35
-
2
+ import { createLoggableService } from '../logging/createLoggableService.js';
3
+
4
+ const _methods = {
5
+ async find( query={}, field={} ) {
6
+ return model.checklistquestionconfigModel.find( query, field );
7
+ },
8
+ async findOne( query={}, field={} ) {
9
+ return model.checklistquestionconfigModel.findOne( query, field );
10
+ },
11
+ async create( document = {} ) {
12
+ return model.checklistquestionconfigModel.create( document );
13
+ },
14
+ async insertMany( document = {} ) {
15
+ return model.checklistquestionconfigModel.insertMany( document );
16
+ },
17
+ async updateMany( query = {}, record={} ) {
18
+ return model.checklistquestionconfigModel.updateMany( query, { $set: record } );
19
+ },
20
+ async deleteMany( query = {} ) {
21
+ return model.checklistquestionconfigModel.deleteMany( query );
22
+ },
23
+ async aggregate( query = {} ) {
24
+ return model.checklistquestionconfigModel.aggregate( query );
25
+ },
26
+ async findSort( query={}, field={}, sort = {} ) {
27
+ return model.checklistquestionconfigModel.find( query, field ).sort( sort );
28
+ },
29
+ };
30
+
31
+ const _svc = createLoggableService( _methods, 'checklistquestions' );
32
+
33
+ export const find = ( ...args ) => _svc.find( ...args );
34
+ export const findOne = ( ...args ) => _svc.findOne( ...args );
35
+ export const create = ( ...args ) => _svc.create( ...args );
36
+ export const insertMany = ( ...args ) => _svc.insertMany( ...args );
37
+ export const updateMany = ( ...args ) => _svc.updateMany( ...args );
38
+ export const deleteMany = ( ...args ) => _svc.deleteMany( ...args );
39
+ export const aggregate = ( ...args ) => _svc.aggregate( ...args );
40
+ export const findSort = ( ...args ) => _svc.findSort( ...args );
@@ -1,35 +1,40 @@
1
1
  import model from 'tango-api-schema';
2
-
3
- export const findOne = async ( query={}, field={} ) => {
4
- return model.checklistlogModel.findOne( query, field );
5
- };
6
-
7
- export const find = async ( query={}, field={} ) => {
8
- return model.checklistlogModel.find( query, field );
9
- };
10
-
11
- export const create = async ( document = {} ) => {
12
- return model.checklistlogModel.create( document );
13
- };
14
-
15
- export const deleteOne = async ( query = {} ) => {
16
- return model.checklistlogModel.deleteOne( query );
17
- };
18
-
19
- export const updateOne = async ( query = {}, record={} ) => {
20
- return model.checklistlogModel.updateOne( query, { $set: record } );
21
- };
22
-
23
- export const updateMany = async ( query = {}, record={} ) => {
24
- return model.checklistlogModel.updateMany( query, { $set: record } );
25
- };
26
-
27
- export const deleteMany = async ( query = {} ) => {
28
- return model.checklistlogModel.deleteMany( query );
29
- };
30
-
31
- export const aggregate = async ( query = {} ) => {
32
- return model.checklistlogModel.aggregate( query );
33
- };
34
-
35
-
2
+ import { createLoggableService } from '../logging/createLoggableService.js';
3
+
4
+ const _methods = {
5
+ async findOne( query={}, field={} ) {
6
+ return model.checklistlogModel.findOne( query, field );
7
+ },
8
+ async find( query={}, field={} ) {
9
+ return model.checklistlogModel.find( query, field );
10
+ },
11
+ async create( document = {} ) {
12
+ return model.checklistlogModel.create( document );
13
+ },
14
+ async deleteOne( query = {} ) {
15
+ return model.checklistlogModel.deleteOne( query );
16
+ },
17
+ async updateOne( query = {}, record={} ) {
18
+ return model.checklistlogModel.updateOne( query, { $set: record } );
19
+ },
20
+ async updateMany( query = {}, record={} ) {
21
+ return model.checklistlogModel.updateMany( query, { $set: record } );
22
+ },
23
+ async deleteMany( query = {} ) {
24
+ return model.checklistlogModel.deleteMany( query );
25
+ },
26
+ async aggregate( query = {} ) {
27
+ return model.checklistlogModel.aggregate( query );
28
+ },
29
+ };
30
+
31
+ const _svc = createLoggableService( _methods, 'checklistlogs' );
32
+
33
+ export const findOne = ( ...args ) => _svc.findOne( ...args );
34
+ export const find = ( ...args ) => _svc.find( ...args );
35
+ export const create = ( ...args ) => _svc.create( ...args );
36
+ export const deleteOne = ( ...args ) => _svc.deleteOne( ...args );
37
+ export const updateOne = ( ...args ) => _svc.updateOne( ...args );
38
+ export const updateMany = ( ...args ) => _svc.updateMany( ...args );
39
+ export const deleteMany = ( ...args ) => _svc.deleteMany( ...args );
40
+ export const aggregate = ( ...args ) => _svc.aggregate( ...args );
@@ -1,5 +1,12 @@
1
1
  import model from 'tango-api-schema';
2
+ import { createLoggableService } from '../logging/createLoggableService.js';
2
3
 
3
- export const create = async ( document ) => {
4
- return model.clientRequestModel.create( document );
4
+ const _methods = {
5
+ async create( document ) {
6
+ return model.clientRequestModel.create( document );
7
+ },
5
8
  };
9
+
10
+ const _svc = createLoggableService( _methods, 'clientrequests' );
11
+
12
+ export const create = ( ...args ) => _svc.create( ...args );