@platformatic/sql-mapper 0.3.0 → 0.5.0

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 (28) hide show
  1. package/.nyc_output/1a9a820e-85c2-423f-ab84-a23bfc9fb356.json +1 -0
  2. package/.nyc_output/39c87fa8-140c-44f4-87a7-a64eab02fa7b.json +1 -0
  3. package/.nyc_output/6a44731d-1ffe-4805-87ed-104002f8ff17.json +1 -0
  4. package/.nyc_output/79576e7c-2310-40cc-a1a8-88ef212b77f4.json +1 -0
  5. package/.nyc_output/8d914586-f949-4f56-843e-05eab29b0c5f.json +1 -0
  6. package/.nyc_output/{f09cb17f-677d-476c-a4ad-99d752f52a40.json → b3beec11-4fa3-460c-bbda-8115384921d8.json} +0 -0
  7. package/.nyc_output/eb03adb6-939e-426b-a08f-e9931c03789a.json +1 -0
  8. package/.nyc_output/processinfo/{fa1bb168-c597-4e9b-a4e9-7ee95e57180c.json → 1a9a820e-85c2-423f-ab84-a23bfc9fb356.json} +1 -1
  9. package/.nyc_output/processinfo/39c87fa8-140c-44f4-87a7-a64eab02fa7b.json +1 -0
  10. package/.nyc_output/processinfo/{bc071f80-a9dc-4953-ad61-85212bb3ee1b.json → 6a44731d-1ffe-4805-87ed-104002f8ff17.json} +1 -1
  11. package/.nyc_output/processinfo/{66a21964-188d-4c46-b165-8a2c73c369ab.json → 79576e7c-2310-40cc-a1a8-88ef212b77f4.json} +1 -1
  12. package/.nyc_output/processinfo/{973243da-9f0a-4f07-871e-cbce1eb37c20.json → 8d914586-f949-4f56-843e-05eab29b0c5f.json} +1 -1
  13. package/.nyc_output/processinfo/b3beec11-4fa3-460c-bbda-8115384921d8.json +1 -0
  14. package/.nyc_output/processinfo/eb03adb6-939e-426b-a08f-e9931c03789a.json +1 -0
  15. package/.nyc_output/processinfo/index.json +1 -1
  16. package/lib/entity.js +6 -1
  17. package/mapper.d.ts +12 -8
  18. package/mapper.js +12 -4
  19. package/package.json +2 -2
  20. package/test/entity_transaction.test.js +133 -0
  21. package/test/types/mapper.test-d.ts +9 -7
  22. package/.nyc_output/5463bd60-4ec3-4213-8d4f-0ae18a860739.json +0 -1
  23. package/.nyc_output/66a21964-188d-4c46-b165-8a2c73c369ab.json +0 -1
  24. package/.nyc_output/973243da-9f0a-4f07-871e-cbce1eb37c20.json +0 -1
  25. package/.nyc_output/bc071f80-a9dc-4953-ad61-85212bb3ee1b.json +0 -1
  26. package/.nyc_output/fa1bb168-c597-4e9b-a4e9-7ee95e57180c.json +0 -1
  27. package/.nyc_output/processinfo/5463bd60-4ec3-4213-8d4f-0ae18a860739.json +0 -1
  28. package/.nyc_output/processinfo/f09cb17f-677d-476c-a4ad-99d752f52a40.json +0 -1
@@ -0,0 +1 @@
1
+ {"parent":"b3beec11-4fa3-460c-bbda-8115384921d8","pid":85221,"argv":["/Users/matteo/.nvm/versions/node/v18.12.0/bin/node","/Users/matteo/Repositories/platformatic/packages/sql-mapper/test/inserted_at_updated_at.test.js"],"execArgv":[],"cwd":"/Users/matteo/Repositories/platformatic/packages/sql-mapper","time":1667554606787,"ppid":85136,"coverageFilename":"/Users/matteo/Repositories/platformatic/packages/sql-mapper/.nyc_output/39c87fa8-140c-44f4-87a7-a64eab02fa7b.json","externalId":"test/inserted_at_updated_at.test.js","uuid":"39c87fa8-140c-44f4-87a7-a64eab02fa7b","files":["/Users/matteo/Repositories/platformatic/packages/sql-mapper/mapper.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/entity.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/utils.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/queries/sqlite.js"]}
@@ -1 +1 @@
1
- {"parent":"f09cb17f-677d-476c-a4ad-99d752f52a40","pid":71623,"argv":["/Users/matteo/.nvm/versions/node/v16.17.0/bin/node","/Users/matteo/Repositories/platformatic/packages/sql-mapper/test/hooks.test.js"],"execArgv":[],"cwd":"/Users/matteo/Repositories/platformatic/packages/sql-mapper","time":1664620449282,"ppid":71621,"coverageFilename":"/Users/matteo/Repositories/platformatic/packages/sql-mapper/.nyc_output/bc071f80-a9dc-4953-ad61-85212bb3ee1b.json","externalId":"test/hooks.test.js","uuid":"bc071f80-a9dc-4953-ad61-85212bb3ee1b","files":["/Users/matteo/Repositories/platformatic/packages/sql-mapper/mapper.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/entity.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/utils.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/queries/sqlite.js"]}
1
+ {"parent":"b3beec11-4fa3-460c-bbda-8115384921d8","pid":85220,"argv":["/Users/matteo/.nvm/versions/node/v18.12.0/bin/node","/Users/matteo/Repositories/platformatic/packages/sql-mapper/test/hooks.test.js"],"execArgv":[],"cwd":"/Users/matteo/Repositories/platformatic/packages/sql-mapper","time":1667554606604,"ppid":85136,"coverageFilename":"/Users/matteo/Repositories/platformatic/packages/sql-mapper/.nyc_output/6a44731d-1ffe-4805-87ed-104002f8ff17.json","externalId":"test/hooks.test.js","uuid":"6a44731d-1ffe-4805-87ed-104002f8ff17","files":["/Users/matteo/Repositories/platformatic/packages/sql-mapper/mapper.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/entity.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/utils.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/queries/sqlite.js"]}
@@ -1 +1 @@
1
- {"parent":"f09cb17f-677d-476c-a4ad-99d752f52a40","pid":71626,"argv":["/Users/matteo/.nvm/versions/node/v16.17.0/bin/node","/Users/matteo/Repositories/platformatic/packages/sql-mapper/test/where.test.js"],"execArgv":[],"cwd":"/Users/matteo/Repositories/platformatic/packages/sql-mapper","time":1664620450893,"ppid":71621,"coverageFilename":"/Users/matteo/Repositories/platformatic/packages/sql-mapper/.nyc_output/66a21964-188d-4c46-b165-8a2c73c369ab.json","externalId":"test/where.test.js","uuid":"66a21964-188d-4c46-b165-8a2c73c369ab","files":["/Users/matteo/Repositories/platformatic/packages/sql-mapper/mapper.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/entity.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/utils.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/queries/sqlite.js"]}
1
+ {"parent":"b3beec11-4fa3-460c-bbda-8115384921d8","pid":85223,"argv":["/Users/matteo/.nvm/versions/node/v18.12.0/bin/node","/Users/matteo/Repositories/platformatic/packages/sql-mapper/test/where.test.js"],"execArgv":[],"cwd":"/Users/matteo/Repositories/platformatic/packages/sql-mapper","time":1667554608231,"ppid":85136,"coverageFilename":"/Users/matteo/Repositories/platformatic/packages/sql-mapper/.nyc_output/79576e7c-2310-40cc-a1a8-88ef212b77f4.json","externalId":"test/where.test.js","uuid":"79576e7c-2310-40cc-a1a8-88ef212b77f4","files":["/Users/matteo/Repositories/platformatic/packages/sql-mapper/mapper.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/entity.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/utils.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/queries/sqlite.js"]}
@@ -1 +1 @@
1
- {"parent":"f09cb17f-677d-476c-a4ad-99d752f52a40","pid":71622,"argv":["/Users/matteo/.nvm/versions/node/v16.17.0/bin/node","/Users/matteo/Repositories/platformatic/packages/sql-mapper/test/entity.test.js"],"execArgv":[],"cwd":"/Users/matteo/Repositories/platformatic/packages/sql-mapper","time":1664620449077,"ppid":71621,"coverageFilename":"/Users/matteo/Repositories/platformatic/packages/sql-mapper/.nyc_output/973243da-9f0a-4f07-871e-cbce1eb37c20.json","externalId":"test/entity.test.js","uuid":"973243da-9f0a-4f07-871e-cbce1eb37c20","files":["/Users/matteo/Repositories/platformatic/packages/sql-mapper/mapper.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/entity.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/utils.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/queries/sqlite.js"]}
1
+ {"parent":"b3beec11-4fa3-460c-bbda-8115384921d8","pid":85137,"argv":["/Users/matteo/.nvm/versions/node/v18.12.0/bin/node","/Users/matteo/Repositories/platformatic/packages/sql-mapper/test/entity.test.js"],"execArgv":[],"cwd":"/Users/matteo/Repositories/platformatic/packages/sql-mapper","time":1667554598120,"ppid":85136,"coverageFilename":"/Users/matteo/Repositories/platformatic/packages/sql-mapper/.nyc_output/8d914586-f949-4f56-843e-05eab29b0c5f.json","externalId":"test/entity.test.js","uuid":"8d914586-f949-4f56-843e-05eab29b0c5f","files":["/Users/matteo/Repositories/platformatic/packages/sql-mapper/mapper.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/entity.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/utils.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/queries/sqlite.js"]}
@@ -0,0 +1 @@
1
+ {"parent":null,"pid":85136,"argv":["/Users/matteo/.nvm/versions/node/v18.12.0/bin/node","/Users/matteo/Repositories/platformatic/node_modules/.pnpm/tap@16.3.0/node_modules/tap/bin/run.js","test/entity.test.js","test/entity_transaction.test.js","test/hooks.test.js","test/inserted_at_updated_at.test.js","test/mapper.test.js","test/where.test.js"],"execArgv":[],"cwd":"/Users/matteo/Repositories/platformatic/packages/sql-mapper","time":1667554597750,"ppid":85130,"coverageFilename":"/Users/matteo/Repositories/platformatic/packages/sql-mapper/.nyc_output/b3beec11-4fa3-460c-bbda-8115384921d8.json","externalId":"","uuid":"b3beec11-4fa3-460c-bbda-8115384921d8","files":[]}
@@ -0,0 +1 @@
1
+ {"parent":"b3beec11-4fa3-460c-bbda-8115384921d8","pid":85219,"argv":["/Users/matteo/.nvm/versions/node/v18.12.0/bin/node","/Users/matteo/Repositories/platformatic/packages/sql-mapper/test/entity_transaction.test.js"],"execArgv":[],"cwd":"/Users/matteo/Repositories/platformatic/packages/sql-mapper","time":1667554606428,"ppid":85136,"coverageFilename":"/Users/matteo/Repositories/platformatic/packages/sql-mapper/.nyc_output/eb03adb6-939e-426b-a08f-e9931c03789a.json","externalId":"test/entity_transaction.test.js","uuid":"eb03adb6-939e-426b-a08f-e9931c03789a","files":["/Users/matteo/Repositories/platformatic/packages/sql-mapper/mapper.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/entity.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/utils.js","/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/queries/sqlite.js"]}
@@ -1 +1 @@
1
- {"processes":{"5463bd60-4ec3-4213-8d4f-0ae18a860739":{"parent":"f09cb17f-677d-476c-a4ad-99d752f52a40","externalId":"test/inserted_at_updated_at.test.js","children":[]},"66a21964-188d-4c46-b165-8a2c73c369ab":{"parent":"f09cb17f-677d-476c-a4ad-99d752f52a40","externalId":"test/where.test.js","children":[]},"973243da-9f0a-4f07-871e-cbce1eb37c20":{"parent":"f09cb17f-677d-476c-a4ad-99d752f52a40","externalId":"test/entity.test.js","children":[]},"bc071f80-a9dc-4953-ad61-85212bb3ee1b":{"parent":"f09cb17f-677d-476c-a4ad-99d752f52a40","externalId":"test/hooks.test.js","children":[]},"f09cb17f-677d-476c-a4ad-99d752f52a40":{"parent":null,"children":["5463bd60-4ec3-4213-8d4f-0ae18a860739","66a21964-188d-4c46-b165-8a2c73c369ab","973243da-9f0a-4f07-871e-cbce1eb37c20","bc071f80-a9dc-4953-ad61-85212bb3ee1b","fa1bb168-c597-4e9b-a4e9-7ee95e57180c"]},"fa1bb168-c597-4e9b-a4e9-7ee95e57180c":{"parent":"f09cb17f-677d-476c-a4ad-99d752f52a40","externalId":"test/mapper.test.js","children":[]}},"files":{"/Users/matteo/Repositories/platformatic/packages/sql-mapper/mapper.js":["5463bd60-4ec3-4213-8d4f-0ae18a860739","66a21964-188d-4c46-b165-8a2c73c369ab","973243da-9f0a-4f07-871e-cbce1eb37c20","bc071f80-a9dc-4953-ad61-85212bb3ee1b","fa1bb168-c597-4e9b-a4e9-7ee95e57180c"],"/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/entity.js":["5463bd60-4ec3-4213-8d4f-0ae18a860739","66a21964-188d-4c46-b165-8a2c73c369ab","973243da-9f0a-4f07-871e-cbce1eb37c20","bc071f80-a9dc-4953-ad61-85212bb3ee1b","fa1bb168-c597-4e9b-a4e9-7ee95e57180c"],"/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/utils.js":["5463bd60-4ec3-4213-8d4f-0ae18a860739","66a21964-188d-4c46-b165-8a2c73c369ab","973243da-9f0a-4f07-871e-cbce1eb37c20","bc071f80-a9dc-4953-ad61-85212bb3ee1b","fa1bb168-c597-4e9b-a4e9-7ee95e57180c"],"/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/queries/sqlite.js":["5463bd60-4ec3-4213-8d4f-0ae18a860739","66a21964-188d-4c46-b165-8a2c73c369ab","973243da-9f0a-4f07-871e-cbce1eb37c20","bc071f80-a9dc-4953-ad61-85212bb3ee1b","fa1bb168-c597-4e9b-a4e9-7ee95e57180c"]},"externalIds":{"test/inserted_at_updated_at.test.js":{"root":"5463bd60-4ec3-4213-8d4f-0ae18a860739","children":[]},"test/where.test.js":{"root":"66a21964-188d-4c46-b165-8a2c73c369ab","children":[]},"test/entity.test.js":{"root":"973243da-9f0a-4f07-871e-cbce1eb37c20","children":[]},"test/hooks.test.js":{"root":"bc071f80-a9dc-4953-ad61-85212bb3ee1b","children":[]},"test/mapper.test.js":{"root":"fa1bb168-c597-4e9b-a4e9-7ee95e57180c","children":[]}}}
1
+ {"processes":{"1a9a820e-85c2-423f-ab84-a23bfc9fb356":{"parent":"b3beec11-4fa3-460c-bbda-8115384921d8","externalId":"test/mapper.test.js","children":[]},"39c87fa8-140c-44f4-87a7-a64eab02fa7b":{"parent":"b3beec11-4fa3-460c-bbda-8115384921d8","externalId":"test/inserted_at_updated_at.test.js","children":[]},"6a44731d-1ffe-4805-87ed-104002f8ff17":{"parent":"b3beec11-4fa3-460c-bbda-8115384921d8","externalId":"test/hooks.test.js","children":[]},"79576e7c-2310-40cc-a1a8-88ef212b77f4":{"parent":"b3beec11-4fa3-460c-bbda-8115384921d8","externalId":"test/where.test.js","children":[]},"8d914586-f949-4f56-843e-05eab29b0c5f":{"parent":"b3beec11-4fa3-460c-bbda-8115384921d8","externalId":"test/entity.test.js","children":[]},"b3beec11-4fa3-460c-bbda-8115384921d8":{"parent":null,"children":["1a9a820e-85c2-423f-ab84-a23bfc9fb356","39c87fa8-140c-44f4-87a7-a64eab02fa7b","6a44731d-1ffe-4805-87ed-104002f8ff17","79576e7c-2310-40cc-a1a8-88ef212b77f4","8d914586-f949-4f56-843e-05eab29b0c5f","eb03adb6-939e-426b-a08f-e9931c03789a"]},"eb03adb6-939e-426b-a08f-e9931c03789a":{"parent":"b3beec11-4fa3-460c-bbda-8115384921d8","externalId":"test/entity_transaction.test.js","children":[]}},"files":{"/Users/matteo/Repositories/platformatic/packages/sql-mapper/mapper.js":["1a9a820e-85c2-423f-ab84-a23bfc9fb356","39c87fa8-140c-44f4-87a7-a64eab02fa7b","6a44731d-1ffe-4805-87ed-104002f8ff17","79576e7c-2310-40cc-a1a8-88ef212b77f4","8d914586-f949-4f56-843e-05eab29b0c5f","eb03adb6-939e-426b-a08f-e9931c03789a"],"/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/entity.js":["1a9a820e-85c2-423f-ab84-a23bfc9fb356","39c87fa8-140c-44f4-87a7-a64eab02fa7b","6a44731d-1ffe-4805-87ed-104002f8ff17","79576e7c-2310-40cc-a1a8-88ef212b77f4","8d914586-f949-4f56-843e-05eab29b0c5f","eb03adb6-939e-426b-a08f-e9931c03789a"],"/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/utils.js":["1a9a820e-85c2-423f-ab84-a23bfc9fb356","39c87fa8-140c-44f4-87a7-a64eab02fa7b","6a44731d-1ffe-4805-87ed-104002f8ff17","79576e7c-2310-40cc-a1a8-88ef212b77f4","8d914586-f949-4f56-843e-05eab29b0c5f","eb03adb6-939e-426b-a08f-e9931c03789a"],"/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/queries/sqlite.js":["1a9a820e-85c2-423f-ab84-a23bfc9fb356","39c87fa8-140c-44f4-87a7-a64eab02fa7b","6a44731d-1ffe-4805-87ed-104002f8ff17","79576e7c-2310-40cc-a1a8-88ef212b77f4","8d914586-f949-4f56-843e-05eab29b0c5f","eb03adb6-939e-426b-a08f-e9931c03789a"]},"externalIds":{"test/mapper.test.js":{"root":"1a9a820e-85c2-423f-ab84-a23bfc9fb356","children":[]},"test/inserted_at_updated_at.test.js":{"root":"39c87fa8-140c-44f4-87a7-a64eab02fa7b","children":[]},"test/hooks.test.js":{"root":"6a44731d-1ffe-4805-87ed-104002f8ff17","children":[]},"test/where.test.js":{"root":"79576e7c-2310-40cc-a1a8-88ef212b77f4","children":[]},"test/entity.test.js":{"root":"8d914586-f949-4f56-843e-05eab29b0c5f","children":[]},"test/entity_transaction.test.js":{"root":"eb03adb6-939e-426b-a08f-e9931c03789a","children":[]}}}
package/lib/entity.js CHANGED
@@ -6,7 +6,7 @@ const {
6
6
  toSingular
7
7
  } = require('./utils')
8
8
 
9
- function createMapper (db, sql, log, table, fields, primaryKey, relations, queries, autoTimestamp) {
9
+ function createMapper (defaultDb, sql, log, table, fields, primaryKey, relations, queries, autoTimestamp) {
10
10
  const entityName = toSingular(table)
11
11
 
12
12
  // Fields remapping
@@ -55,6 +55,7 @@ function createMapper (db, sql, log, table, fields, primaryKey, relations, queri
55
55
  }
56
56
 
57
57
  async function save (args) {
58
+ const db = args.tx || defaultDb
58
59
  if (args.input === undefined) {
59
60
  throw new Error('Input not provided.')
60
61
  }
@@ -81,6 +82,7 @@ function createMapper (db, sql, log, table, fields, primaryKey, relations, queri
81
82
  }
82
83
 
83
84
  async function insert (args) {
85
+ const db = args.tx || defaultDb
84
86
  const fieldsToRetrieve = computeFields(args.fields).map((f) => sql.ident(f))
85
87
  const inputs = args.inputs
86
88
  // This else is skipped on MySQL because of https://github.com/ForbesLindesay/atdatabases/issues/221
@@ -186,6 +188,7 @@ function createMapper (db, sql, log, table, fields, primaryKey, relations, queri
186
188
  }
187
189
 
188
190
  async function find (opts = {}) {
191
+ const db = opts.tx || defaultDb
189
192
  const fieldsToRetrieve = computeFields(opts.fields).map((f) => sql.ident(f))
190
193
  const criteria = computeCriteria(opts)
191
194
  let query = sql`
@@ -219,6 +222,7 @@ function createMapper (db, sql, log, table, fields, primaryKey, relations, queri
219
222
  }
220
223
 
221
224
  async function count (opts = {}) {
225
+ const db = opts.tx || defaultDb
222
226
  let totalCountQuery = null
223
227
  totalCountQuery = sql`
224
228
  SELECT COUNT(*) AS total
@@ -233,6 +237,7 @@ function createMapper (db, sql, log, table, fields, primaryKey, relations, queri
233
237
  }
234
238
 
235
239
  async function _delete (opts) {
240
+ const db = opts.tx || defaultDb
236
241
  const fieldsToRetrieve = computeFields(opts.fields).map((f) => sql.ident(f))
237
242
  const criteria = computeCriteria(opts)
238
243
  const res = await queries.deleteAll(db, sql, table, criteria, fieldsToRetrieve)
package/mapper.d.ts CHANGED
@@ -119,6 +119,10 @@ interface Find<EntityFields> {
119
119
  * Number of entities to skip.
120
120
  */
121
121
  offset?: number,
122
+ /**
123
+ * If present, the entity partecipates in transaction
124
+ */
125
+ tx?: Database
122
126
  }): Promise<Partial<EntityFields>[]>
123
127
  }
124
128
 
@@ -235,13 +239,11 @@ export interface Entity<EntityFields = any> {
235
239
 
236
240
 
237
241
  export interface EntityHooks<EntityFields = any> {
238
- [entityName: string]: {
239
- find?: Find<EntityFields>,
240
- insert?: Insert<EntityFields>,
241
- save?: Save<EntityFields>,
242
- delete?: Delete<EntityFields>,
243
- count?: Count,
244
- }
242
+ find?: Find<EntityFields>,
243
+ insert?: Insert<EntityFields>,
244
+ save?: Save<EntityFields>,
245
+ delete?: Delete<EntityFields>,
246
+ count?: Count,
245
247
  }
246
248
 
247
249
  export interface SQLMapperPluginOptions {
@@ -268,7 +270,9 @@ export interface SQLMapperPluginOptions {
268
270
  /**
269
271
  * For each entity name (like `Page`) you can customize any of the entity API function. Your custom function will receive the original function as first parameter, and then all the other parameters passed to it.
270
272
  */
271
- hooks?: EntityHooks,
273
+ hooks?: {
274
+ [entityName: string]: EntityHooks
275
+ },
272
276
  /**
273
277
  * An async function that is called after the connection is established.
274
278
  */
package/mapper.js CHANGED
@@ -6,10 +6,11 @@ const fp = require('fastify-plugin')
6
6
 
7
7
  // Ignore the function as it is only used only for MySQL and PostgreSQL
8
8
  /* istanbul ignore next */
9
- async function buildConnection (log, createConnectionPool, connectionString) {
9
+ async function buildConnection (log, createConnectionPool, connectionString, poolSize) {
10
10
  const db = await createConnectionPool({
11
11
  connectionString,
12
12
  bigIntMode: 'string',
13
+ poolSize,
13
14
  onQueryStart: (_query, { text, values }) => {
14
15
  log.trace({
15
16
  query: {
@@ -38,7 +39,7 @@ async function buildConnection (log, createConnectionPool, connectionString) {
38
39
  return db
39
40
  }
40
41
 
41
- async function connect ({ connectionString, log, onDatabaseLoad, ignore = {}, autoTimestamp = true, hooks = {} }) {
42
+ async function connect ({ connectionString, log, onDatabaseLoad, poolSize = 10, ignore = {}, autoTimestamp = true, hooks = {} }) {
42
43
  // TODO validate config using the schema
43
44
  if (!connectionString) {
44
45
  throw new Error('connectionString is required')
@@ -51,13 +52,13 @@ async function connect ({ connectionString, log, onDatabaseLoad, ignore = {}, au
51
52
  /* istanbul ignore next */
52
53
  if (connectionString.indexOf('postgres') === 0) {
53
54
  const createConnectionPoolPg = require('@databases/pg')
54
- db = await buildConnection(log, createConnectionPoolPg, connectionString)
55
+ db = await buildConnection(log, createConnectionPoolPg, connectionString, poolSize)
55
56
  sql = createConnectionPoolPg.sql
56
57
  queries = queriesFactory.pg
57
58
  db.isPg = true
58
59
  } else if (connectionString.indexOf('mysql') === 0) {
59
60
  const createConnectionPoolMysql = require('@databases/mysql')
60
- db = await buildConnection(log, createConnectionPoolMysql, connectionString)
61
+ db = await buildConnection(log, createConnectionPoolMysql, connectionString, poolSize)
61
62
  sql = createConnectionPoolMysql.sql
62
63
  const version = (await db.query(sql`SELECT VERSION()`))[0]['VERSION()']
63
64
  db.version = version
@@ -72,6 +73,13 @@ async function connect ({ connectionString, log, onDatabaseLoad, ignore = {}, au
72
73
  const sqlite = require('@databases/sqlite')
73
74
  const path = connectionString.replace('sqlite://', '')
74
75
  db = sqlite(connectionString === 'sqlite://:memory:' ? undefined : path)
76
+ db._database.on('trace', sql => {
77
+ log.trace({
78
+ query: {
79
+ text: sql
80
+ }
81
+ }, 'query')
82
+ })
75
83
  sql = sqlite.sql
76
84
  queries = queriesFactory.sqlite
77
85
  db.isSQLite = true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platformatic/sql-mapper",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "A data mapper utility for SQL databases",
5
5
  "main": "mapper.js",
6
6
  "repository": {
@@ -24,7 +24,7 @@
24
24
  "@databases/mysql": "^5.2.0",
25
25
  "@databases/pg": "^5.3.0",
26
26
  "@databases/sql": "^3.2.0",
27
- "@databases/sqlite": "^4.0.0",
27
+ "@databases/sqlite": "^4.0.2",
28
28
  "camelcase": "^6.0.0",
29
29
  "fastify-plugin": "^4.1.0",
30
30
  "inflected": "^2.1.0"
@@ -0,0 +1,133 @@
1
+ 'use strict'
2
+
3
+ const { test } = require('tap')
4
+ const { clear, connInfo, isSQLite } = require('./helper')
5
+ const { connect } = require('..')
6
+
7
+ const fakeLogger = {
8
+ trace: () => {},
9
+ error: () => {}
10
+ }
11
+
12
+ test('entity transactions', async ({ equal, same, teardown, rejects }) => {
13
+ async function onDatabaseLoad (db, sql) {
14
+ await clear(db, sql)
15
+ teardown(() => db.dispose())
16
+ if (isSQLite) {
17
+ await db.query(sql`CREATE TABLE pages (
18
+ id INTEGER PRIMARY KEY,
19
+ title VARCHAR(42)
20
+ );`)
21
+ } else {
22
+ await db.query(sql`CREATE TABLE pages (
23
+ id SERIAL PRIMARY KEY,
24
+ title VARCHAR(255) NOT NULL
25
+ );`)
26
+ }
27
+ await db.query(sql`INSERT INTO pages (title) VALUES ('foo')`)
28
+ await db.query(sql`INSERT INTO pages (title) VALUES ('bar')`)
29
+ }
30
+ const mapper = await connect({
31
+ connectionString: connInfo.connectionString,
32
+ log: fakeLogger,
33
+ onDatabaseLoad,
34
+ ignore: {},
35
+ hooks: {}
36
+ })
37
+ const pageEntity = mapper.entities.page
38
+
39
+ // insert + rollback
40
+ {
41
+ const findResult = await pageEntity.find({ fields: ['title'] })
42
+ same(findResult, [{ title: 'foo' }, { title: 'bar' }])
43
+
44
+ try {
45
+ console.log('isSQLite', mapper.db.isSQLite)
46
+ await mapper.db.tx(async tx => {
47
+ same(await pageEntity.save({
48
+ input: { title: 'new page' },
49
+ fields: ['title'],
50
+ tx
51
+ }), { title: 'new page' })
52
+ const findResult = await pageEntity.find({ fields: ['title'], tx })
53
+ same(findResult, [{ title: 'foo' }, { title: 'bar' }, { title: 'new page' }])
54
+ throw new Error('rollback')
55
+ })
56
+ } catch (e) {
57
+ // rollback
58
+ }
59
+
60
+ const afterRollback = await pageEntity.find({ fields: ['title'] })
61
+ same(afterRollback, [{ title: 'foo' }, { title: 'bar' }])
62
+ }
63
+
64
+ // update + rollback
65
+ {
66
+ const findResult = await pageEntity.find({ fields: ['id', 'title'], where: { id: { eq: 1 } } })
67
+ same(findResult, [{ id: 1, title: 'foo' }])
68
+
69
+ try {
70
+ await mapper.db.tx(async tx => {
71
+ same(await pageEntity.save({
72
+ input: { id: 1, title: 'changed' },
73
+ fields: ['id', 'title'],
74
+ tx
75
+ }), { id: 1, title: 'changed' })
76
+ const findResult = await pageEntity.find({ fields: ['id', 'title'], where: { id: { eq: 1 } }, tx })
77
+ same(findResult, [{ id: 1, title: 'changed' }])
78
+ throw new Error('rollback')
79
+ })
80
+ } catch (e) {
81
+ // rollback
82
+ }
83
+ const afterRollback = await pageEntity.find({ fields: ['id', 'title'], where: { id: { eq: 1 } } })
84
+ same(afterRollback, [{ id: 1, title: 'foo' }])
85
+ }
86
+
87
+ // delete
88
+ {
89
+ const findResult = await pageEntity.find({ fields: ['title'] })
90
+ same(findResult, [{ title: 'foo' }, { title: 'bar' }])
91
+
92
+ try {
93
+ await mapper.db.tx(async tx => {
94
+ same(await pageEntity.delete({
95
+ where: {
96
+ id: { eq: 1 }
97
+ },
98
+ tx
99
+ }), [{ id: 1, title: 'foo' }])
100
+ const findResult = await pageEntity.find({ fields: ['id', 'title'], where: { id: { eq: 1 } }, tx })
101
+ same(findResult, [])
102
+ throw new Error('rollback')
103
+ })
104
+ } catch (e) {
105
+ // rollback
106
+ }
107
+ const afterRollback = await pageEntity.find({ fields: ['title'] })
108
+ same(afterRollback, [{ title: 'foo' }, { title: 'bar' }])
109
+ }
110
+
111
+ // count
112
+ {
113
+ const countResult = await pageEntity.count()
114
+ same(countResult, 2)
115
+ try {
116
+ await mapper.db.tx(async tx => {
117
+ same(await pageEntity.save({
118
+ input: { title: 'new page' },
119
+ fields: ['title'],
120
+ tx
121
+ }), { title: 'new page' })
122
+ const countResult = await pageEntity.count({ tx })
123
+ same(countResult, 3)
124
+ throw new Error('rollback')
125
+ })
126
+ } catch (e) {
127
+ // rollback
128
+ }
129
+
130
+ const afterRollback = await pageEntity.count()
131
+ same(afterRollback, 2)
132
+ }
133
+ })
@@ -41,18 +41,20 @@ expectType<Partial<EntityFields>>(await entity.save({ input: { id: 1, name: 'tes
41
41
  expectType<Partial<EntityFields>[]>(await entity.delete())
42
42
  expectType<number>(await entity.count())
43
43
 
44
+ const entityHooks: EntityHooks = {
45
+ async find(options: any): Promise<any[]> { return [] },
46
+ async insert(options: { inputs: any[], fields?: string[] }): Promise<any[]> { return [] },
47
+ async save(options: { input: any, fields?: string[] }): Promise<any> { return {} },
48
+ async delete(options?: { where: WhereCondition, fields: string[] }): Promise<any[]> { return [] },
49
+ async count(options?: { where?: WhereCondition }): Promise<number> { return 0 },
50
+ }
51
+ expectType<EntityHooks>(entityHooks)
44
52
  expectType<SQLMapperPluginInterface>(await connect({ connectionString: '' }))
45
53
  expectType<SQLMapperPluginInterface>(await connect({ connectionString: '', autoTimestamp: true }))
46
54
  expectType<SQLMapperPluginInterface>(await connect({ connectionString: '', hooks: {} }))
47
55
  expectType<SQLMapperPluginInterface>(await connect({
48
56
  connectionString: '', hooks: {
49
- Page: {
50
- async find(options: any): Promise<any[]> { return [] },
51
- async insert(options: { inputs: any[], fields?: string[] }): Promise<any[]> { return [] },
52
- async save(options: { input: any, fields?: string[] }): Promise<any> { return {} },
53
- async delete(options?: { where: WhereCondition, fields: string[] }): Promise<any[]> { return [] },
54
- async count(options?: { where?: WhereCondition }): Promise<number> { return 0 },
55
- }
57
+ Page: entityHooks
56
58
  }
57
59
  }))
58
60
  expectType<SQLMapperPluginInterface>(await connect({ connectionString: '', ignore: {} }))
@@ -1 +0,0 @@
1
- {"/Users/matteo/Repositories/platformatic/packages/sql-mapper/mapper.js":{"path":"/Users/matteo/Repositories/platformatic/packages/sql-mapper/mapper.js","statementMap":{"0":{"start":{"line":3,"column":20},"end":{"line":3,"column":43}},"1":{"start":{"line":4,"column":23},"end":{"line":4,"column":47}},"2":{"start":{"line":5,"column":11},"end":{"line":5,"column":36}},"3":{"start":{"line":43,"column":2},"end":{"line":45,"column":3}},"4":{"start":{"line":44,"column":4},"end":{"line":44,"column":51}},"5":{"start":{"line":82,"column":19},"end":{"line":82,"column":21}},"6":{"start":{"line":84,"column":2},"end":{"line":118,"column":3}},"7":{"start":{"line":86,"column":4},"end":{"line":88,"column":5}},"8":{"start":{"line":87,"column":6},"end":{"line":87,"column":35}},"9":{"start":{"line":90,"column":19},"end":{"line":90,"column":52}},"10":{"start":{"line":92,"column":4},"end":{"line":114,"column":5}},"11":{"start":{"line":99,"column":6},"end":{"line":101,"column":7}},"12":{"start":{"line":100,"column":8},"end":{"line":100,"column":16}},"13":{"start":{"line":103,"column":21},"end":{"line":103,"column":104}},"14":{"start":{"line":105,"column":6},"end":{"line":107,"column":7}},"15":{"start":{"line":106,"column":8},"end":{"line":106,"column":76}},"16":{"start":{"line":108,"column":6},"end":{"line":108,"column":44}},"17":{"start":{"line":109,"column":6},"end":{"line":113,"column":7}},"18":{"start":{"line":110,"column":8},"end":{"line":110,"column":63}},"19":{"start":{"line":111,"column":13},"end":{"line":113,"column":7}},"20":{"start":{"line":112,"column":8},"end":{"line":112,"column":71}},"21":{"start":{"line":120,"column":2},"end":{"line":125,"column":3}},"22":{"start":{"line":128,"column":19},"end":{"line":128,"column":39}},"23":{"start":{"line":129,"column":4},"end":{"line":131,"column":5}},"24":{"start":{"line":130,"column":6},"end":{"line":130,"column":57}},"25":{"start":{"line":132,"column":4},"end":{"line":136,"column":5}},"26":{"start":{"line":133,"column":6},"end":{"line":135,"column":7}},"27":{"start":{"line":134,"column":8},"end":{"line":134,"column":56}},"28":{"start":{"line":141,"column":17},"end":{"line":144,"column":4}},"29":{"start":{"line":146,"column":2},"end":{"line":146,"column":40}},"30":{"start":{"line":146,"column":20},"end":{"line":146,"column":39}},"31":{"start":{"line":149,"column":2},"end":{"line":149,"column":38}},"32":{"start":{"line":152,"column":0},"end":{"line":152,"column":30}},"33":{"start":{"line":153,"column":0},"end":{"line":153,"column":32}},"34":{"start":{"line":154,"column":0},"end":{"line":154,"column":38}},"35":{"start":{"line":155,"column":0},"end":{"line":155,"column":45}}},"fnMap":{"0":{"name":"connect","decl":{"start":{"line":41,"column":15},"end":{"line":41,"column":22}},"loc":{"start":{"line":41,"column":114},"end":{"line":138,"column":1}},"line":41},"1":{"name":"addEntityHooks","decl":{"start":{"line":127,"column":11},"end":{"line":127,"column":25}},"loc":{"start":{"line":127,"column":46},"end":{"line":137,"column":3}},"line":127},"2":{"name":"sqlMapper","decl":{"start":{"line":140,"column":15},"end":{"line":140,"column":24}},"loc":{"start":{"line":140,"column":37},"end":{"line":150,"column":1}},"line":140},"3":{"name":"(anonymous_3)","decl":{"start":{"line":146,"column":14},"end":{"line":146,"column":15}},"loc":{"start":{"line":146,"column":20},"end":{"line":146,"column":39}},"line":146}},"branchMap":{"0":{"loc":{"start":{"line":41,"column":65},"end":{"line":41,"column":76}},"type":"default-arg","locations":[{"start":{"line":41,"column":74},"end":{"line":41,"column":76}}],"line":41},"1":{"loc":{"start":{"line":41,"column":78},"end":{"line":41,"column":98}},"type":"default-arg","locations":[{"start":{"line":41,"column":94},"end":{"line":41,"column":98}}],"line":41},"2":{"loc":{"start":{"line":41,"column":100},"end":{"line":41,"column":110}},"type":"default-arg","locations":[{"start":{"line":41,"column":108},"end":{"line":41,"column":110}}],"line":41},"3":{"loc":{"start":{"line":43,"column":2},"end":{"line":45,"column":3}},"type":"if","locations":[{"start":{"line":43,"column":2},"end":{"line":45,"column":3}},{"start":{"line":43,"column":2},"end":{"line":45,"column":3}}],"line":43},"4":{"loc":{"start":{"line":86,"column":4},"end":{"line":88,"column":5}},"type":"if","locations":[{"start":{"line":86,"column":4},"end":{"line":88,"column":5}}],"line":86},"5":{"loc":{"start":{"line":99,"column":6},"end":{"line":101,"column":7}},"type":"if","locations":[{"start":{"line":99,"column":6},"end":{"line":101,"column":7}},{"start":{"line":99,"column":6},"end":{"line":101,"column":7}}],"line":99},"6":{"loc":{"start":{"line":103,"column":84},"end":{"line":103,"column":103}},"type":"binary-expr","locations":[{"start":{"line":103,"column":84},"end":{"line":103,"column":97}},{"start":{"line":103,"column":101},"end":{"line":103,"column":103}}],"line":103},"7":{"loc":{"start":{"line":105,"column":6},"end":{"line":107,"column":7}},"type":"if","locations":[{"start":{"line":105,"column":6},"end":{"line":107,"column":7}},{"start":{"line":105,"column":6},"end":{"line":107,"column":7}}],"line":105},"8":{"loc":{"start":{"line":109,"column":6},"end":{"line":113,"column":7}},"type":"if","locations":[{"start":{"line":109,"column":6},"end":{"line":113,"column":7}},{"start":{"line":109,"column":6},"end":{"line":113,"column":7}}],"line":109},"9":{"loc":{"start":{"line":111,"column":13},"end":{"line":113,"column":7}},"type":"if","locations":[{"start":{"line":111,"column":13},"end":{"line":113,"column":7}},{"start":{"line":111,"column":13},"end":{"line":113,"column":7}}],"line":111},"10":{"loc":{"start":{"line":129,"column":4},"end":{"line":131,"column":5}},"type":"if","locations":[{"start":{"line":129,"column":4},"end":{"line":131,"column":5}},{"start":{"line":129,"column":4},"end":{"line":131,"column":5}}],"line":129},"11":{"loc":{"start":{"line":133,"column":6},"end":{"line":135,"column":7}},"type":"if","locations":[{"start":{"line":133,"column":6},"end":{"line":135,"column":7}},{"start":{"line":133,"column":6},"end":{"line":135,"column":7}}],"line":133},"12":{"loc":{"start":{"line":133,"column":10},"end":{"line":133,"column":35}},"type":"binary-expr","locations":[{"start":{"line":133,"column":10},"end":{"line":133,"column":20}},{"start":{"line":133,"column":24},"end":{"line":133,"column":35}}],"line":133}},"s":{"0":1,"1":1,"2":1,"3":2,"4":0,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":0,"13":2,"14":2,"15":0,"16":2,"17":2,"18":0,"19":2,"20":0,"21":2,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":1,"33":1,"34":1,"35":1},"f":{"0":2,"1":0,"2":0,"3":0},"b":{"0":[2],"1":[2],"2":[2],"3":[0,2],"4":[2],"5":[0,2],"6":[2,2],"7":[0,2],"8":[0,2],"9":[0,2],"10":[0,0],"11":[0,0],"12":[0,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"8b27db8cb1e72f286954204fa102d43b2f23da96","contentHash":"8b1ffda4397fb358f8e38b72743e0f9701a99bc702afed78e16241275f32870d"},"/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/entity.js":{"path":"/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/entity.js","statementMap":{"0":{"start":{"line":3,"column":18},"end":{"line":3,"column":38}},"1":{"start":{"line":4,"column":24},"end":{"line":4,"column":44}},"2":{"start":{"line":7,"column":4},"end":{"line":7,"column":22}},"3":{"start":{"line":10,"column":21},"end":{"line":10,"column":38}},"4":{"start":{"line":13,"column":29},"end":{"line":13,"column":31}},"5":{"start":{"line":14,"column":26},"end":{"line":14,"column":28}},"6":{"start":{"line":15,"column":27},"end":{"line":22,"column":8}},"7":{"start":{"line":16,"column":18},"end":{"line":16,"column":32}},"8":{"start":{"line":17,"column":4},"end":{"line":17,"column":28}},"9":{"start":{"line":18,"column":4},"end":{"line":18,"column":35}},"10":{"start":{"line":19,"column":4},"end":{"line":19,"column":32}},"11":{"start":{"line":20,"column":4},"end":{"line":20,"column":33}},"12":{"start":{"line":21,"column":4},"end":{"line":21,"column":14}},"13":{"start":{"line":25,"column":21},"end":{"line":25,"column":23}},"14":{"start":{"line":26,"column":4},"end":{"line":37,"column":5}},"15":{"start":{"line":27,"column":20},"end":{"line":27,"column":30}},"16":{"start":{"line":28,"column":19},"end":{"line":28,"column":39}},"17":{"start":{"line":29,"column":6},"end":{"line":35,"column":7}},"18":{"start":{"line":30,"column":8},"end":{"line":34,"column":9}},"19":{"start":{"line":31,"column":10},"end":{"line":31,"column":22}},"20":{"start":{"line":33,"column":10},"end":{"line":33,"column":49}},"21":{"start":{"line":36,"column":6},"end":{"line":36,"column":30}},"22":{"start":{"line":38,"column":4},"end":{"line":38,"column":19}},"23":{"start":{"line":42,"column":4},"end":{"line":44,"column":5}},"24":{"start":{"line":43,"column":6},"end":{"line":43,"column":19}},"25":{"start":{"line":45,"column":22},"end":{"line":45,"column":24}},"26":{"start":{"line":46,"column":4},"end":{"line":53,"column":5}},"27":{"start":{"line":47,"column":18},"end":{"line":47,"column":29}},"28":{"start":{"line":48,"column":21},"end":{"line":48,"column":44}},"29":{"start":{"line":49,"column":6},"end":{"line":51,"column":7}},"30":{"start":{"line":50,"column":8},"end":{"line":50,"column":32}},"31":{"start":{"line":52,"column":6},"end":{"line":52,"column":31}},"32":{"start":{"line":54,"column":4},"end":{"line":54,"column":20}},"33":{"start":{"line":58,"column":4},"end":{"line":60,"column":5}},"34":{"start":{"line":59,"column":6},"end":{"line":59,"column":44}},"35":{"start":{"line":62,"column":29},"end":{"line":62,"column":80}},"36":{"start":{"line":62,"column":67},"end":{"line":62,"column":79}},"37":{"start":{"line":63,"column":18},"end":{"line":63,"column":38}},"38":{"start":{"line":65,"column":4},"end":{"line":68,"column":5}},"39":{"start":{"line":66,"column":6},"end":{"line":66,"column":22}},"40":{"start":{"line":67,"column":6},"end":{"line":67,"column":28}},"41":{"start":{"line":69,"column":4},"end":{"line":80,"column":5}},"42":{"start":{"line":70,"column":18},"end":{"line":70,"column":94}},"43":{"start":{"line":71,"column":6},"end":{"line":71,"column":27}},"44":{"start":{"line":73,"column":6},"end":{"line":77,"column":7}},"45":{"start":{"line":76,"column":8},"end":{"line":76,"column":31}},"46":{"start":{"line":78,"column":18},"end":{"line":78,"column":147}},"47":{"start":{"line":79,"column":6},"end":{"line":79,"column":27}},"48":{"start":{"line":84,"column":29},"end":{"line":84,"column":80}},"49":{"start":{"line":84,"column":67},"end":{"line":84,"column":79}},"50":{"start":{"line":85,"column":19},"end":{"line":85,"column":30}},"51":{"start":{"line":88,"column":4},"end":{"line":98,"column":5}},"52":{"start":{"line":89,"column":18},"end":{"line":89,"column":28}},"53":{"start":{"line":90,"column":6},"end":{"line":97,"column":7}},"54":{"start":{"line":91,"column":8},"end":{"line":93,"column":9}},"55":{"start":{"line":92,"column":10},"end":{"line":92,"column":32}},"56":{"start":{"line":94,"column":8},"end":{"line":96,"column":9}},"57":{"start":{"line":95,"column":10},"end":{"line":95,"column":31}},"58":{"start":{"line":118,"column":4},"end":{"line":120,"column":5}},"59":{"start":{"line":119,"column":6},"end":{"line":119,"column":43}},"60":{"start":{"line":127,"column":28},"end":{"line":132,"column":6}},"61":{"start":{"line":128,"column":6},"end":{"line":130,"column":7}},"62":{"start":{"line":128,"column":39},"end":{"line":128,"column":69}},"63":{"start":{"line":129,"column":8},"end":{"line":129,"column":20}},"64":{"start":{"line":131,"column":6},"end":{"line":131,"column":35}},"65":{"start":{"line":134,"column":16},"end":{"line":134,"column":40}},"66":{"start":{"line":135,"column":4},"end":{"line":135,"column":25}},"67":{"start":{"line":136,"column":29},"end":{"line":136,"column":37}},"68":{"start":{"line":137,"column":4},"end":{"line":137,"column":27}},"69":{"start":{"line":140,"column":19},"end":{"line":149,"column":3}},"70":{"start":{"line":152,"column":18},"end":{"line":152,"column":34}},"71":{"start":{"line":153,"column":21},"end":{"line":153,"column":23}},"72":{"start":{"line":154,"column":4},"end":{"line":167,"column":5}},"73":{"start":{"line":155,"column":20},"end":{"line":155,"column":30}},"74":{"start":{"line":156,"column":20},"end":{"line":156,"column":40}},"75":{"start":{"line":157,"column":6},"end":{"line":166,"column":7}},"76":{"start":{"line":158,"column":25},"end":{"line":158,"column":38}},"77":{"start":{"line":164,"column":26},"end":{"line":164,"column":39}},"78":{"start":{"line":165,"column":8},"end":{"line":165,"column":133}},"79":{"start":{"line":168,"column":4},"end":{"line":168,"column":19}},"80":{"start":{"line":172,"column":4},"end":{"line":177,"column":5}},"81":{"start":{"line":173,"column":6},"end":{"line":176,"column":10}},"82":{"start":{"line":174,"column":25},"end":{"line":174,"column":59}},"83":{"start":{"line":189,"column":29},"end":{"line":189,"column":80}},"84":{"start":{"line":189,"column":67},"end":{"line":189,"column":79}},"85":{"start":{"line":190,"column":21},"end":{"line":190,"column":42}},"86":{"start":{"line":191,"column":16},"end":{"line":194,"column":5}},"87":{"start":{"line":196,"column":4},"end":{"line":198,"column":5}},"88":{"start":{"line":197,"column":6},"end":{"line":197,"column":67}},"89":{"start":{"line":200,"column":4},"end":{"line":206,"column":5}},"90":{"start":{"line":201,"column":22},"end":{"line":204,"column":8}},"91":{"start":{"line":202,"column":22},"end":{"line":202,"column":50}},"92":{"start":{"line":203,"column":8},"end":{"line":203,"column":85}},"93":{"start":{"line":205,"column":6},"end":{"line":205,"column":66}},"94":{"start":{"line":208,"column":4},"end":{"line":210,"column":5}},"95":{"start":{"line":209,"column":6},"end":{"line":209,"column":69}},"96":{"start":{"line":212,"column":16},"end":{"line":212,"column":37}},"97":{"start":{"line":213,"column":4},"end":{"line":213,"column":29}},"98":{"start":{"line":217,"column":26},"end":{"line":217,"column":30}},"99":{"start":{"line":218,"column":4},"end":{"line":221,"column":7}},"100":{"start":{"line":222,"column":21},"end":{"line":222,"column":42}},"101":{"start":{"line":223,"column":4},"end":{"line":225,"column":5}},"102":{"start":{"line":224,"column":6},"end":{"line":224,"column":87}},"103":{"start":{"line":226,"column":24},"end":{"line":226,"column":55}},"104":{"start":{"line":227,"column":4},"end":{"line":227,"column":17}},"105":{"start":{"line":231,"column":29},"end":{"line":231,"column":80}},"106":{"start":{"line":231,"column":67},"end":{"line":231,"column":79}},"107":{"start":{"line":232,"column":21},"end":{"line":232,"column":42}},"108":{"start":{"line":233,"column":16},"end":{"line":233,"column":83}},"109":{"start":{"line":234,"column":4},"end":{"line":234,"column":29}},"110":{"start":{"line":237,"column":2},"end":{"line":252,"column":3}},"111":{"start":{"line":257,"column":18},"end":{"line":257,"column":99}},"112":{"start":{"line":257,"column":76},"end":{"line":257,"column":98}},"113":{"start":{"line":258,"column":17},"end":{"line":267,"column":8}},"114":{"start":{"line":259,"column":4},"end":{"line":262,"column":5}},"115":{"start":{"line":263,"column":4},"end":{"line":265,"column":5}},"116":{"start":{"line":264,"column":6},"end":{"line":264,"column":50}},"117":{"start":{"line":266,"column":4},"end":{"line":266,"column":14}},"118":{"start":{"line":269,"column":27},"end":{"line":269,"column":29}},"119":{"start":{"line":271,"column":26},"end":{"line":271,"column":71}},"120":{"start":{"line":274,"column":2},"end":{"line":304,"column":3}},"121":{"start":{"line":275,"column":18},"end":{"line":275,"column":48}},"122":{"start":{"line":286,"column":4},"end":{"line":298,"column":5}},"123":{"start":{"line":287,"column":6},"end":{"line":287,"column":41}},"124":{"start":{"line":297,"column":6},"end":{"line":297,"column":29}},"125":{"start":{"line":300,"column":4},"end":{"line":303,"column":5}},"126":{"start":{"line":301,"column":6},"end":{"line":301,"column":29}},"127":{"start":{"line":302,"column":6},"end":{"line":302,"column":39}},"128":{"start":{"line":306,"column":17},"end":{"line":306,"column":112}},"129":{"start":{"line":307,"column":2},"end":{"line":307,"column":37}},"130":{"start":{"line":309,"column":2},"end":{"line":309,"column":15}},"131":{"start":{"line":312,"column":0},"end":{"line":312,"column":28}}},"fnMap":{"0":{"name":"createMapper","decl":{"start":{"line":9,"column":9},"end":{"line":9,"column":21}},"loc":{"start":{"line":9,"column":99},"end":{"line":253,"column":1}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":15,"column":54},"end":{"line":15,"column":55}},"loc":{"start":{"line":15,"column":68},"end":{"line":22,"column":3}},"line":15},"2":{"name":"fixInput","decl":{"start":{"line":24,"column":11},"end":{"line":24,"column":19}},"loc":{"start":{"line":24,"column":28},"end":{"line":39,"column":3}},"line":24},"3":{"name":"fixOutput","decl":{"start":{"line":41,"column":11},"end":{"line":41,"column":20}},"loc":{"start":{"line":41,"column":30},"end":{"line":55,"column":3}},"line":41},"4":{"name":"save","decl":{"start":{"line":57,"column":17},"end":{"line":57,"column":21}},"loc":{"start":{"line":57,"column":29},"end":{"line":81,"column":3}},"line":57},"5":{"name":"(anonymous_5)","decl":{"start":{"line":62,"column":60},"end":{"line":62,"column":61}},"loc":{"start":{"line":62,"column":67},"end":{"line":62,"column":79}},"line":62},"6":{"name":"insert","decl":{"start":{"line":83,"column":17},"end":{"line":83,"column":23}},"loc":{"start":{"line":83,"column":31},"end":{"line":115,"column":3}},"line":83},"7":{"name":"(anonymous_7)","decl":{"start":{"line":84,"column":60},"end":{"line":84,"column":61}},"loc":{"start":{"line":84,"column":67},"end":{"line":84,"column":79}},"line":84},"8":{"name":"computeFields","decl":{"start":{"line":117,"column":11},"end":{"line":117,"column":24}},"loc":{"start":{"line":117,"column":34},"end":{"line":138,"column":3}},"line":117},"9":{"name":"(anonymous_9)","decl":{"start":{"line":127,"column":39},"end":{"line":127,"column":40}},"loc":{"start":{"line":127,"column":50},"end":{"line":132,"column":5}},"line":127},"10":{"name":"(anonymous_10)","decl":{"start":{"line":128,"column":25},"end":{"line":128,"column":26}},"loc":{"start":{"line":128,"column":39},"end":{"line":128,"column":69}},"line":128},"11":{"name":"computeCriteria","decl":{"start":{"line":151,"column":11},"end":{"line":151,"column":26}},"loc":{"start":{"line":151,"column":34},"end":{"line":169,"column":3}},"line":151},"12":{"name":"computeCriteriaValue","decl":{"start":{"line":171,"column":11},"end":{"line":171,"column":31}},"loc":{"start":{"line":171,"column":51},"end":{"line":186,"column":3}},"line":171},"13":{"name":"(anonymous_13)","decl":{"start":{"line":174,"column":18},"end":{"line":174,"column":19}},"loc":{"start":{"line":174,"column":25},"end":{"line":174,"column":59}},"line":174},"14":{"name":"find","decl":{"start":{"line":188,"column":17},"end":{"line":188,"column":21}},"loc":{"start":{"line":188,"column":34},"end":{"line":214,"column":3}},"line":188},"15":{"name":"(anonymous_15)","decl":{"start":{"line":189,"column":60},"end":{"line":189,"column":61}},"loc":{"start":{"line":189,"column":67},"end":{"line":189,"column":79}},"line":189},"16":{"name":"(anonymous_16)","decl":{"start":{"line":201,"column":39},"end":{"line":201,"column":40}},"loc":{"start":{"line":201,"column":50},"end":{"line":204,"column":7}},"line":201},"17":{"name":"count","decl":{"start":{"line":216,"column":17},"end":{"line":216,"column":22}},"loc":{"start":{"line":216,"column":35},"end":{"line":228,"column":3}},"line":216},"18":{"name":"_delete","decl":{"start":{"line":230,"column":17},"end":{"line":230,"column":24}},"loc":{"start":{"line":230,"column":32},"end":{"line":235,"column":3}},"line":230},"19":{"name":"(anonymous_19)","decl":{"start":{"line":231,"column":60},"end":{"line":231,"column":61}},"loc":{"start":{"line":231,"column":67},"end":{"line":231,"column":79}},"line":231},"20":{"name":"buildEntity","decl":{"start":{"line":255,"column":15},"end":{"line":255,"column":26}},"loc":{"start":{"line":255,"column":81},"end":{"line":310,"column":1}},"line":255},"21":{"name":"(anonymous_21)","decl":{"start":{"line":257,"column":69},"end":{"line":257,"column":70}},"loc":{"start":{"line":257,"column":76},"end":{"line":257,"column":98}},"line":257},"22":{"name":"(anonymous_22)","decl":{"start":{"line":258,"column":32},"end":{"line":258,"column":33}},"loc":{"start":{"line":258,"column":49},"end":{"line":267,"column":3}},"line":258}},"branchMap":{"0":{"loc":{"start":{"line":29,"column":6},"end":{"line":35,"column":7}},"type":"if","locations":[{"start":{"line":29,"column":6},"end":{"line":35,"column":7}},{"start":{"line":29,"column":6},"end":{"line":35,"column":7}}],"line":29},"1":{"loc":{"start":{"line":30,"column":8},"end":{"line":34,"column":9}},"type":"if","locations":[{"start":{"line":30,"column":8},"end":{"line":34,"column":9}},{"start":{"line":30,"column":8},"end":{"line":34,"column":9}}],"line":30},"2":{"loc":{"start":{"line":42,"column":4},"end":{"line":44,"column":5}},"type":"if","locations":[{"start":{"line":42,"column":4},"end":{"line":44,"column":5}},{"start":{"line":42,"column":4},"end":{"line":44,"column":5}}],"line":42},"3":{"loc":{"start":{"line":49,"column":6},"end":{"line":51,"column":7}},"type":"if","locations":[{"start":{"line":49,"column":6},"end":{"line":51,"column":7}},{"start":{"line":49,"column":6},"end":{"line":51,"column":7}}],"line":49},"4":{"loc":{"start":{"line":49,"column":10},"end":{"line":49,"column":69}},"type":"binary-expr","locations":[{"start":{"line":49,"column":10},"end":{"line":49,"column":28}},{"start":{"line":49,"column":32},"end":{"line":49,"column":46}},{"start":{"line":49,"column":50},"end":{"line":49,"column":69}}],"line":49},"5":{"loc":{"start":{"line":58,"column":4},"end":{"line":60,"column":5}},"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":60,"column":5}},{"start":{"line":58,"column":4},"end":{"line":60,"column":5}}],"line":58},"6":{"loc":{"start":{"line":65,"column":4},"end":{"line":68,"column":5}},"type":"if","locations":[{"start":{"line":65,"column":4},"end":{"line":68,"column":5}},{"start":{"line":65,"column":4},"end":{"line":68,"column":5}}],"line":65},"7":{"loc":{"start":{"line":65,"column":8},"end":{"line":65,"column":42}},"type":"binary-expr","locations":[{"start":{"line":65,"column":8},"end":{"line":65,"column":21}},{"start":{"line":65,"column":25},"end":{"line":65,"column":42}}],"line":65},"8":{"loc":{"start":{"line":69,"column":4},"end":{"line":80,"column":5}},"type":"if","locations":[{"start":{"line":69,"column":4},"end":{"line":80,"column":5}},{"start":{"line":69,"column":4},"end":{"line":80,"column":5}}],"line":69},"9":{"loc":{"start":{"line":73,"column":6},"end":{"line":77,"column":7}},"type":"if","locations":[{"start":{"line":73,"column":6},"end":{"line":77,"column":7}},{"start":{"line":73,"column":6},"end":{"line":77,"column":7}}],"line":73},"10":{"loc":{"start":{"line":73,"column":10},"end":{"line":73,"column":45}},"type":"binary-expr","locations":[{"start":{"line":73,"column":10},"end":{"line":73,"column":23}},{"start":{"line":73,"column":27},"end":{"line":73,"column":45}}],"line":73},"11":{"loc":{"start":{"line":88,"column":4},"end":{"line":98,"column":5}},"type":"if","locations":[{"start":{"line":88,"column":4},"end":{"line":98,"column":5}}],"line":88},"12":{"loc":{"start":{"line":91,"column":8},"end":{"line":93,"column":9}},"type":"if","locations":[{"start":{"line":91,"column":8},"end":{"line":93,"column":9}},{"start":{"line":91,"column":8},"end":{"line":93,"column":9}}],"line":91},"13":{"loc":{"start":{"line":94,"column":8},"end":{"line":96,"column":9}},"type":"if","locations":[{"start":{"line":94,"column":8},"end":{"line":96,"column":9}},{"start":{"line":94,"column":8},"end":{"line":96,"column":9}}],"line":94},"14":{"loc":{"start":{"line":118,"column":4},"end":{"line":120,"column":5}},"type":"if","locations":[{"start":{"line":118,"column":4},"end":{"line":120,"column":5}},{"start":{"line":118,"column":4},"end":{"line":120,"column":5}}],"line":118},"15":{"loc":{"start":{"line":128,"column":6},"end":{"line":130,"column":7}},"type":"if","locations":[{"start":{"line":128,"column":6},"end":{"line":130,"column":7}},{"start":{"line":128,"column":6},"end":{"line":130,"column":7}}],"line":128},"16":{"loc":{"start":{"line":152,"column":18},"end":{"line":152,"column":34}},"type":"binary-expr","locations":[{"start":{"line":152,"column":18},"end":{"line":152,"column":28}},{"start":{"line":152,"column":32},"end":{"line":152,"column":34}}],"line":152},"17":{"loc":{"start":{"line":172,"column":4},"end":{"line":177,"column":5}},"type":"if","locations":[{"start":{"line":172,"column":4},"end":{"line":177,"column":5}},{"start":{"line":172,"column":4},"end":{"line":177,"column":5}}],"line":172},"18":{"loc":{"start":{"line":188,"column":23},"end":{"line":188,"column":32}},"type":"default-arg","locations":[{"start":{"line":188,"column":30},"end":{"line":188,"column":32}}],"line":188},"19":{"loc":{"start":{"line":196,"column":4},"end":{"line":198,"column":5}},"type":"if","locations":[{"start":{"line":196,"column":4},"end":{"line":198,"column":5}},{"start":{"line":196,"column":4},"end":{"line":198,"column":5}}],"line":196},"20":{"loc":{"start":{"line":200,"column":4},"end":{"line":206,"column":5}},"type":"if","locations":[{"start":{"line":200,"column":4},"end":{"line":206,"column":5}},{"start":{"line":200,"column":4},"end":{"line":206,"column":5}}],"line":200},"21":{"loc":{"start":{"line":200,"column":8},"end":{"line":200,"column":47}},"type":"binary-expr","locations":[{"start":{"line":200,"column":8},"end":{"line":200,"column":20}},{"start":{"line":200,"column":24},"end":{"line":200,"column":47}}],"line":200},"22":{"loc":{"start":{"line":208,"column":4},"end":{"line":210,"column":5}},"type":"if","locations":[{"start":{"line":208,"column":4},"end":{"line":210,"column":5}},{"start":{"line":208,"column":4},"end":{"line":210,"column":5}}],"line":208},"23":{"loc":{"start":{"line":208,"column":8},"end":{"line":208,"column":47}},"type":"binary-expr","locations":[{"start":{"line":208,"column":8},"end":{"line":208,"column":18}},{"start":{"line":208,"column":22},"end":{"line":208,"column":47}}],"line":208},"24":{"loc":{"start":{"line":216,"column":24},"end":{"line":216,"column":33}},"type":"default-arg","locations":[{"start":{"line":216,"column":31},"end":{"line":216,"column":33}}],"line":216},"25":{"loc":{"start":{"line":223,"column":4},"end":{"line":225,"column":5}},"type":"if","locations":[{"start":{"line":223,"column":4},"end":{"line":225,"column":5}},{"start":{"line":223,"column":4},"end":{"line":225,"column":5}}],"line":223},"26":{"loc":{"start":{"line":263,"column":4},"end":{"line":265,"column":5}},"type":"if","locations":[{"start":{"line":263,"column":4},"end":{"line":265,"column":5}},{"start":{"line":263,"column":4},"end":{"line":265,"column":5}}],"line":263},"27":{"loc":{"start":{"line":263,"column":8},"end":{"line":263,"column":102}},"type":"binary-expr","locations":[{"start":{"line":263,"column":8},"end":{"line":263,"column":21}},{"start":{"line":263,"column":26},"end":{"line":263,"column":61}},{"start":{"line":263,"column":65},"end":{"line":263,"column":101}}],"line":263},"28":{"loc":{"start":{"line":286,"column":4},"end":{"line":298,"column":5}},"type":"if","locations":[{"start":{"line":286,"column":4},"end":{"line":298,"column":5}},{"start":{"line":286,"column":4},"end":{"line":298,"column":5}}],"line":286},"29":{"loc":{"start":{"line":300,"column":4},"end":{"line":303,"column":5}},"type":"if","locations":[{"start":{"line":300,"column":4},"end":{"line":303,"column":5}},{"start":{"line":300,"column":4},"end":{"line":303,"column":5}}],"line":300}},"s":{"0":1,"1":1,"2":1,"3":2,"4":2,"5":2,"6":2,"7":8,"8":8,"9":8,"10":8,"11":8,"12":8,"13":5,"14":5,"15":12,"16":12,"17":12,"18":0,"19":0,"20":0,"21":12,"22":5,"23":10,"24":0,"25":10,"26":10,"27":40,"28":40,"29":40,"30":10,"31":40,"32":10,"33":2,"34":0,"35":2,"36":8,"37":2,"38":2,"39":2,"40":2,"41":2,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":4,"50":1,"51":1,"52":1,"53":1,"54":3,"55":3,"56":3,"57":3,"58":6,"59":6,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":2,"70":3,"71":3,"72":3,"73":2,"74":2,"75":2,"76":2,"77":2,"78":2,"79":3,"80":2,"81":0,"82":0,"83":3,"84":12,"85":3,"86":3,"87":3,"88":2,"89":3,"90":0,"91":0,"92":0,"93":0,"94":3,"95":0,"96":3,"97":3,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":2,"111":2,"112":8,"113":2,"114":8,"115":8,"116":4,"117":8,"118":2,"119":2,"120":2,"121":2,"122":2,"123":2,"124":2,"125":2,"126":0,"127":0,"128":2,"129":2,"130":2,"131":1},"f":{"0":2,"1":8,"2":5,"3":10,"4":2,"5":8,"6":1,"7":4,"8":6,"9":0,"10":0,"11":3,"12":2,"13":0,"14":3,"15":12,"16":0,"17":0,"18":0,"19":0,"20":2,"21":8,"22":8},"b":{"0":[0,12],"1":[0,0],"2":[0,10],"3":[10,30],"4":[40,10,10],"5":[0,2],"6":[2,0],"7":[2,2],"8":[1,1],"9":[1,0],"10":[1,1],"11":[1],"12":[3,0],"13":[3,0],"14":[6,0],"15":[0,0],"16":[3,1],"17":[0,2],"18":[1],"19":[2,1],"20":[0,3],"21":[3,0],"22":[0,3],"23":[3,0],"24":[0],"25":[0,0],"26":[4,4],"27":[8,8,6],"28":[2,0],"29":[0,2]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"37bde491ff41bd55074d66e5b5c5023bea416e5f","contentHash":"fe941192a9887feafd5111537340d1d3abcd4da04e858b80b930d83da48d3743"},"/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/utils.js":{"path":"/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/utils.js","statementMap":{"0":{"start":{"line":3,"column":24},"end":{"line":3,"column":44}},"1":{"start":{"line":4,"column":18},"end":{"line":4,"column":38}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":35}},"3":{"start":{"line":8,"column":2},"end":{"line":8,"column":43}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":12}},"5":{"start":{"line":12,"column":0},"end":{"line":14,"column":1}}},"fnMap":{"0":{"name":"toSingular","decl":{"start":{"line":6,"column":9},"end":{"line":6,"column":19}},"loc":{"start":{"line":6,"column":26},"end":{"line":10,"column":1}},"line":6}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":2,"4":2,"5":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"aa04ecfece10b89e2c24df306d134e71834fcd53","contentHash":"d8cf627079b3e2d1ae93797d1cd08a433ab039e363fa4ae2c88e7b5f5726fb8e"},"/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/queries/sqlite.js":{"path":"/Users/matteo/Repositories/platformatic/packages/sql-mapper/lib/queries/sqlite.js","statementMap":{"0":{"start":{"line":3,"column":23},"end":{"line":3,"column":40}},"1":{"start":{"line":6,"column":17},"end":{"line":9,"column":4}},"2":{"start":{"line":10,"column":2},"end":{"line":10,"column":32}},"3":{"start":{"line":10,"column":25},"end":{"line":10,"column":31}},"4":{"start":{"line":13,"column":0},"end":{"line":13,"column":38}},"5":{"start":{"line":16,"column":18},"end":{"line":18,"column":4}},"6":{"start":{"line":19,"column":2},"end":{"line":25,"column":3}},"7":{"start":{"line":20,"column":4},"end":{"line":20,"column":36}},"8":{"start":{"line":22,"column":4},"end":{"line":22,"column":75}},"9":{"start":{"line":24,"column":4},"end":{"line":24,"column":79}},"10":{"start":{"line":26,"column":2},"end":{"line":26,"column":16}},"11":{"start":{"line":29,"column":0},"end":{"line":29,"column":40}},"12":{"start":{"line":32,"column":22},"end":{"line":32,"column":24}},"13":{"start":{"line":33,"column":14},"end":{"line":37,"column":4}},"14":{"start":{"line":39,"column":2},"end":{"line":41,"column":3}},"15":{"start":{"line":40,"column":4},"end":{"line":40,"column":68}},"16":{"start":{"line":43,"column":2},"end":{"line":48,"column":3}},"17":{"start":{"line":44,"column":4},"end":{"line":47,"column":6}},"18":{"start":{"line":50,"column":22},"end":{"line":53,"column":4}},"19":{"start":{"line":55,"column":2},"end":{"line":63,"column":3}},"20":{"start":{"line":56,"column":4},"end":{"line":62,"column":6}},"21":{"start":{"line":64,"column":2},"end":{"line":64,"column":20}},"22":{"start":{"line":67,"column":0},"end":{"line":67,"column":48}},"23":{"start":{"line":70,"column":20},"end":{"line":70,"column":67}},"24":{"start":{"line":70,"column":52},"end":{"line":70,"column":66}},"25":{"start":{"line":71,"column":2},"end":{"line":71,"column":39}},"26":{"start":{"line":72,"column":15},"end":{"line":75,"column":3}},"27":{"start":{"line":77,"column":22},"end":{"line":79,"column":4}},"28":{"start":{"line":78,"column":4},"end":{"line":78,"column":32}},"29":{"start":{"line":82,"column":2},"end":{"line":87,"column":3}},"30":{"start":{"line":83,"column":4},"end":{"line":83,"column":34}},"31":{"start":{"line":84,"column":4},"end":{"line":84,"column":48}},"32":{"start":{"line":86,"column":4},"end":{"line":86,"column":37}},"33":{"start":{"line":88,"column":17},"end":{"line":91,"column":3}},"34":{"start":{"line":93,"column":17},"end":{"line":96,"column":3}},"35":{"start":{"line":97,"column":2},"end":{"line":97,"column":24}},"36":{"start":{"line":99,"column":2},"end":{"line":105,"column":3}},"37":{"start":{"line":100,"column":17},"end":{"line":102,"column":6}},"38":{"start":{"line":104,"column":4},"end":{"line":104,"column":52}},"39":{"start":{"line":107,"column":14},"end":{"line":111,"column":4}},"40":{"start":{"line":113,"column":2},"end":{"line":113,"column":15}},"41":{"start":{"line":116,"column":0},"end":{"line":116,"column":36}},"42":{"start":{"line":119,"column":16},"end":{"line":122,"column":4}},"43":{"start":{"line":120,"column":18},"end":{"line":120,"column":28}},"44":{"start":{"line":121,"column":4},"end":{"line":121,"column":44}},"45":{"start":{"line":124,"column":17},"end":{"line":128,"column":3}},"46":{"start":{"line":129,"column":2},"end":{"line":129,"column":24}},"47":{"start":{"line":131,"column":17},"end":{"line":135,"column":3}},"48":{"start":{"line":136,"column":14},"end":{"line":136,"column":36}},"49":{"start":{"line":137,"column":2},"end":{"line":137,"column":15}},"50":{"start":{"line":140,"column":0},"end":{"line":140,"column":36}},"51":{"start":{"line":143,"column":14},"end":{"line":146,"column":3}},"52":{"start":{"line":149,"column":2},"end":{"line":151,"column":3}},"53":{"start":{"line":150,"column":4},"end":{"line":150,"column":65}},"54":{"start":{"line":153,"column":15},"end":{"line":153,"column":36}},"55":{"start":{"line":155,"column":2},"end":{"line":157,"column":3}},"56":{"start":{"line":160,"column":2},"end":{"line":162,"column":3}},"57":{"start":{"line":161,"column":4},"end":{"line":161,"column":65}},"58":{"start":{"line":164,"column":2},"end":{"line":164,"column":23}},"59":{"start":{"line":166,"column":2},"end":{"line":166,"column":13}},"60":{"start":{"line":169,"column":0},"end":{"line":169,"column":36}}},"fnMap":{"0":{"name":"listTables","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":25}},"loc":{"start":{"line":5,"column":36},"end":{"line":11,"column":1}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":20},"end":{"line":10,"column":21}},"loc":{"start":{"line":10,"column":25},"end":{"line":10,"column":31}},"line":10},"2":{"name":"listColumns","decl":{"start":{"line":15,"column":15},"end":{"line":15,"column":26}},"loc":{"start":{"line":15,"column":44},"end":{"line":27,"column":1}},"line":15},"3":{"name":"listConstraints","decl":{"start":{"line":31,"column":15},"end":{"line":31,"column":30}},"loc":{"start":{"line":31,"column":48},"end":{"line":65,"column":1}},"line":31},"4":{"name":"insertOne","decl":{"start":{"line":69,"column":15},"end":{"line":69,"column":24}},"loc":{"start":{"line":69,"column":88},"end":{"line":114,"column":1}},"line":69},"5":{"name":"(anonymous_5)","decl":{"start":{"line":70,"column":43},"end":{"line":70,"column":44}},"loc":{"start":{"line":70,"column":52},"end":{"line":70,"column":66}},"line":70},"6":{"name":"(anonymous_6)","decl":{"start":{"line":77,"column":45},"end":{"line":77,"column":46}},"loc":{"start":{"line":77,"column":54},"end":{"line":79,"column":3}},"line":77},"7":{"name":"updateOne","decl":{"start":{"line":118,"column":15},"end":{"line":118,"column":24}},"loc":{"start":{"line":118,"column":79},"end":{"line":138,"column":1}},"line":118},"8":{"name":"(anonymous_8)","decl":{"start":{"line":119,"column":39},"end":{"line":119,"column":40}},"loc":{"start":{"line":119,"column":48},"end":{"line":122,"column":3}},"line":119},"9":{"name":"deleteAll","decl":{"start":{"line":142,"column":15},"end":{"line":142,"column":24}},"loc":{"start":{"line":142,"column":70},"end":{"line":167,"column":1}},"line":142}},"branchMap":{"0":{"loc":{"start":{"line":24,"column":25},"end":{"line":24,"column":79}},"type":"cond-expr","locations":[{"start":{"line":24,"column":67},"end":{"line":24,"column":72}},{"start":{"line":24,"column":75},"end":{"line":24,"column":79}}],"line":24},"1":{"loc":{"start":{"line":24,"column":25},"end":{"line":24,"column":64}},"type":"binary-expr","locations":[{"start":{"line":24,"column":25},"end":{"line":24,"column":45}},{"start":{"line":24,"column":49},"end":{"line":24,"column":64}}],"line":24},"2":{"loc":{"start":{"line":39,"column":2},"end":{"line":41,"column":3}},"type":"if","locations":[{"start":{"line":39,"column":2},"end":{"line":41,"column":3}},{"start":{"line":39,"column":2},"end":{"line":41,"column":3}}],"line":39},"3":{"loc":{"start":{"line":43,"column":2},"end":{"line":48,"column":3}},"type":"if","locations":[{"start":{"line":43,"column":2},"end":{"line":48,"column":3}},{"start":{"line":43,"column":2},"end":{"line":48,"column":3}}],"line":43},"4":{"loc":{"start":{"line":82,"column":2},"end":{"line":87,"column":3}},"type":"if","locations":[{"start":{"line":82,"column":2},"end":{"line":87,"column":3}},{"start":{"line":82,"column":2},"end":{"line":87,"column":3}}],"line":82},"5":{"loc":{"start":{"line":99,"column":2},"end":{"line":105,"column":3}},"type":"if","locations":[{"start":{"line":99,"column":2},"end":{"line":105,"column":3}},{"start":{"line":99,"column":2},"end":{"line":105,"column":3}}],"line":99},"6":{"loc":{"start":{"line":149,"column":2},"end":{"line":151,"column":3}},"type":"if","locations":[{"start":{"line":149,"column":2},"end":{"line":151,"column":3}}],"line":149},"7":{"loc":{"start":{"line":160,"column":2},"end":{"line":162,"column":3}},"type":"if","locations":[{"start":{"line":160,"column":2},"end":{"line":162,"column":3}}],"line":160}},"s":{"0":1,"1":2,"2":2,"3":2,"4":1,"5":2,"6":2,"7":8,"8":8,"9":8,"10":2,"11":1,"12":2,"13":2,"14":2,"15":0,"16":2,"17":2,"18":2,"19":2,"20":0,"21":2,"22":1,"23":4,"24":12,"25":4,"26":4,"27":4,"28":12,"29":4,"30":0,"31":0,"32":4,"33":4,"34":4,"35":4,"36":4,"37":4,"38":4,"39":4,"40":4,"41":1,"42":1,"43":3,"44":3,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":1},"f":{"0":2,"1":2,"2":2,"3":2,"4":4,"5":12,"6":12,"7":1,"8":3,"9":0},"b":{"0":[6,2],"1":[8,8],"2":[0,2],"3":[2,0],"4":[0,4],"5":[4,0],"6":[0],"7":[0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"6e41fba32632844a53e5e478a8565afa68e4e787","contentHash":"ee4a5a47f5febaa8bd85ed3f9764721dc01de584a69d7c5ed9a99b06e5f24f95"}}