pure-orm 4.0.0-5 → 4.0.0-8
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.
- package/README.md +14 -20
- package/coverage/clover.xml +375 -577
- package/coverage/coverage-final.json +18 -20
- package/coverage/lcov-report/dist/src/core.js.html +1038 -0
- package/coverage/lcov-report/dist/src/drivers/index.html +97 -0
- package/coverage/lcov-report/dist/src/drivers/pgp.js.html +240 -0
- package/coverage/lcov-report/dist/src/factory.js.html +293 -197
- package/coverage/lcov-report/dist/src/index.html +20 -33
- package/coverage/lcov-report/dist/src/index.js.html +16 -10
- package/coverage/lcov-report/dist/src/orm.js.html +645 -0
- package/coverage/lcov-report/dist/test-utils/blog/entities.js.html +108 -0
- package/coverage/lcov-report/dist/test-utils/blog/index.html +6 -6
- package/coverage/lcov-report/dist/test-utils/blog/models/article.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/blog/models/article_tag.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/blog/models/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/blog/models/person.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/blog/models/tag.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/blog/orm.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/five/entities.js.html +114 -0
- package/coverage/lcov-report/dist/test-utils/five/index.html +6 -6
- package/coverage/lcov-report/dist/test-utils/five/models/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/five/models/line-item.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/five/models/order.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/five/models/parcel-event.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/five/models/parcel-line-item.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/five/models/parcel.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/five/orm.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/nine/entities.js.html +84 -0
- package/coverage/lcov-report/dist/test-utils/nine/index.html +6 -6
- package/coverage/lcov-report/dist/test-utils/nine/models/feature-switch.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/nine/models/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/nine/orm.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order/entities.js.html +114 -0
- package/coverage/lcov-report/dist/test-utils/order/index.html +6 -6
- package/coverage/lcov-report/dist/test-utils/order/models/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order/models/line-item.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order/models/order.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order/models/product-variant.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order/models/product.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order/models/utm-source.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order/orm.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/entities.js.html +204 -0
- package/coverage/lcov-report/dist/test-utils/order-more/index.html +6 -6
- package/coverage/lcov-report/dist/test-utils/order-more/models/actual-product-variant.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/color.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/customer.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/gender.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/inventory-level.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/line-item.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/order.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/parcel-event.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/parcel-line-item.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/parcel.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/physical-address.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/product-variant-image.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/product-variant.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/product.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/refund.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/shipment-actual-product-variant.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/shipment.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/size.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/utm-medium.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/utm-source.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/orm.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/six/entities.js.html +114 -0
- package/coverage/lcov-report/dist/test-utils/six/index.html +6 -6
- package/coverage/lcov-report/dist/test-utils/six/models/customer.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/six/models/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/six/models/line-item.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/six/models/order.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/six/models/parcel-line-item.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/six/models/parcel.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/six/orm.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/entities.js.html +132 -0
- package/coverage/lcov-report/dist/test-utils/thirteen/index.html +6 -6
- package/coverage/lcov-report/dist/test-utils/thirteen/models/audience.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/models/brand.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/models/category.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/models/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/models/member.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/models/passion.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/models/product.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/models/recommendation-audience.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/models/recommendation.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/orm.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/three/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/three/results.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/twelve/entities.js.html +87 -0
- package/coverage/lcov-report/dist/test-utils/twelve/index.html +6 -6
- package/coverage/lcov-report/dist/test-utils/twelve/models/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/twelve/models/member.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/twelve/models/prompt.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/twelve/orm.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/two/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/two/results.js.html +1 -1
- package/coverage/lcov-report/index.html +47 -47
- package/coverage/lcov-report/src/core.ts.html +1593 -0
- package/coverage/lcov-report/src/drivers/index.html +97 -0
- package/coverage/lcov-report/src/drivers/pgp.ts.html +516 -0
- package/coverage/lcov-report/src/factory.ts.html +436 -250
- package/coverage/lcov-report/src/index.html +20 -33
- package/coverage/lcov-report/src/index.ts.html +23 -5
- package/coverage/lcov-report/src/orm.ts.html +954 -0
- package/coverage/lcov-report/test-utils/blog/entities.ts.html +102 -0
- package/coverage/lcov-report/test-utils/blog/index.html +6 -6
- package/coverage/lcov-report/test-utils/blog/models/article.ts.html +1 -1
- package/coverage/lcov-report/test-utils/blog/models/article_tag.ts.html +1 -1
- package/coverage/lcov-report/test-utils/blog/models/index.html +1 -1
- package/coverage/lcov-report/test-utils/blog/models/person.ts.html +1 -1
- package/coverage/lcov-report/test-utils/blog/models/tag.ts.html +1 -1
- package/coverage/lcov-report/test-utils/blog/orm.ts.html +1 -1
- package/coverage/lcov-report/test-utils/five/entities.ts.html +105 -0
- package/coverage/lcov-report/test-utils/five/index.html +2 -2
- package/coverage/lcov-report/test-utils/five/models/index.html +1 -1
- package/coverage/lcov-report/test-utils/five/models/line-item.ts.html +1 -1
- package/coverage/lcov-report/test-utils/five/models/order.ts.html +1 -1
- package/coverage/lcov-report/test-utils/five/models/parcel-event.ts.html +1 -1
- package/coverage/lcov-report/test-utils/five/models/parcel-line-item.ts.html +1 -1
- package/coverage/lcov-report/test-utils/five/models/parcel.ts.html +1 -1
- package/coverage/lcov-report/test-utils/five/orm.ts.html +1 -1
- package/coverage/lcov-report/test-utils/nine/entities.ts.html +75 -0
- package/coverage/lcov-report/test-utils/nine/index.html +2 -2
- package/coverage/lcov-report/test-utils/nine/models/feature-switch.ts.html +1 -1
- package/coverage/lcov-report/test-utils/nine/models/index.html +1 -1
- package/coverage/lcov-report/test-utils/nine/orm.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order/entities.ts.html +108 -0
- package/coverage/lcov-report/test-utils/order/index.html +2 -2
- package/coverage/lcov-report/test-utils/order/models/index.html +1 -1
- package/coverage/lcov-report/test-utils/order/models/line-item.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order/models/order.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order/models/product-variant.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order/models/product.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order/models/utm-source.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order/orm.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/entities.ts.html +198 -0
- package/coverage/lcov-report/test-utils/order-more/index.html +2 -2
- package/coverage/lcov-report/test-utils/order-more/models/actual-product-variant.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/color.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/customer.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/gender.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/index.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/inventory-level.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/line-item.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/order.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/parcel-event.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/parcel-line-item.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/parcel.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/physical-address.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/product-variant-image.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/product-variant.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/product.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/refund.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/shipment-actual-product-variant.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/shipment.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/size.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/utm-medium.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/utm-source.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/orm.ts.html +1 -1
- package/coverage/lcov-report/test-utils/six/entities.ts.html +105 -0
- package/coverage/lcov-report/test-utils/six/index.html +2 -2
- package/coverage/lcov-report/test-utils/six/models/customer.ts.html +1 -1
- package/coverage/lcov-report/test-utils/six/models/index.html +1 -1
- package/coverage/lcov-report/test-utils/six/models/line-item.ts.html +1 -1
- package/coverage/lcov-report/test-utils/six/models/order.ts.html +1 -1
- package/coverage/lcov-report/test-utils/six/models/parcel-line-item.ts.html +1 -1
- package/coverage/lcov-report/test-utils/six/models/parcel.ts.html +1 -1
- package/coverage/lcov-report/test-utils/six/orm.ts.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/entities.ts.html +123 -0
- package/coverage/lcov-report/test-utils/thirteen/index.html +2 -2
- package/coverage/lcov-report/test-utils/thirteen/models/audience.ts.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/models/brand.ts.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/models/category.ts.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/models/index.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/models/member.ts.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/models/passion.ts.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/models/product.ts.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/models/recommendation-audience.ts.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/models/recommendation.ts.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/orm.ts.html +1 -1
- package/coverage/lcov-report/test-utils/three/index.html +1 -1
- package/coverage/lcov-report/test-utils/three/results.js.html +1 -1
- package/coverage/lcov-report/test-utils/twelve/entities.ts.html +78 -0
- package/coverage/lcov-report/test-utils/twelve/index.html +2 -2
- package/coverage/lcov-report/test-utils/twelve/models/index.html +1 -1
- package/coverage/lcov-report/test-utils/twelve/models/member.ts.html +1 -1
- package/coverage/lcov-report/test-utils/twelve/models/prompt.ts.html +1 -1
- package/coverage/lcov-report/test-utils/twelve/orm.ts.html +1 -1
- package/coverage/lcov-report/test-utils/two/index.html +1 -1
- package/coverage/lcov-report/test-utils/two/results.js.html +1 -1
- package/coverage/lcov.info +726 -1143
- package/dist/example/factories/orm.d.ts +1 -47
- package/dist/example/models/employer.d.ts +1 -1
- package/dist/example/models/job.d.ts +1 -1
- package/dist/example/models/person.d.ts +1 -1
- package/dist/src/core.d.ts +66 -0
- package/dist/src/{factory.js → core.js} +51 -245
- package/dist/src/{factory.spec.d.ts → core.spec.d.ts} +0 -0
- package/dist/src/{factory.spec.js → core.spec.js} +56 -43
- package/dist/src/driver-integrations/index.d.ts +13 -0
- package/dist/src/driver-integrations/index.js +2 -0
- package/dist/src/driver-integrations/pgp.d.ts +2 -0
- package/dist/src/driver-integrations/pgp.js +57 -0
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.js +5 -3
- package/dist/src/orm.d.ts +20 -0
- package/dist/src/orm.js +190 -0
- package/dist/test-utils/blog/entities.d.ts +1 -0
- package/dist/test-utils/blog/{orm.js → entities.js} +7 -6
- package/dist/test-utils/blog/{orm.ts → entities.ts} +6 -6
- package/dist/test-utils/blog/models/article.d.ts +1 -1
- package/dist/test-utils/blog/models/article_tag.d.ts +1 -1
- package/dist/test-utils/blog/models/person.d.ts +1 -1
- package/dist/test-utils/blog/models/tag.d.ts +1 -1
- package/dist/test-utils/five/entities.d.ts +6 -0
- package/dist/test-utils/five/{orm.js → entities.js} +8 -12
- package/dist/test-utils/five/{orm.ts → entities.ts} +7 -12
- package/dist/test-utils/five/models/line-item.d.ts +1 -1
- package/dist/test-utils/five/models/order.d.ts +1 -1
- package/dist/test-utils/five/models/parcel-event.d.ts +1 -1
- package/dist/test-utils/five/models/parcel-line-item.d.ts +1 -1
- package/dist/test-utils/five/models/parcel.d.ts +1 -1
- package/dist/test-utils/nine/entities.d.ts +6 -0
- package/dist/test-utils/nine/entities.js +5 -0
- package/dist/test-utils/nine/entities.ts +2 -0
- package/dist/test-utils/nine/models/feature-switch.d.ts +1 -1
- package/dist/test-utils/order/entities.d.ts +26 -0
- package/dist/test-utils/order/{orm.js → entities.js} +8 -12
- package/{test-utils/order/orm.ts → dist/test-utils/order/entities.ts} +7 -12
- package/dist/test-utils/order/models/line-item.d.ts +1 -1
- package/dist/test-utils/order/models/order.d.ts +1 -1
- package/dist/test-utils/order/models/product-variant.d.ts +1 -1
- package/dist/test-utils/order/models/product.d.ts +1 -1
- package/dist/test-utils/order/models/utm-source.d.ts +1 -1
- package/dist/test-utils/order-more/entities.d.ts +6 -0
- package/dist/test-utils/order-more/{orm.js → entities.js} +23 -27
- package/dist/test-utils/order-more/{orm.ts → entities.ts} +22 -27
- package/dist/test-utils/order-more/models/actual-product-variant.d.ts +1 -1
- package/dist/test-utils/order-more/models/color.d.ts +1 -1
- package/dist/test-utils/order-more/models/customer.d.ts +1 -1
- package/dist/test-utils/order-more/models/gender.d.ts +1 -1
- package/dist/test-utils/order-more/models/inventory-level.d.ts +1 -1
- package/dist/test-utils/order-more/models/line-item.d.ts +1 -1
- package/dist/test-utils/order-more/models/order.d.ts +1 -1
- package/dist/test-utils/order-more/models/parcel-event.d.ts +1 -1
- package/dist/test-utils/order-more/models/parcel-line-item.d.ts +1 -1
- package/dist/test-utils/order-more/models/parcel.d.ts +1 -1
- package/dist/test-utils/order-more/models/physical-address.d.ts +1 -1
- package/dist/test-utils/order-more/models/product-variant-image.d.ts +1 -1
- package/dist/test-utils/order-more/models/product-variant.d.ts +1 -1
- package/dist/test-utils/order-more/models/product.d.ts +1 -1
- package/dist/test-utils/order-more/models/refund.d.ts +1 -1
- package/dist/test-utils/order-more/models/shipment-actual-product-variant.d.ts +1 -1
- package/dist/test-utils/order-more/models/shipment.d.ts +1 -1
- package/dist/test-utils/order-more/models/size.d.ts +1 -1
- package/dist/test-utils/order-more/models/utm-medium.d.ts +1 -1
- package/dist/test-utils/order-more/models/utm-source.d.ts +1 -1
- package/dist/test-utils/six/entities.d.ts +6 -0
- package/dist/test-utils/six/{orm.js → entities.js} +8 -12
- package/{test-utils/six/orm.ts → dist/test-utils/six/entities.ts} +7 -12
- package/dist/test-utils/six/models/customer.d.ts +1 -1
- package/dist/test-utils/six/models/line-item.d.ts +1 -1
- package/dist/test-utils/six/models/order.d.ts +1 -1
- package/dist/test-utils/six/models/parcel-line-item.d.ts +1 -1
- package/dist/test-utils/six/models/parcel.d.ts +1 -1
- package/dist/test-utils/thirteen/entities.d.ts +6 -0
- package/dist/test-utils/thirteen/{orm.js → entities.js} +11 -15
- package/dist/test-utils/thirteen/{orm.ts → entities.ts} +10 -15
- package/dist/test-utils/thirteen/models/audience.d.ts +1 -1
- package/dist/test-utils/thirteen/models/brand.d.ts +1 -1
- package/dist/test-utils/thirteen/models/category.d.ts +1 -1
- package/dist/test-utils/thirteen/models/member.d.ts +1 -1
- package/dist/test-utils/thirteen/models/passion.d.ts +1 -1
- package/dist/test-utils/thirteen/models/product.d.ts +1 -1
- package/dist/test-utils/thirteen/models/recommendation-audience.d.ts +1 -1
- package/dist/test-utils/thirteen/models/recommendation.d.ts +1 -1
- package/dist/test-utils/twelve/entities.d.ts +6 -0
- package/dist/test-utils/twelve/entities.js +6 -0
- package/dist/test-utils/twelve/entities.ts +3 -0
- package/dist/test-utils/twelve/models/member.d.ts +1 -1
- package/dist/test-utils/twelve/models/prompt.d.ts +1 -1
- package/package.json +4 -3
- package/src/{factory.spec.ts → core.spec.ts} +55 -41
- package/src/{factory.ts → core.ts} +102 -338
- package/src/driver-integrations/index.ts +56 -0
- package/src/driver-integrations/pgp.ts +92 -0
- package/src/index.ts +5 -3
- package/src/orm.ts +291 -0
- package/test-utils/blog/{orm.ts → entities.ts} +6 -6
- package/test-utils/five/{orm.ts → entities.ts} +7 -12
- package/test-utils/nine/entities.ts +2 -0
- package/{dist/test-utils/order/orm.ts → test-utils/order/entities.ts} +7 -12
- package/test-utils/order-more/{orm.ts → entities.ts} +22 -27
- package/{dist/test-utils/six/orm.ts → test-utils/six/entities.ts} +7 -12
- package/test-utils/thirteen/{orm.ts → entities.ts} +10 -15
- package/test-utils/twelve/entities.ts +3 -0
- package/dist/src/factory.d.ts +0 -100
- package/dist/test-utils/blog/orm.d.ts +0 -2
- package/dist/test-utils/five/orm.d.ts +0 -48
- package/dist/test-utils/nine/orm.d.ts +0 -48
- package/dist/test-utils/nine/orm.js +0 -9
- package/dist/test-utils/nine/orm.ts +0 -7
- package/dist/test-utils/order/orm.d.ts +0 -48
- package/dist/test-utils/order-more/orm.d.ts +0 -48
- package/dist/test-utils/six/orm.d.ts +0 -48
- package/dist/test-utils/thirteen/orm.d.ts +0 -48
- package/dist/test-utils/twelve/orm.d.ts +0 -48
- package/dist/test-utils/twelve/orm.js +0 -10
- package/dist/test-utils/twelve/orm.ts +0 -8
- package/test-utils/nine/orm.ts +0 -7
- package/test-utils/twelve/orm.ts +0 -8
|
@@ -1,48 +1,2 @@
|
|
|
1
|
-
declare const orm:
|
|
2
|
-
nestClump: (clump: import("../../src/factory").IModel[][]) => object;
|
|
3
|
-
clumpIntoGroups: (processed: import("../../src/factory").IModel[][]) => import("../../src/factory").IModel[][][];
|
|
4
|
-
mapToBos: (objectified: any) => import("../../src/factory").IModel[];
|
|
5
|
-
objectifyDatabaseResult: (result: object) => any;
|
|
6
|
-
createFromDatabase: <T extends import("../../src/factory").ICollection<import("../../src/factory").IModel>>(_result: object | object[]) => T | undefined;
|
|
7
|
-
createOneFromDatabase: <T_1 extends import("../../src/factory").IModel>(_result: any) => T_1;
|
|
8
|
-
createOneOrNoneFromDatabase: <T_2 extends import("../../src/factory").IModel>(_result: any) => void | T_2;
|
|
9
|
-
createManyFromDatabase: <T_3 extends import("../../src/factory").ICollection<import("../../src/factory").IModel>>(_result: any) => T_3;
|
|
10
|
-
getSqlInsertParts: (model: import("../../src/factory").IModel) => {
|
|
11
|
-
columns: string;
|
|
12
|
-
values: any[];
|
|
13
|
-
valuesVar: string[];
|
|
14
|
-
};
|
|
15
|
-
getSqlUpdateParts: (model: import("../../src/factory").IModel, on?: string) => {
|
|
16
|
-
clause: string;
|
|
17
|
-
idVar: string;
|
|
18
|
-
values: any[];
|
|
19
|
-
};
|
|
20
|
-
getMatchingParts: (model: import("../../src/factory").IModel) => {
|
|
21
|
-
whereClause: string;
|
|
22
|
-
values: any[];
|
|
23
|
-
};
|
|
24
|
-
getMatchingPartsObject: (model: import("../../src/factory").IModel) => {
|
|
25
|
-
whereClause: string;
|
|
26
|
-
values: any;
|
|
27
|
-
};
|
|
28
|
-
getNewWith: (model: import("../../src/factory").IModel, sqlColumns: any, values: any) => any;
|
|
29
|
-
getValueBySqlColumn: (model: import("../../src/factory").IModel, sqlColumn: string) => any;
|
|
30
|
-
one: <T_4 extends import("../../src/factory").IModel>(query: string, values?: object | undefined, errorHandler?: (err: Error) => never) => T_4;
|
|
31
|
-
oneOrNone: <T_5 extends import("../../src/factory").IModel>(query: string, values?: object | undefined, errorHandler?: (err: Error) => never) => void | T_5;
|
|
32
|
-
many: <T_6 extends import("../../src/factory").ICollection<import("../../src/factory").IModel>>(query: string, values?: object | undefined, errorHandler?: (err: Error) => never) => T_6;
|
|
33
|
-
any: <T_7 extends import("../../src/factory").ICollection<import("../../src/factory").IModel>>(query: string, values?: object | undefined, errorHandler?: (err: Error) => never) => void | T_7;
|
|
34
|
-
none: (query: string, values?: object | undefined, errorHandler?: (err: Error) => never) => void;
|
|
35
|
-
create: <T_8 extends import("../../src/factory").IModel>(model: T_8) => T_8;
|
|
36
|
-
update: <T_9 extends import("../../src/factory").IModel>(model: T_9, { on }?: {
|
|
37
|
-
on?: string | undefined;
|
|
38
|
-
}) => T_9;
|
|
39
|
-
delete: <T_10 extends import("../../src/factory").IModel>(model: T_10) => void;
|
|
40
|
-
deleteMatching: <T_11 extends import("../../src/factory").IModel>(model: T_11) => void;
|
|
41
|
-
getMatching: <T_12 extends import("../../src/factory").IModel>(model: T_12) => T_12;
|
|
42
|
-
getOneOrNoneMatching: <T_13 extends import("../../src/factory").IModel>(model: T_13) => void | T_13;
|
|
43
|
-
getAnyMatching: <T_14 extends import("../../src/factory").ICollection<import("../../src/factory").IModel>>(model: import("../../src/factory").IModel) => void | T_14;
|
|
44
|
-
getAllMatching: <T_15 extends import("../../src/factory").ICollection<import("../../src/factory").IModel>>(model: import("../../src/factory").IModel) => T_15;
|
|
45
|
-
tables: any;
|
|
46
|
-
db: any;
|
|
47
|
-
};
|
|
1
|
+
declare const orm: import("../../src/orm").IPureORM;
|
|
48
2
|
export default orm;
|
|
@@ -16,7 +16,7 @@ export declare class Employers implements ICollection<Employer> {
|
|
|
16
16
|
}
|
|
17
17
|
export declare const employerEntity: {
|
|
18
18
|
tableName: string;
|
|
19
|
-
columns: import("../../src/
|
|
19
|
+
columns: import("../../src/core").IColumn[];
|
|
20
20
|
Model: typeof Employer;
|
|
21
21
|
Collection: typeof Employers;
|
|
22
22
|
};
|
|
@@ -28,7 +28,7 @@ export declare class Jobs implements ICollection<Job> {
|
|
|
28
28
|
}
|
|
29
29
|
export declare const jobEntity: {
|
|
30
30
|
tableName: string;
|
|
31
|
-
columns: import("../../src/
|
|
31
|
+
columns: import("../../src/core").IColumn[];
|
|
32
32
|
Model: typeof Job;
|
|
33
33
|
Collection: typeof Jobs;
|
|
34
34
|
};
|
|
@@ -18,7 +18,7 @@ export declare class Persons implements ICollection<Person> {
|
|
|
18
18
|
}
|
|
19
19
|
export declare const personEntity: {
|
|
20
20
|
tableName: string;
|
|
21
|
-
columns: import("../../src/
|
|
21
|
+
columns: import("../../src/core").IColumn[];
|
|
22
22
|
Model: typeof Person;
|
|
23
23
|
Collection: typeof Persons;
|
|
24
24
|
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export interface IColumnData {
|
|
2
|
+
column: string;
|
|
3
|
+
property?: string;
|
|
4
|
+
references?: IModelClass;
|
|
5
|
+
primaryKey?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare type IColumn = IColumnData | string;
|
|
8
|
+
export declare type IColumns = Array<IColumn> | (() => Array<IColumn>);
|
|
9
|
+
export interface IColumnInternalData {
|
|
10
|
+
column: string;
|
|
11
|
+
property: string;
|
|
12
|
+
references?: IModelClass;
|
|
13
|
+
primaryKey: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare type IColumnInternal = IColumnInternalData;
|
|
16
|
+
export declare type IColumnsInternal = Array<IColumnInternal>;
|
|
17
|
+
export interface IModel {
|
|
18
|
+
[key: string]: any;
|
|
19
|
+
}
|
|
20
|
+
export declare type IModelClass = new (props: any) => IModel;
|
|
21
|
+
export interface ICollection<T extends IModel> {
|
|
22
|
+
models: Array<T>;
|
|
23
|
+
}
|
|
24
|
+
export interface IEntity<T extends IModel> {
|
|
25
|
+
tableName: string;
|
|
26
|
+
displayName?: string;
|
|
27
|
+
collectionDisplayName?: string;
|
|
28
|
+
columns: IColumns;
|
|
29
|
+
Model: new (props: any) => T;
|
|
30
|
+
Collection: new ({ models }: any) => ICollection<T>;
|
|
31
|
+
}
|
|
32
|
+
export declare type IEntities<T extends IModel> = Array<IEntity<T>>;
|
|
33
|
+
export interface IEntityInternal<T extends IModel> {
|
|
34
|
+
tableName: string;
|
|
35
|
+
displayName: string;
|
|
36
|
+
collectionDisplayName: string;
|
|
37
|
+
columns: IColumnsInternal;
|
|
38
|
+
propertyNames: Array<string>;
|
|
39
|
+
Model: new (props: any) => T;
|
|
40
|
+
Collection: new ({ models }: any) => ICollection<T>;
|
|
41
|
+
columnNames: Array<string>;
|
|
42
|
+
prefixedColumnNames: Array<string>;
|
|
43
|
+
primaryKeys: Array<string>;
|
|
44
|
+
references: object;
|
|
45
|
+
selectColumnsClause: string;
|
|
46
|
+
getPkId: (model: IModel) => string;
|
|
47
|
+
}
|
|
48
|
+
export declare type IEntitiesInternal<T extends IModel> = Array<IEntityInternal<T>>;
|
|
49
|
+
export interface ICreateCoreOptions {
|
|
50
|
+
entities: IEntities<IModel>;
|
|
51
|
+
}
|
|
52
|
+
export interface ICore {
|
|
53
|
+
createFromDatabase: <T extends ICollection<IModel>>(rows: any) => T;
|
|
54
|
+
createAnyFromDatabase: <T extends ICollection<IModel>>(rows: any, rootKey: string | IModel) => T;
|
|
55
|
+
createOneFromDatabase: <T extends IModel>(rows: any) => T;
|
|
56
|
+
createOneOrNoneFromDatabase: <T extends IModel>(rows: any) => T | void;
|
|
57
|
+
createManyFromDatabase: <T extends ICollection<IModel>>(rows: any) => T;
|
|
58
|
+
tables: {
|
|
59
|
+
[key: string]: {
|
|
60
|
+
columns: string;
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
getEntityByModel: (model: IModel) => IEntityInternal<IModel>;
|
|
64
|
+
getEntityByTableName: (tableName: string) => IEntityInternal<IModel>;
|
|
65
|
+
}
|
|
66
|
+
export declare const createCore: ({ entities: externalEntities }: ICreateCoreOptions) => ICore;
|
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
+
exports.createCore = void 0;
|
|
7
|
+
const camelcase_1 = __importDefault(require("camelcase"));
|
|
8
|
+
const createCore = ({ entities: externalEntities }) => {
|
|
6
9
|
const entities = externalEntities.map((d) => {
|
|
7
10
|
const tableName = d.tableName;
|
|
8
|
-
const displayName = d.displayName ||
|
|
11
|
+
const displayName = d.displayName || (0, camelcase_1.default)(d.tableName);
|
|
9
12
|
const collectionDisplayName = d.collectionDisplayName || `${displayName}s`;
|
|
10
13
|
const columns = (typeof d.columns === 'function' ? d.columns() : d.columns).map((d) => {
|
|
11
14
|
if (typeof d === 'string') {
|
|
12
15
|
return {
|
|
13
16
|
column: d,
|
|
14
|
-
property:
|
|
17
|
+
property: (0, camelcase_1.default)(d),
|
|
15
18
|
primaryKey: false
|
|
16
19
|
};
|
|
17
20
|
}
|
|
18
|
-
return Object.assign({ column: d.column, property: d.property ||
|
|
21
|
+
return Object.assign({ column: d.column, property: d.property || (0, camelcase_1.default)(d.column), primaryKey: d.primaryKey || false }, (d.references ? { references: d.references } : {}));
|
|
19
22
|
});
|
|
20
23
|
const propertyNames = columns.map((x) => x.property);
|
|
21
24
|
const columnNames = columns.map((x) => x.column);
|
|
@@ -55,28 +58,28 @@ const create = ({ entities: externalEntities, db, logError }) => {
|
|
|
55
58
|
getPkId
|
|
56
59
|
};
|
|
57
60
|
});
|
|
61
|
+
const tableNameToEntityMap = entities.reduce((map, entity) => {
|
|
62
|
+
map.set(entity.tableName, entity);
|
|
63
|
+
return map;
|
|
64
|
+
}, new Map());
|
|
58
65
|
const getEntityByTableName = (tableName) => {
|
|
59
|
-
const entity =
|
|
66
|
+
const entity = tableNameToEntityMap.get(tableName);
|
|
60
67
|
if (!entity) {
|
|
61
68
|
throw new Error(`Could not find entity for table ${tableName}`);
|
|
62
69
|
}
|
|
63
70
|
return entity;
|
|
64
71
|
};
|
|
72
|
+
const modelToEntityMap = entities.reduce((map, entity) => {
|
|
73
|
+
map.set(entity.Model, entity);
|
|
74
|
+
return map;
|
|
75
|
+
}, new Map());
|
|
65
76
|
const getEntityByModel = (model) => {
|
|
66
|
-
const entity =
|
|
77
|
+
const entity = modelToEntityMap.get(model.constructor);
|
|
67
78
|
if (!entity) {
|
|
68
79
|
throw new Error(`Could not find entity for class ${model.constructor}`);
|
|
69
80
|
}
|
|
70
81
|
return entity;
|
|
71
82
|
};
|
|
72
|
-
const defaultErrorHandler = (err) => {
|
|
73
|
-
if (!(err.name === 'QueryResultError')) {
|
|
74
|
-
if (logError) {
|
|
75
|
-
logError(err);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
throw err;
|
|
79
|
-
};
|
|
80
83
|
/*
|
|
81
84
|
* In:
|
|
82
85
|
* [
|
|
@@ -229,7 +232,7 @@ const create = ({ entities: externalEntities, db, logError }) => {
|
|
|
229
232
|
let propertyName = entity.propertyNames[entity.columnNames.indexOf(column)];
|
|
230
233
|
if (!propertyName) {
|
|
231
234
|
if (column.startsWith('meta_')) {
|
|
232
|
-
propertyName =
|
|
235
|
+
propertyName = (0, camelcase_1.default)(column);
|
|
233
236
|
}
|
|
234
237
|
else {
|
|
235
238
|
throw Error(`No property name for "${column}" in business object "${entity.displayName}". Non-spec'd columns must begin with "meta_".`);
|
|
@@ -249,27 +252,39 @@ const create = ({ entities: externalEntities, db, logError }) => {
|
|
|
249
252
|
return Object.keys(result).reduce((obj, text) => {
|
|
250
253
|
const tableName = text.split('#')[0];
|
|
251
254
|
const column = text.split('#')[1];
|
|
255
|
+
if (!tableName || !column) {
|
|
256
|
+
throw new Error('Column names must be namespaced to table');
|
|
257
|
+
}
|
|
252
258
|
obj[tableName] = obj[tableName] || {};
|
|
253
259
|
obj[tableName][column] = result[text];
|
|
254
260
|
return obj;
|
|
255
261
|
}, {});
|
|
256
262
|
};
|
|
257
|
-
const createFromDatabase = (
|
|
258
|
-
const result = Array.isArray(
|
|
263
|
+
const createFromDatabase = (rows) => {
|
|
264
|
+
const result = Array.isArray(rows) ? rows : [rows];
|
|
259
265
|
const objectified = result.map(objectifyDatabaseResult);
|
|
260
266
|
const boified = objectified.map(mapToBos);
|
|
261
267
|
const clumps = clumpIntoGroups(boified);
|
|
262
268
|
const nested = clumps.map(nestClump);
|
|
263
269
|
const models = nested.map((n) => Object.values(n)[0]);
|
|
264
270
|
const Collection = getEntityByModel(models[0]).Collection;
|
|
265
|
-
return
|
|
271
|
+
return new Collection({ models });
|
|
272
|
+
};
|
|
273
|
+
const createAnyFromDatabase = (rows, rootKey) => {
|
|
274
|
+
if (!rows || !rows.length) {
|
|
275
|
+
const Collection = typeof rootKey === 'string'
|
|
276
|
+
? getEntityByTableName(rootKey).Collection
|
|
277
|
+
: getEntityByModel(rootKey).Collection;
|
|
278
|
+
return new Collection({ models: [] });
|
|
279
|
+
}
|
|
280
|
+
return createFromDatabase(rows);
|
|
266
281
|
};
|
|
267
|
-
const createOneFromDatabase = (
|
|
268
|
-
|
|
269
|
-
if (!collection) {
|
|
282
|
+
const createOneFromDatabase = (rows) => {
|
|
283
|
+
if (!rows || !rows.length) {
|
|
270
284
|
throw Error('Did not get one.');
|
|
271
285
|
}
|
|
272
|
-
|
|
286
|
+
const collection = createFromDatabase(rows);
|
|
287
|
+
if (!collection || !collection.models || collection.models.length === 0) {
|
|
273
288
|
throw Error('Did not get one.');
|
|
274
289
|
}
|
|
275
290
|
else if (collection.models.length > 1) {
|
|
@@ -277,241 +292,32 @@ const create = ({ entities: externalEntities, db, logError }) => {
|
|
|
277
292
|
}
|
|
278
293
|
return collection.models[0];
|
|
279
294
|
};
|
|
280
|
-
const createOneOrNoneFromDatabase = (
|
|
281
|
-
if (!
|
|
282
|
-
return
|
|
295
|
+
const createOneOrNoneFromDatabase = (rows) => {
|
|
296
|
+
if (!rows || !rows.length) {
|
|
297
|
+
return void 0;
|
|
283
298
|
}
|
|
284
|
-
|
|
285
|
-
if (collection && collection.models.length > 1) {
|
|
286
|
-
throw Error('Got more than one.');
|
|
287
|
-
}
|
|
288
|
-
return collection && collection.models[0];
|
|
299
|
+
return createOneFromDatabase(rows);
|
|
289
300
|
};
|
|
290
|
-
const createManyFromDatabase = (
|
|
291
|
-
|
|
292
|
-
if (!collection || collection.models.length === 0) {
|
|
301
|
+
const createManyFromDatabase = (rows) => {
|
|
302
|
+
if (!rows || !rows.length) {
|
|
293
303
|
throw Error('Did not get at least one.');
|
|
294
304
|
}
|
|
295
|
-
return
|
|
296
|
-
};
|
|
297
|
-
const getSqlInsertParts = (model) => {
|
|
298
|
-
const columns = getEntityByModel(model)
|
|
299
|
-
.columnNames.filter((column, index) => model[getEntityByModel(model).propertyNames[index]] !== void 0)
|
|
300
|
-
.map((col) => `"${col}"`)
|
|
301
|
-
.join(', ');
|
|
302
|
-
const values = getEntityByModel(model)
|
|
303
|
-
.propertyNames.map((property) => model[property])
|
|
304
|
-
.filter((value) => value !== void 0);
|
|
305
|
-
const valuesVar = values.map((value, index) => `$${index + 1}`);
|
|
306
|
-
return { columns, values, valuesVar };
|
|
307
|
-
};
|
|
308
|
-
const getSqlUpdateParts = (model, on = 'id') => {
|
|
309
|
-
const clauseArray = getEntityByModel(model)
|
|
310
|
-
.columnNames.filter((sqlColumn, index) => model[getEntityByModel(model).propertyNames[index]] !== void 0)
|
|
311
|
-
.map((sqlColumn, index) => `"${sqlColumn}" = $${index + 1}`);
|
|
312
|
-
const clause = clauseArray.join(', ');
|
|
313
|
-
const idVar = `$${clauseArray.length + 1}`;
|
|
314
|
-
const _values = getEntityByModel(model)
|
|
315
|
-
.propertyNames.map((property) => model[property])
|
|
316
|
-
.filter((value) => value !== void 0);
|
|
317
|
-
const values = [..._values, model[on]];
|
|
318
|
-
return { clause, idVar, values };
|
|
319
|
-
};
|
|
320
|
-
const getMatchingParts = (model) => {
|
|
321
|
-
const whereClause = getEntityByModel(model)
|
|
322
|
-
.propertyNames.map((property, index) => model[property] != null
|
|
323
|
-
? `"${getEntityByModel(model).tableName}"."${getEntityByModel(model).columnNames[index]}"`
|
|
324
|
-
: null)
|
|
325
|
-
.filter((x) => x != null)
|
|
326
|
-
.map((x, i) => `${x} = $${i + 1}`)
|
|
327
|
-
.join(' AND ');
|
|
328
|
-
const values = getEntityByModel(model)
|
|
329
|
-
.propertyNames.map((property) => model[property] != null
|
|
330
|
-
? model[property]
|
|
331
|
-
: null)
|
|
332
|
-
.filter((x) => x != null);
|
|
333
|
-
return { whereClause, values };
|
|
334
|
-
};
|
|
335
|
-
// This one returns an object, which allows it to be more versatile.
|
|
336
|
-
// To-do: make this one even better and use it instead of the one above.
|
|
337
|
-
const getMatchingPartsObject = (model) => {
|
|
338
|
-
const whereClause = getEntityByModel(model)
|
|
339
|
-
.propertyNames.map((property, index) => model[property] != null
|
|
340
|
-
? `"${getEntityByModel(model).tableName}"."${getEntityByModel(model).columnNames[index]}"`
|
|
341
|
-
: null)
|
|
342
|
-
.filter((x) => x != null)
|
|
343
|
-
.map((x, i) => `${x} = $(${i + 1})`)
|
|
344
|
-
.join(' AND ');
|
|
345
|
-
const values = getEntityByModel(model)
|
|
346
|
-
.propertyNames.map((property) => model[property] != null
|
|
347
|
-
? model[property]
|
|
348
|
-
: null)
|
|
349
|
-
.filter((x) => x != null)
|
|
350
|
-
.reduce((accum, val, index) => Object.assign({}, accum, { [index + 1]: val }), {});
|
|
351
|
-
return { whereClause, values };
|
|
352
|
-
};
|
|
353
|
-
const getNewWith = (model, sqlColumns, values) => {
|
|
354
|
-
const Constructor = model.constructor;
|
|
355
|
-
const modelKeys = sqlColumns.map((key) => getEntityByModel(model).propertyNames[getEntityByModel(model).columnNames.indexOf(key)]);
|
|
356
|
-
const modelData = modelKeys.reduce((data, key, index) => {
|
|
357
|
-
data[key] = values[index];
|
|
358
|
-
return data;
|
|
359
|
-
}, {});
|
|
360
|
-
return new Constructor(modelData);
|
|
361
|
-
};
|
|
362
|
-
const getValueBySqlColumn = (model, sqlColumn) => {
|
|
363
|
-
return model[getEntityByModel(model).propertyNames[getEntityByModel(model).columnNames.indexOf(sqlColumn)]];
|
|
364
|
-
};
|
|
365
|
-
/* ------------------------------------------------------------------------*/
|
|
366
|
-
/* Query functions --------------------------------------------------------*/
|
|
367
|
-
/* ------------------------------------------------------------------------*/
|
|
368
|
-
const one = (query, values, errorHandler = defaultErrorHandler) => {
|
|
369
|
-
return db
|
|
370
|
-
.many(query, values)
|
|
371
|
-
.then((rows) => createOneFromDatabase(rows))
|
|
372
|
-
.catch(errorHandler);
|
|
373
|
-
};
|
|
374
|
-
const oneOrNone = (query, values, errorHandler = defaultErrorHandler) => {
|
|
375
|
-
return db
|
|
376
|
-
.any(query, values)
|
|
377
|
-
.then((rows) => createOneOrNoneFromDatabase(rows))
|
|
378
|
-
.catch(errorHandler);
|
|
379
|
-
};
|
|
380
|
-
const many = (query, values, errorHandler = defaultErrorHandler) => {
|
|
381
|
-
return db
|
|
382
|
-
.any(query, values)
|
|
383
|
-
.then((rows) => createManyFromDatabase(rows))
|
|
384
|
-
.catch(errorHandler);
|
|
385
|
-
};
|
|
386
|
-
const any = (query, values, errorHandler = defaultErrorHandler) => {
|
|
387
|
-
return db
|
|
388
|
-
.any(query, values)
|
|
389
|
-
.then((rows) => createFromDatabase(rows))
|
|
390
|
-
.catch(errorHandler);
|
|
391
|
-
};
|
|
392
|
-
const none = (query, values, errorHandler = defaultErrorHandler) => {
|
|
393
|
-
return db
|
|
394
|
-
.none(query, values)
|
|
395
|
-
.then(() => null)
|
|
396
|
-
.catch(errorHandler);
|
|
397
|
-
};
|
|
398
|
-
/* ------------------------------------------------------------------------*/
|
|
399
|
-
/* Built-in basic CRUD functions ------------------------------------------*/
|
|
400
|
-
/* ------------------------------------------------------------------------*/
|
|
401
|
-
// Standard create
|
|
402
|
-
const create = (model) => {
|
|
403
|
-
const { columns, values, valuesVar } = getSqlInsertParts(model);
|
|
404
|
-
const query = `
|
|
405
|
-
INSERT INTO "${getEntityByModel(model).tableName}" ( ${columns} )
|
|
406
|
-
VALUES ( ${valuesVar} )
|
|
407
|
-
RETURNING ${getEntityByModel(model).selectColumnsClause};
|
|
408
|
-
`;
|
|
409
|
-
return one(query, values);
|
|
410
|
-
};
|
|
411
|
-
// Standard update
|
|
412
|
-
const update = (model, { on = 'id' } = {}) => {
|
|
413
|
-
const { clause, idVar, values } = getSqlUpdateParts(model, on);
|
|
414
|
-
const query = `
|
|
415
|
-
UPDATE "${getEntityByModel(model).tableName}"
|
|
416
|
-
SET ${clause}
|
|
417
|
-
WHERE "${getEntityByModel(model).tableName}".${on} = ${idVar}
|
|
418
|
-
RETURNING ${getEntityByModel(model).selectColumnsClause};
|
|
419
|
-
`;
|
|
420
|
-
return one(query, values);
|
|
421
|
-
};
|
|
422
|
-
// Standard delete
|
|
423
|
-
const _delete = (model) => {
|
|
424
|
-
const id = model.id;
|
|
425
|
-
const query = `
|
|
426
|
-
DELETE FROM "${getEntityByModel(model).tableName}"
|
|
427
|
-
WHERE "${getEntityByModel(model).tableName}".id = $(id)
|
|
428
|
-
`;
|
|
429
|
-
return none(query, { id });
|
|
430
|
-
};
|
|
431
|
-
const deleteMatching = (model) => {
|
|
432
|
-
const { whereClause, values } = getMatchingParts(model);
|
|
433
|
-
const query = `
|
|
434
|
-
DELETE FROM "${getEntityByModel(model).tableName}"
|
|
435
|
-
WHERE ${whereClause};
|
|
436
|
-
`;
|
|
437
|
-
return none(query, values);
|
|
438
|
-
};
|
|
439
|
-
const getMatching = (model) => {
|
|
440
|
-
const { whereClause, values } = getMatchingParts(model);
|
|
441
|
-
const query = `
|
|
442
|
-
SELECT ${getEntityByModel(model).selectColumnsClause}
|
|
443
|
-
FROM "${getEntityByModel(model).tableName}"
|
|
444
|
-
WHERE ${whereClause};
|
|
445
|
-
`;
|
|
446
|
-
return one(query, values);
|
|
447
|
-
};
|
|
448
|
-
const getOneOrNoneMatching = (model) => {
|
|
449
|
-
const { whereClause, values } = getMatchingParts(model);
|
|
450
|
-
const query = `
|
|
451
|
-
SELECT ${getEntityByModel(model).selectColumnsClause}
|
|
452
|
-
FROM "${getEntityByModel(model).tableName}"
|
|
453
|
-
WHERE ${whereClause};
|
|
454
|
-
`;
|
|
455
|
-
return oneOrNone(query, values);
|
|
456
|
-
};
|
|
457
|
-
const getAnyMatching = (model) => {
|
|
458
|
-
const { whereClause, values } = getMatchingParts(model);
|
|
459
|
-
const query = `
|
|
460
|
-
SELECT ${getEntityByModel(model).selectColumnsClause}
|
|
461
|
-
FROM "${getEntityByModel(model).tableName}"
|
|
462
|
-
WHERE ${whereClause};
|
|
463
|
-
`;
|
|
464
|
-
return any(query, values);
|
|
465
|
-
};
|
|
466
|
-
const getAllMatching = (model) => {
|
|
467
|
-
const { whereClause, values } = getMatchingParts(model);
|
|
468
|
-
const query = `
|
|
469
|
-
SELECT ${getEntityByModel(model).selectColumnsClause}
|
|
470
|
-
FROM "${getEntityByModel(model).tableName}"
|
|
471
|
-
WHERE ${whereClause};
|
|
472
|
-
`;
|
|
473
|
-
return many(query, values);
|
|
305
|
+
return createFromDatabase(rows);
|
|
474
306
|
};
|
|
475
307
|
return {
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
clumpIntoGroups,
|
|
479
|
-
mapToBos,
|
|
480
|
-
objectifyDatabaseResult,
|
|
308
|
+
getEntityByModel,
|
|
309
|
+
getEntityByTableName,
|
|
481
310
|
createFromDatabase,
|
|
311
|
+
createAnyFromDatabase,
|
|
482
312
|
createOneFromDatabase,
|
|
483
313
|
createOneOrNoneFromDatabase,
|
|
484
314
|
createManyFromDatabase,
|
|
485
|
-
getSqlInsertParts,
|
|
486
|
-
getSqlUpdateParts,
|
|
487
|
-
getMatchingParts,
|
|
488
|
-
getMatchingPartsObject,
|
|
489
|
-
getNewWith,
|
|
490
|
-
getValueBySqlColumn,
|
|
491
|
-
// Query Functions
|
|
492
|
-
one,
|
|
493
|
-
oneOrNone,
|
|
494
|
-
many,
|
|
495
|
-
any,
|
|
496
|
-
none,
|
|
497
|
-
// Built-in basic CRUD functions
|
|
498
|
-
create,
|
|
499
|
-
update,
|
|
500
|
-
delete: _delete,
|
|
501
|
-
deleteMatching,
|
|
502
|
-
getMatching,
|
|
503
|
-
getOneOrNoneMatching,
|
|
504
|
-
getAnyMatching,
|
|
505
|
-
getAllMatching,
|
|
506
|
-
// tables property for access to select columns clause string
|
|
507
315
|
tables: entities.reduce((accum, data) => {
|
|
508
316
|
accum[data.displayName] = {
|
|
509
317
|
columns: data.selectColumnsClause
|
|
510
318
|
};
|
|
511
319
|
return accum;
|
|
512
|
-
}, {})
|
|
513
|
-
// provide direct access to db
|
|
514
|
-
db
|
|
320
|
+
}, {})
|
|
515
321
|
};
|
|
516
322
|
};
|
|
517
|
-
exports.
|
|
323
|
+
exports.createCore = createCore;
|
|
File without changes
|