@@ -38,25 +38,49 @@ const MODEL_TO_RESOURCE = {
3838 * Create record in es
3939 * @param resource the resource to create
4040 * @param result the resource fields
41+ * @param toEs is to es directly
4142 */
42- async function createRecordInEs ( resource , entity ) {
43+ async function createRecordInEs ( resource , entity , toEs ) {
4344 try {
44- await publishMessage ( 'create' , resource , entity )
45+ if ( toEs ) {
46+ await esHelper . processCreate ( resource , entity )
47+ }
4548 } catch ( err ) {
4649 logger . logFullError ( err )
50+ throw err
51+ }
52+
53+ if ( ! toEs ) {
54+ try {
55+ await publishMessage ( "create" , resource , entity ) ;
56+ } catch ( err ) {
57+ logger . logFullError ( err ) ;
58+ }
4759 }
60+
4861}
4962
5063/**
5164 * Patch record in es
5265 * @param resource the resource to create
5366 * @param result the resource fields
67+ * @param toEs is to es directly
5468 */
55- async function patchRecordInEs ( resource , entity ) {
69+ async function patchRecordInEs ( resource , entity , toEs ) {
5670 try {
57- await publishMessage ( 'patch' , resource , entity )
71+ if ( toEs ) {
72+ await esHelper . processUpdate ( resource , entity )
73+ }
5874 } catch ( err ) {
5975 logger . logFullError ( err )
76+ throw err
77+ }
78+ if ( ! toEs ) {
79+ try {
80+ await publishMessage ( "patch" , resource , entity ) ;
81+ } catch ( err ) {
82+ logger . logFullError ( err ) ;
83+ }
6084 }
6185}
6286
@@ -65,8 +89,9 @@ async function patchRecordInEs (resource, entity) {
6589 * @param id the id of record
6690 * @param params the params of record (like nested ids)
6791 * @param resource the resource to delete
92+ * @param toEs is to es directly
6893 */
69- async function deleteRecordFromEs ( id , params , resource ) {
94+ async function deleteRecordFromEs ( id , params , resource , toEs ) {
7095 let payload
7196 if ( SUB_USER_DOCUMENTS [ resource ] || SUB_ORG_DOCUMENTS [ resource ] ) {
7297 payload = _ . assign ( { } , params )
@@ -76,9 +101,19 @@ async function deleteRecordFromEs (id, params, resource) {
76101 }
77102 }
78103 try {
79- await publishMessage ( 'remove' , resource , payload )
104+ if ( toEs ) {
105+ await esHelper . processDelete ( resource , payload )
106+ }
80107 } catch ( err ) {
81108 logger . logFullError ( err )
109+ throw err
110+ }
111+ if ( ! toEs ) {
112+ try {
113+ await publishMessage ( "remove" , resource , payload ) ;
114+ } catch ( err ) {
115+ logger . logFullError ( err ) ;
116+ }
82117 }
83118}
84119
@@ -174,13 +209,14 @@ function sleep (ms) {
174209}
175210
176211/**
177- * delete child of record with delay between each item deleted
212+ * delete child of record with delay between each item deleted and with transaction
178213 * @param model the child model to delete
179214 * @param id the user id to delete
180215 * @param params the params for child
181216 * @param resourceName the es recource name
217+ * @param transaction the transaction object
182218 */
183- async function deleteChild ( model , id , params , resourceName ) {
219+ async function deleteChild ( model , id , params , resourceName , transaction ) {
184220 const query = { }
185221 query [ params [ 0 ] ] = id
186222 const result = await dbHelper . find ( model , query )
@@ -194,8 +230,8 @@ async function deleteChild (model, id, params, resourceName) {
194230 params . forEach ( attr => { esParams [ attr ] = record [ attr ] } )
195231
196232 // remove from db
197- dbHelper . remove ( model , record . id )
198- deleteRecordFromEs ( record . id , esParams , resourceName )
233+ await dbHelper . remove ( model , record . id , transaction )
234+ await deleteRecordFromEs ( record . id , esParams , resourceName , ! ! transaction )
199235
200236 // sleep for configured time
201237 await sleep ( config . CASCADE_PAUSE_MS )
0 commit comments