UNPKG

@mee4dy/crud

Version:

Create a backend and frontend in 5 minutes! With our powerful full stack crud system, customize it to suit you.

1 lines 3.74 kB
{"version":3,"file":"orm-item.cjs","sources":["../../orm/orm-item.ts"],"sourcesContent":["import * as _ from 'lodash';\nimport { diff } from 'deep-object-diff';\nimport { Actions } from './orm.interfaces';\n\nexport class ORMItem {\n constructor(item: object, pk: string = 'id', actions: Actions) {\n this.setPK(pk);\n this.setActions(actions);\n this.setItem(item);\n }\n\n private pk: string;\n private item;\n private itemOriginal;\n private actions: Actions;\n\n private setItem(item) {\n this.item = item;\n this.itemOriginal = _.cloneDeep(item);\n\n Object.keys(item).forEach((key) => {\n Object.defineProperty(this, key, {\n get() {\n return this.get(key);\n },\n set(value) {\n return this.set(key, value);\n },\n });\n });\n }\n\n public setActions(actions) {\n this.actions = actions;\n\n return this;\n }\n\n public getActions() {\n return this.actions;\n }\n\n public setPK(pk) {\n this.pk = pk;\n\n return this;\n }\n\n public getPK() {\n return this.pk;\n }\n\n private getItem() {\n return this.item;\n }\n\n private getItemOriginal() {\n return this.itemOriginal;\n }\n\n private callAction(action, payload) {\n return this.actions[action](payload);\n }\n\n public get(attribute) {\n return this.item[attribute];\n }\n\n public set(attribute, value) {\n this.item[attribute] = value;\n }\n\n public diff() {\n const item = this.getItem();\n const itemOriginal = this.getItemOriginal();\n let itemDiff = diff(itemOriginal, item);\n\n itemDiff = _.omit(itemDiff, ['sources']);\n\n // console.log(itemDiff);\n\n return itemDiff;\n }\n\n public commit() {\n const item = this.getItem();\n const itemDiff = this.diff();\n\n return this.callAction('commit', {\n pk: item.pk,\n data: itemDiff,\n });\n }\n\n public save() {\n const item = this.getItem();\n const itemDiff = this.diff();\n const pk = this.getPK();\n\n return this.callAction('update', {\n pk: item[pk],\n data: itemDiff,\n });\n }\n\n public delete() {\n const item = this.getItem();\n const pk = this.getPK();\n\n return this.callAction('delete', {\n pk: item[pk],\n });\n }\n}\n"],"names":["ORMItem","item","pk","actions","_","key","value","action","payload","attribute","itemOriginal","itemDiff","diff"],"mappings":"kaAIO,MAAMA,CAAQ,CACnB,YAAYC,EAAcC,EAAa,KAAMC,EAAkB,CAC7D,KAAK,MAAMD,CAAE,EACb,KAAK,WAAWC,CAAO,EACvB,KAAK,QAAQF,CAAI,CAAA,CAQX,QAAQA,EAAM,CACpB,KAAK,KAAOA,EACP,KAAA,aAAeG,EAAE,UAAUH,CAAI,EAEpC,OAAO,KAAKA,CAAI,EAAE,QAASI,GAAQ,CAC1B,OAAA,eAAe,KAAMA,EAAK,CAC/B,KAAM,CACG,OAAA,KAAK,IAAIA,CAAG,CACrB,EACA,IAAIC,EAAO,CACF,OAAA,KAAK,IAAID,EAAKC,CAAK,CAAA,CAC5B,CACD,CAAA,CACF,CAAA,CAGI,WAAWH,EAAS,CACzB,YAAK,QAAUA,EAER,IAAA,CAGF,YAAa,CAClB,OAAO,KAAK,OAAA,CAGP,MAAMD,EAAI,CACf,YAAK,GAAKA,EAEH,IAAA,CAGF,OAAQ,CACb,OAAO,KAAK,EAAA,CAGN,SAAU,CAChB,OAAO,KAAK,IAAA,CAGN,iBAAkB,CACxB,OAAO,KAAK,YAAA,CAGN,WAAWK,EAAQC,EAAS,CAClC,OAAO,KAAK,QAAQD,CAAM,EAAEC,CAAO,CAAA,CAG9B,IAAIC,EAAW,CACb,OAAA,KAAK,KAAKA,CAAS,CAAA,CAGrB,IAAIA,EAAWH,EAAO,CACtB,KAAA,KAAKG,CAAS,EAAIH,CAAA,CAGlB,MAAO,CACN,MAAAL,EAAO,KAAK,QAAQ,EACpBS,EAAe,KAAK,gBAAgB,EACtC,IAAAC,EAAWC,EAAAA,KAAKF,EAAcT,CAAI,EAEtC,OAAAU,EAAWP,EAAE,KAAKO,EAAU,CAAC,SAAS,CAAC,EAIhCA,CAAA,CAGF,QAAS,CACR,MAAAV,EAAO,KAAK,QAAQ,EACpBU,EAAW,KAAK,KAAK,EAEpB,OAAA,KAAK,WAAW,SAAU,CAC/B,GAAIV,EAAK,GACT,KAAMU,CAAA,CACP,CAAA,CAGI,MAAO,CACN,MAAAV,EAAO,KAAK,QAAQ,EACpBU,EAAW,KAAK,KAAK,EACrBT,EAAK,KAAK,MAAM,EAEf,OAAA,KAAK,WAAW,SAAU,CAC/B,GAAID,EAAKC,CAAE,EACX,KAAMS,CAAA,CACP,CAAA,CAGI,QAAS,CACR,MAAAV,EAAO,KAAK,QAAQ,EACpBC,EAAK,KAAK,MAAM,EAEf,OAAA,KAAK,WAAW,SAAU,CAC/B,GAAID,EAAKC,CAAE,CAAA,CACZ,CAAA,CAEL"}