UNPKG

7.04 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/BaseScyllaModel.js"],"names":["notNan","a","BaseScyllaModel","app","log","schema","getSchema","data","value","key","type","warn","undefined","includes","Number","Date","getTime","startsWith","value2","Array","isArray","filter","newKey","join","table","keys","Object","defaultKeyspace","scylla","config","map","query","values","options","json","debug","trace","execute","res","error","module","props","obj","run"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAS,CAACC,CAAD;AAAA,SAAQ,0BAASA,CAAT,IAAcA,CAAd,GAAkB,IAA1B;AAAA,CAAf;;IAEMC,e;AACJ,iCAAqB;AAAA,QAAPC,GAAO,QAAPA,GAAO;AAAA;AACnB,SAAKA,GAAL,GAAWA,GAAX;AACA,SAAKC,GAAL,GAAWD,GAAG,CAACC,GAAf;AACA,QAAI,CAAC,KAAKC,MAAV,EAAkB,KAAKA,MAAL,GAAc,KAAKC,SAAL,EAAd;AACnB;;;;WAMD,qBAAY;AACV,aAAO,EAAP;AACD;;;WACD,uBAAcC,IAAd,EAAoB;AAAA;;AAClB,aAAO,2BAAUA,IAAV,EAAgB,UAACC,KAAD,EAAQC,GAAR,EAAgB;AACrC,YAAMC,IAAI,GAAG,KAAI,CAACL,MAAL,CAAYI,GAAZ,CAAb;;AACA,YAAI,CAACC,IAAL,EAAW;AACT,UAAA,KAAI,CAACN,GAAL,CAASO,IAAT,CAAc,2BAAd,EAA2CF,GAA3C;;AACA,iBAAOG,SAAP;AACD;;AACD,YAAI,CAAC,KAAD,EAAQ,QAAR,EAAkB,UAAlB,EAA8BC,QAA9B,CAAuCH,IAAvC,CAAJ,EAAkD,OAAOV,MAAM,CAACc,MAAM,CAACN,KAAD,CAAP,CAAb;AAClD,YAAIE,IAAI,KAAK,YAAb,EAA2B,OAAO,kCAAiBF,KAAjB,CAAP;AAC3B,YAAIE,IAAI,KAAK,WAAb,EAA0B,OAAO,IAAIK,IAAJ,CAASP,KAAT,EAAgBQ,OAAhB,EAAP;;AAC1B,YAAIN,IAAI,CAACO,UAAL,CAAgB,MAAhB,CAAJ,EAA6B;AAC3B,cAAMC,MAAM,GAAGC,KAAK,CAACC,OAAN,CAAcZ,KAAd,IAAuBA,KAAK,CAACa,MAAN,CAAa,UAACpB,CAAD;AAAA,mBAAOA,CAAC,KAAK,IAAN,IAAcA,CAAC,KAAKW,SAA3B;AAAA,WAAb,CAAvB,GAA4E,IAA3F,CAD2B,CAE3B;;AACA,iBAAOM,MAAP;AACD;;AACD,eAAOV,KAAP;AACD,OAfM,CAAP;AAgBD;;;WACD,mBAAUD,IAAV,EAAgB;AAAA;;AACd,aAAO,+BAAcA,IAAd,EAAoB,UAACC,KAAD,EAAQC,GAAR,EAAgB;AACzC,YAAMC,IAAI,GAAG,MAAI,CAACL,MAAL,CAAYI,GAAZ,CAAb;AAEA,YAAI,OAAOD,KAAP,KAAiB,WAArB,EAAkC,OAAO,IAAP;AAClC,YAAIE,IAAI,KAAK,YAAb,EAA2B,OAAO;AAAED,UAAAA,GAAG,EAAHA,GAAF;AAAOD,UAAAA,KAAK,EAAE,8BAAaA,KAAb;AAAd,SAAP;AAC3B,YAAIE,IAAI,KAAK,WAAb,EAA0B,OAAO;AAAED,UAAAA,GAAG,EAAHA,GAAF;AAAOD,UAAAA,KAAK,EAAE,IAAIO,IAAJ,CAASP,KAAT;AAAd,SAAP;AAC1B,eAAO;AAAEC,UAAAA,GAAG,EAAHA,GAAF;AAAOD,UAAAA,KAAK,EAALA;AAAP,SAAP;AACD,OAPM,CAAP;AAQD;;;WACD,2BAAkB;AAChB,UAAMH,MAAM,GAAG,yBAAQ,KAAKA,MAAb,EAAqB,UAACG,KAAD,EAAQC,GAAR,EAAgB;AAClD,YAAMa,MAAM,GAAGb,GAAG,CAAC,CAAD,CAAH,KAAW,GAAX,cAAqB,2BAAUA,GAAV,CAArB,IAAwC,2BAAUA,GAAV,CAAvD;AACA,YAAIa,MAAM,CAAC,CAAD,CAAN,KAAc,GAAlB,EAAuB,mBAAWA,MAAX;AACvB,eAAOA,MAAP;AACD,OAJc,CAAf;AAKA,aAAO,qBAAIjB,MAAJ,EAAY,UAACG,KAAD,EAAQC,GAAR;AAAA,yBAAmBA,GAAnB,cAA0BD,KAAK,KAAK,YAAV,GAAyB,MAAzB,GAAkCA,KAA5D;AAAA,OAAZ,EAAiFe,IAAjF,CAAsF,KAAtF,CAAP;AACD;;;WAED,2BAAkBC,KAAlB,EAAyBjB,IAAzB,EAA+B;AAC7B,UAAMkB,IAAI,GAAGC,MAAM,CAACD,IAAP,CAAYlB,IAAZ,CAAb;AACA,UAAQoB,eAAR,GAA4B,KAAKC,MAAL,CAAYC,MAAxC,CAAQF,eAAR;AACA,mCAAsBA,eAAtB,cAAyC,KAAKH,KAA9C,eAAwDC,IAAI,CACzDK,GADqD,CACjD,UAACrB,GAAD;AAAA,2BAAaA,GAAb;AAAA,OADiD,EAErDc,IAFqD,CAEhD,IAFgD,CAAxD,uBAE0BE,IAAI,CAACK,GAAL,CAAS;AAAA,eAAM,GAAN;AAAA,OAAT,EAAoBP,IAApB,CAAyB,IAAzB,CAF1B;AAGD;;;;mGACD,iBAAcQ,KAAd,EAAqBC,MAArB,EAA6BC,OAA7B,EAAsCC,IAAtC;AAAA;AAAA;AAAA;AAAA;AAAA;AACE,oBAAI,KAAKN,MAAL,CAAYO,KAAhB,EAAuB,KAAKP,MAAL,CAAYxB,GAAZ,CAAgBgC,KAAhB,0BAAwC,KAAKZ,KAA7C,SAAwDO,KAAxD,EAA+DC,MAA/D;AADzB;AAAA;AAAA,uBAGsB,KAAKJ,MAAL,CAAYS,OAAZ,CAAoBN,KAApB,EAA2BC,MAA3B,EAAmCC,OAAnC,CAHtB;;AAAA;AAGUK,gBAAAA,GAHV;AAAA,iDAIWA,GAJX;;AAAA;AAAA;AAAA;AAMI,qBAAKV,MAAL,CAAYxB,GAAZ,CAAgBO,IAAhB,0BAAuC,KAAKa,KAA5C,SAAuDO,KAAvD;AACA,qBAAKH,MAAL,CAAYxB,GAAZ,CAAgBgC,KAAhB,CAAsBF,IAAI,IAAIF,MAA9B;AACA,qBAAKJ,MAAL,CAAYxB,GAAZ,CAAgBmC,KAAhB,CAAsB,eAAtB;AARJ;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;+FAYA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACsB,KAAKpC,GAAL,CAASqC,MAAT,CAAgB,QAAhB,CADtB;;AAAA;AACE,qBAAKZ,MADP;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;gGAhEA,kBAAiBa,KAAjB;AAAA;AAAA;AAAA;AAAA;AAAA;AACQC,gBAAAA,GADR,GACc,IAAI,IAAJ,CAASD,KAAT,CADd;AAAA;AAAA,uBAEQC,GAAG,CAACC,GAAJ,EAFR;;AAAA;AAAA,kDAGSD,GAHT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;;eAqEaxC,e","sourcesContent":["import mapKeys from '@lskjs/utils/mapKeys';\nimport mapValuesKeys from '@lskjs/utils/mapValuesKeys';\nimport tryJSONparse from '@lskjs/utils/tryJSONparse';\nimport tryJSONstringify from '@lskjs/utils/tryJSONstringify';\nimport isFinite from 'lodash/isFinite';\nimport map from 'lodash/map';\nimport mapValues from 'lodash/mapValues';\nimport snakeCase from 'lodash/snakeCase';\n\nconst notNan = (a) => (isFinite(a) ? a : null);\n\nclass BaseScyllaModel {\n constructor({ app }) {\n this.app = app;\n this.log = app.log;\n if (!this.schema) this.schema = this.getSchema();\n }\n static async run(props) {\n const obj = new this(props);\n await obj.run();\n return obj;\n }\n getSchema() {\n return {};\n }\n stringifyData(data) {\n return mapValues(data, (value, key) => {\n const type = this.schema[key];\n if (!type) {\n this.log.warn('missing field in schema: ', key);\n return undefined;\n }\n if (['int', 'bigint', 'smallint'].includes(type)) return notNan(Number(value));\n if (type === 'text<json>') return tryJSONstringify(value);\n if (type === 'timestamp') return new Date(value).getTime();\n if (type.startsWith('list')) {\n const value2 = Array.isArray(value) ? value.filter((a) => a !== null && a !== undefined) : null;\n // console.log({ value, value2 });\n return value2;\n }\n return value;\n });\n }\n parseData(data) {\n return mapValuesKeys(data, (value, key) => {\n const type = this.schema[key];\n\n if (typeof value === 'undefined') return null;\n if (type === 'text<json>') return { key, value: tryJSONparse(value) };\n if (type === 'timestamp') return { key, value: new Date(value) };\n return { key, value };\n });\n }\n getSchemaString() {\n const schema = mapKeys(this.schema, (value, key) => {\n const newKey = key[0] === '_' ? `_${snakeCase(key)}` : snakeCase(key);\n if (newKey[0] === '_') return `\"${newKey}\"`;\n return newKey;\n });\n return map(schema, (value, key) => `${key} ${value === 'text<json>' ? 'text' : value}`).join(',\\n');\n }\n\n createInsertQuery(table, data) {\n const keys = Object.keys(data);\n const { defaultKeyspace } = this.scylla.config;\n return `INSERT INTO ${defaultKeyspace}.${this.table} (${keys\n .map((key) => `\"${key}\"`)\n .join(', ')}) VALUES (${keys.map(() => '?').join(', ')})`;\n }\n async execute(query, values, options, json) {\n if (this.scylla.debug) this.scylla.log.trace(`[scylla] table=${this.table}\\n`, query, values);\n try {\n const res = await this.scylla.execute(query, values, options);\n return res;\n } catch (err) {\n this.scylla.log.warn(`[scylla] table=${this.table}\\n`, query);\n this.scylla.log.trace(json || values);\n this.scylla.log.error('[scylla] err ', err);\n throw err;\n }\n }\n async run() {\n this.scylla = await this.app.module('scylla');\n }\n}\n\nexport default BaseScyllaModel;\n"],"file":"BaseScyllaModel.js"}
\No newline at end of file