pure-orm 4.0.0-7 → 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.
Files changed (168) hide show
  1. package/README.md +5 -11
  2. package/coverage/clover.xml +279 -267
  3. package/coverage/coverage-final.json +2 -2
  4. package/coverage/lcov-report/dist/src/core.js.html +34 -10
  5. package/coverage/lcov-report/dist/src/index.html +10 -10
  6. package/coverage/lcov-report/dist/test-utils/blog/entities.js.html +1 -1
  7. package/coverage/lcov-report/dist/test-utils/blog/index.html +1 -1
  8. package/coverage/lcov-report/dist/test-utils/blog/models/article.js.html +1 -1
  9. package/coverage/lcov-report/dist/test-utils/blog/models/article_tag.js.html +1 -1
  10. package/coverage/lcov-report/dist/test-utils/blog/models/index.html +1 -1
  11. package/coverage/lcov-report/dist/test-utils/blog/models/person.js.html +1 -1
  12. package/coverage/lcov-report/dist/test-utils/blog/models/tag.js.html +1 -1
  13. package/coverage/lcov-report/dist/test-utils/five/entities.js.html +1 -1
  14. package/coverage/lcov-report/dist/test-utils/five/index.html +1 -1
  15. package/coverage/lcov-report/dist/test-utils/five/models/index.html +1 -1
  16. package/coverage/lcov-report/dist/test-utils/five/models/line-item.js.html +1 -1
  17. package/coverage/lcov-report/dist/test-utils/five/models/order.js.html +1 -1
  18. package/coverage/lcov-report/dist/test-utils/five/models/parcel-event.js.html +1 -1
  19. package/coverage/lcov-report/dist/test-utils/five/models/parcel-line-item.js.html +1 -1
  20. package/coverage/lcov-report/dist/test-utils/five/models/parcel.js.html +1 -1
  21. package/coverage/lcov-report/dist/test-utils/nine/entities.js.html +1 -1
  22. package/coverage/lcov-report/dist/test-utils/nine/index.html +1 -1
  23. package/coverage/lcov-report/dist/test-utils/nine/models/feature-switch.js.html +1 -1
  24. package/coverage/lcov-report/dist/test-utils/nine/models/index.html +1 -1
  25. package/coverage/lcov-report/dist/test-utils/order/entities.js.html +1 -1
  26. package/coverage/lcov-report/dist/test-utils/order/index.html +1 -1
  27. package/coverage/lcov-report/dist/test-utils/order/models/index.html +1 -1
  28. package/coverage/lcov-report/dist/test-utils/order/models/line-item.js.html +1 -1
  29. package/coverage/lcov-report/dist/test-utils/order/models/order.js.html +1 -1
  30. package/coverage/lcov-report/dist/test-utils/order/models/product-variant.js.html +1 -1
  31. package/coverage/lcov-report/dist/test-utils/order/models/product.js.html +1 -1
  32. package/coverage/lcov-report/dist/test-utils/order/models/utm-source.js.html +1 -1
  33. package/coverage/lcov-report/dist/test-utils/order-more/entities.js.html +1 -1
  34. package/coverage/lcov-report/dist/test-utils/order-more/index.html +1 -1
  35. package/coverage/lcov-report/dist/test-utils/order-more/models/actual-product-variant.js.html +1 -1
  36. package/coverage/lcov-report/dist/test-utils/order-more/models/color.js.html +1 -1
  37. package/coverage/lcov-report/dist/test-utils/order-more/models/customer.js.html +1 -1
  38. package/coverage/lcov-report/dist/test-utils/order-more/models/gender.js.html +1 -1
  39. package/coverage/lcov-report/dist/test-utils/order-more/models/index.html +1 -1
  40. package/coverage/lcov-report/dist/test-utils/order-more/models/inventory-level.js.html +1 -1
  41. package/coverage/lcov-report/dist/test-utils/order-more/models/line-item.js.html +1 -1
  42. package/coverage/lcov-report/dist/test-utils/order-more/models/order.js.html +1 -1
  43. package/coverage/lcov-report/dist/test-utils/order-more/models/parcel-event.js.html +1 -1
  44. package/coverage/lcov-report/dist/test-utils/order-more/models/parcel-line-item.js.html +1 -1
  45. package/coverage/lcov-report/dist/test-utils/order-more/models/parcel.js.html +1 -1
  46. package/coverage/lcov-report/dist/test-utils/order-more/models/physical-address.js.html +1 -1
  47. package/coverage/lcov-report/dist/test-utils/order-more/models/product-variant-image.js.html +1 -1
  48. package/coverage/lcov-report/dist/test-utils/order-more/models/product-variant.js.html +1 -1
  49. package/coverage/lcov-report/dist/test-utils/order-more/models/product.js.html +1 -1
  50. package/coverage/lcov-report/dist/test-utils/order-more/models/refund.js.html +1 -1
  51. package/coverage/lcov-report/dist/test-utils/order-more/models/shipment-actual-product-variant.js.html +1 -1
  52. package/coverage/lcov-report/dist/test-utils/order-more/models/shipment.js.html +1 -1
  53. package/coverage/lcov-report/dist/test-utils/order-more/models/size.js.html +1 -1
  54. package/coverage/lcov-report/dist/test-utils/order-more/models/utm-medium.js.html +1 -1
  55. package/coverage/lcov-report/dist/test-utils/order-more/models/utm-source.js.html +1 -1
  56. package/coverage/lcov-report/dist/test-utils/six/entities.js.html +1 -1
  57. package/coverage/lcov-report/dist/test-utils/six/index.html +1 -1
  58. package/coverage/lcov-report/dist/test-utils/six/models/customer.js.html +1 -1
  59. package/coverage/lcov-report/dist/test-utils/six/models/index.html +1 -1
  60. package/coverage/lcov-report/dist/test-utils/six/models/line-item.js.html +1 -1
  61. package/coverage/lcov-report/dist/test-utils/six/models/order.js.html +1 -1
  62. package/coverage/lcov-report/dist/test-utils/six/models/parcel-line-item.js.html +1 -1
  63. package/coverage/lcov-report/dist/test-utils/six/models/parcel.js.html +1 -1
  64. package/coverage/lcov-report/dist/test-utils/thirteen/entities.js.html +1 -1
  65. package/coverage/lcov-report/dist/test-utils/thirteen/index.html +1 -1
  66. package/coverage/lcov-report/dist/test-utils/thirteen/models/audience.js.html +1 -1
  67. package/coverage/lcov-report/dist/test-utils/thirteen/models/brand.js.html +1 -1
  68. package/coverage/lcov-report/dist/test-utils/thirteen/models/category.js.html +1 -1
  69. package/coverage/lcov-report/dist/test-utils/thirteen/models/index.html +1 -1
  70. package/coverage/lcov-report/dist/test-utils/thirteen/models/member.js.html +1 -1
  71. package/coverage/lcov-report/dist/test-utils/thirteen/models/passion.js.html +1 -1
  72. package/coverage/lcov-report/dist/test-utils/thirteen/models/product.js.html +1 -1
  73. package/coverage/lcov-report/dist/test-utils/thirteen/models/recommendation-audience.js.html +1 -1
  74. package/coverage/lcov-report/dist/test-utils/thirteen/models/recommendation.js.html +1 -1
  75. package/coverage/lcov-report/dist/test-utils/three/index.html +1 -1
  76. package/coverage/lcov-report/dist/test-utils/three/results.js.html +1 -1
  77. package/coverage/lcov-report/dist/test-utils/twelve/entities.js.html +1 -1
  78. package/coverage/lcov-report/dist/test-utils/twelve/index.html +1 -1
  79. package/coverage/lcov-report/dist/test-utils/twelve/models/index.html +1 -1
  80. package/coverage/lcov-report/dist/test-utils/twelve/models/member.js.html +1 -1
  81. package/coverage/lcov-report/dist/test-utils/twelve/models/prompt.js.html +1 -1
  82. package/coverage/lcov-report/dist/test-utils/two/index.html +1 -1
  83. package/coverage/lcov-report/dist/test-utils/two/results.js.html +1 -1
  84. package/coverage/lcov-report/index.html +15 -15
  85. package/coverage/lcov-report/src/core.ts.html +76 -10
  86. package/coverage/lcov-report/src/index.html +10 -10
  87. package/coverage/lcov-report/test-utils/blog/entities.ts.html +1 -1
  88. package/coverage/lcov-report/test-utils/blog/index.html +1 -1
  89. package/coverage/lcov-report/test-utils/blog/models/article.ts.html +1 -1
  90. package/coverage/lcov-report/test-utils/blog/models/article_tag.ts.html +1 -1
  91. package/coverage/lcov-report/test-utils/blog/models/index.html +1 -1
  92. package/coverage/lcov-report/test-utils/blog/models/person.ts.html +1 -1
  93. package/coverage/lcov-report/test-utils/blog/models/tag.ts.html +1 -1
  94. package/coverage/lcov-report/test-utils/five/entities.ts.html +1 -1
  95. package/coverage/lcov-report/test-utils/five/index.html +1 -1
  96. package/coverage/lcov-report/test-utils/five/models/index.html +1 -1
  97. package/coverage/lcov-report/test-utils/five/models/line-item.ts.html +1 -1
  98. package/coverage/lcov-report/test-utils/five/models/order.ts.html +1 -1
  99. package/coverage/lcov-report/test-utils/five/models/parcel-event.ts.html +1 -1
  100. package/coverage/lcov-report/test-utils/five/models/parcel-line-item.ts.html +1 -1
  101. package/coverage/lcov-report/test-utils/five/models/parcel.ts.html +1 -1
  102. package/coverage/lcov-report/test-utils/nine/entities.ts.html +1 -1
  103. package/coverage/lcov-report/test-utils/nine/index.html +1 -1
  104. package/coverage/lcov-report/test-utils/nine/models/feature-switch.ts.html +1 -1
  105. package/coverage/lcov-report/test-utils/nine/models/index.html +1 -1
  106. package/coverage/lcov-report/test-utils/order/entities.ts.html +1 -1
  107. package/coverage/lcov-report/test-utils/order/index.html +1 -1
  108. package/coverage/lcov-report/test-utils/order/models/index.html +1 -1
  109. package/coverage/lcov-report/test-utils/order/models/line-item.ts.html +1 -1
  110. package/coverage/lcov-report/test-utils/order/models/order.ts.html +1 -1
  111. package/coverage/lcov-report/test-utils/order/models/product-variant.ts.html +1 -1
  112. package/coverage/lcov-report/test-utils/order/models/product.ts.html +1 -1
  113. package/coverage/lcov-report/test-utils/order/models/utm-source.ts.html +1 -1
  114. package/coverage/lcov-report/test-utils/order-more/entities.ts.html +1 -1
  115. package/coverage/lcov-report/test-utils/order-more/index.html +1 -1
  116. package/coverage/lcov-report/test-utils/order-more/models/actual-product-variant.ts.html +1 -1
  117. package/coverage/lcov-report/test-utils/order-more/models/color.ts.html +1 -1
  118. package/coverage/lcov-report/test-utils/order-more/models/customer.ts.html +1 -1
  119. package/coverage/lcov-report/test-utils/order-more/models/gender.ts.html +1 -1
  120. package/coverage/lcov-report/test-utils/order-more/models/index.html +1 -1
  121. package/coverage/lcov-report/test-utils/order-more/models/inventory-level.ts.html +1 -1
  122. package/coverage/lcov-report/test-utils/order-more/models/line-item.ts.html +1 -1
  123. package/coverage/lcov-report/test-utils/order-more/models/order.ts.html +1 -1
  124. package/coverage/lcov-report/test-utils/order-more/models/parcel-event.ts.html +1 -1
  125. package/coverage/lcov-report/test-utils/order-more/models/parcel-line-item.ts.html +1 -1
  126. package/coverage/lcov-report/test-utils/order-more/models/parcel.ts.html +1 -1
  127. package/coverage/lcov-report/test-utils/order-more/models/physical-address.ts.html +1 -1
  128. package/coverage/lcov-report/test-utils/order-more/models/product-variant-image.ts.html +1 -1
  129. package/coverage/lcov-report/test-utils/order-more/models/product-variant.ts.html +1 -1
  130. package/coverage/lcov-report/test-utils/order-more/models/product.ts.html +1 -1
  131. package/coverage/lcov-report/test-utils/order-more/models/refund.ts.html +1 -1
  132. package/coverage/lcov-report/test-utils/order-more/models/shipment-actual-product-variant.ts.html +1 -1
  133. package/coverage/lcov-report/test-utils/order-more/models/shipment.ts.html +1 -1
  134. package/coverage/lcov-report/test-utils/order-more/models/size.ts.html +1 -1
  135. package/coverage/lcov-report/test-utils/order-more/models/utm-medium.ts.html +1 -1
  136. package/coverage/lcov-report/test-utils/order-more/models/utm-source.ts.html +1 -1
  137. package/coverage/lcov-report/test-utils/six/entities.ts.html +1 -1
  138. package/coverage/lcov-report/test-utils/six/index.html +1 -1
  139. package/coverage/lcov-report/test-utils/six/models/customer.ts.html +1 -1
  140. package/coverage/lcov-report/test-utils/six/models/index.html +1 -1
  141. package/coverage/lcov-report/test-utils/six/models/line-item.ts.html +1 -1
  142. package/coverage/lcov-report/test-utils/six/models/order.ts.html +1 -1
  143. package/coverage/lcov-report/test-utils/six/models/parcel-line-item.ts.html +1 -1
  144. package/coverage/lcov-report/test-utils/six/models/parcel.ts.html +1 -1
  145. package/coverage/lcov-report/test-utils/thirteen/entities.ts.html +1 -1
  146. package/coverage/lcov-report/test-utils/thirteen/index.html +1 -1
  147. package/coverage/lcov-report/test-utils/thirteen/models/audience.ts.html +1 -1
  148. package/coverage/lcov-report/test-utils/thirteen/models/brand.ts.html +1 -1
  149. package/coverage/lcov-report/test-utils/thirteen/models/category.ts.html +1 -1
  150. package/coverage/lcov-report/test-utils/thirteen/models/index.html +1 -1
  151. package/coverage/lcov-report/test-utils/thirteen/models/member.ts.html +1 -1
  152. package/coverage/lcov-report/test-utils/thirteen/models/passion.ts.html +1 -1
  153. package/coverage/lcov-report/test-utils/thirteen/models/product.ts.html +1 -1
  154. package/coverage/lcov-report/test-utils/thirteen/models/recommendation-audience.ts.html +1 -1
  155. package/coverage/lcov-report/test-utils/thirteen/models/recommendation.ts.html +1 -1
  156. package/coverage/lcov-report/test-utils/three/index.html +1 -1
  157. package/coverage/lcov-report/test-utils/three/results.js.html +1 -1
  158. package/coverage/lcov-report/test-utils/twelve/entities.ts.html +1 -1
  159. package/coverage/lcov-report/test-utils/twelve/index.html +1 -1
  160. package/coverage/lcov-report/test-utils/twelve/models/index.html +1 -1
  161. package/coverage/lcov-report/test-utils/twelve/models/member.ts.html +1 -1
  162. package/coverage/lcov-report/test-utils/twelve/models/prompt.ts.html +1 -1
  163. package/coverage/lcov-report/test-utils/two/index.html +1 -1
  164. package/coverage/lcov-report/test-utils/two/results.js.html +1 -1
  165. package/coverage/lcov.info +512 -500
  166. package/dist/src/core.js +10 -2
  167. package/package.json +1 -1
  168. package/src/core.ts +24 -2
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # [PureORM](https://github.com/craigmichaelmartin/pure-orm) · [![Build Status](https://travis-ci.org/craigmichaelmartin/pure-orm.svg?branch=master)](https://travis-ci.org/craigmichaelmartin/pure-orm) [![codecov](https://codecov.io/gh/craigmichaelmartin/pure-orm/branch/master/graph/badge.svg)](https://codecov.io/gh/craigmichaelmartin/pure-orm)
1
+ # [PureORM](https://github.com/craigmichaelmartin/pure-orm)
2
2
 
3
3
  ## Installation
4
4
 
@@ -43,10 +43,10 @@ A **Collection** is a pure business object with a reference to a group of models
43
43
  - If your query returns records for multiple models, a Collection will be created and returned.
44
44
  - You can create the Collection class (in cases where it is useful to have business methods on the collection object, not just each model object).
45
45
 
46
- A **Data Access Layer** is a database-aware abstraction layer where native SQL is written.
46
+ A **Data Access Layer** is a database-aware abstraction layer where native SQL is written, and which returns pure business objects.
47
47
 
48
- - This is not an "expresion language" or "query builder". There are not hundreds of methods mapping the complexity, expressiveness, and nuance of SQL to class objects.
49
- - Rather, is a data access layer in which native SQL is written, and which returns business objects (properly nested and structured).
48
+ - With PureORM, database-aware code is limited to a data access layer. Your higher up controller and service layers deal only with API calls to the Data Access functions, which are written with native SQL, and which returns pure business objects.
49
+ - There are no database-bound stateful orm objects with their huge query builder APIs sprawling across all the application code. Instead there is a single layer where native SQL is written, and which returns pure business objects (properly nested and structured).
50
50
 
51
51
  ## Practical Example
52
52
 
@@ -631,7 +631,7 @@ Traditional/stateful ORMs offer a dialetic-generic, chainable object api for exp
631
631
 
632
632
  ### Will I then have dozens of similar data access functions, since strings aren't as composable as stateful ORM builder builder APIs?
633
633
 
634
- There is still a lot of composibility possible with functions returning strings (someone create an Issue if you want to see examples used in the Kujo codebase), but in general yes, there is more repitition. Most of this remaining repitition is not something I think is a defect (though those obsessed with DRY would disagree). The only "defect" of this repitition is that there may be more than one similiar method (for example a "get" that does certain joins vs others), and differentiating the large query in a function name can be lengthy/annoying. In these cases where composing functions doesn't bring the number of similar functions methods to only one, rather than distilling these large queries into the function name (eg, getPersonWithJobsAndEmployers), I usually just opt for a small arbitrary hash at the end of the short name (eg, getXTW instead of getPersonWithJobsAndEmployers, getRJF instead of getPersonWithFriendsLocatedNearANewFriendRequest, etc).
634
+ There is still a lot of composibility possible with functions returning strings (someone create an Issue if you want to see examples used in the Kujo codebase), but in general yes, there is more repitition. Most of this remaining repitition is not something I think is a defect (though those obsessed with DRY would disagree).
635
635
 
636
636
  ### Does PureORM abstract away the database driver?
637
637
 
@@ -684,12 +684,6 @@ PureORM
684
684
 
685
685
  ## Current Status
686
686
 
687
- #### Current Limitations (PRs welcome!)
688
-
689
- - `pg-promise`/`node-postgres` is the only database driver supported out-of-the-box. There is not technical reason for this, other than that the project I'm using has a postgres database and so I only had `pg-promise` in mind. We could support more database drivers out of the box.
690
- - there must be a clear path in the "select" to your leaf joined-to-entities (eg, (Good): Article, ArticleTag, Tag, TagModerator, Moderator; not (Bad): Article, Moderator).
691
- - the result of _the select_ must always be a non-circular tree (eg, (Bad): Article, Person, Group, GroupArticle, Article)
692
-
693
687
  #### Current Todos (PRs welcome!):
694
688
 
695
689
  - Performance. While the API has been somewhat thought through and iterated on to this point, the implementation details have been secondary, knowing that they can be perfected in time. Probably about time now.