@casekit/orm 0.0.1-alpha.2 → 0.0.1-alpha.21

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 (343) hide show
  1. package/lib/migrate/commands/implode.js +1 -1
  2. package/lib/migrate/commands/implode.js.map +1 -1
  3. package/lib/migrate/sql/createTableSql.test.js +1 -0
  4. package/lib/migrate/sql/createTableSql.test.js.map +1 -1
  5. package/lib/orm.d.ts +2 -2
  6. package/lib/orm.d.ts.map +1 -1
  7. package/lib/orm.js +8 -0
  8. package/lib/orm.js.map +1 -1
  9. package/lib/queries/clauses/IncludeClause.d.ts +3 -3
  10. package/lib/queries/clauses/IncludeClause.d.ts.map +1 -1
  11. package/lib/queries/clauses/ReturningClause.d.ts +2 -3
  12. package/lib/queries/clauses/ReturningClause.d.ts.map +1 -1
  13. package/lib/queries/clauses/SelectClause.d.ts +2 -3
  14. package/lib/queries/clauses/SelectClause.d.ts.map +1 -1
  15. package/lib/queries/clauses/WhereClause.d.ts +1 -1
  16. package/lib/queries/clauses/WhereClause.d.ts.map +1 -1
  17. package/lib/queries/clauses/helpers/OptionalColumn.d.ts +5 -5
  18. package/lib/queries/clauses/helpers/OptionalColumn.d.ts.map +1 -1
  19. package/lib/queries/clauses/helpers/OptionalParams.d.ts +2 -2
  20. package/lib/queries/clauses/helpers/OptionalParams.d.ts.map +1 -1
  21. package/lib/queries/clauses/helpers/RequiredColumn.d.ts +2 -3
  22. package/lib/queries/clauses/helpers/RequiredColumn.d.ts.map +1 -1
  23. package/lib/queries/clauses/helpers/RequiredParams.d.ts +2 -2
  24. package/lib/queries/clauses/helpers/RequiredParams.d.ts.map +1 -1
  25. package/lib/queries/clauses/where/buildWhereClause.js +1 -1
  26. package/lib/queries/clauses/where/buildWhereClause.js.map +1 -1
  27. package/lib/queries/clauses/where/buildWhereClauses.d.ts +1 -1
  28. package/lib/queries/clauses/where/buildWhereClauses.d.ts.map +1 -1
  29. package/lib/queries/clauses/where/buildWhereClauses.js.map +1 -1
  30. package/lib/queries/clauses/where/buildWhereClauses.test.js +1 -1
  31. package/lib/queries/clauses/where/buildWhereClauses.test.js.map +1 -1
  32. package/lib/queries/clauses/where/types/WhereClauseValue.d.ts +1 -1
  33. package/lib/queries/clauses/where/types/WhereClauseValue.d.ts.map +1 -1
  34. package/lib/queries/count/buildCount.d.ts.map +1 -1
  35. package/lib/queries/count/buildCount.js +33 -29
  36. package/lib/queries/count/buildCount.js.map +1 -1
  37. package/lib/queries/count/countToSql.d.ts.map +1 -1
  38. package/lib/queries/count/countToSql.js +12 -17
  39. package/lib/queries/count/countToSql.js.map +1 -1
  40. package/lib/queries/count/types/CountBuilder.d.ts +12 -4
  41. package/lib/queries/count/types/CountBuilder.d.ts.map +1 -1
  42. package/lib/queries/count.d.ts.map +1 -1
  43. package/lib/queries/count.js +3 -1
  44. package/lib/queries/count.js.map +1 -1
  45. package/lib/queries/create/buildCreate.d.ts +4 -1
  46. package/lib/queries/create/buildCreate.d.ts.map +1 -1
  47. package/lib/queries/create/buildCreate.js +5 -2
  48. package/lib/queries/create/buildCreate.js.map +1 -1
  49. package/lib/queries/create/createResultSchema.d.ts.map +1 -1
  50. package/lib/queries/create/createResultSchema.js +3 -1
  51. package/lib/queries/create/createResultSchema.js.map +1 -1
  52. package/lib/queries/create/createToSql.d.ts.map +1 -1
  53. package/lib/queries/create/createToSql.js +5 -2
  54. package/lib/queries/create/createToSql.js.map +1 -1
  55. package/lib/queries/create/tests/createMany.varied-keys.test.d.ts +2 -0
  56. package/lib/queries/create/tests/createMany.varied-keys.test.d.ts.map +1 -0
  57. package/lib/queries/create/tests/createMany.varied-keys.test.js +24 -0
  58. package/lib/queries/create/tests/createMany.varied-keys.test.js.map +1 -0
  59. package/lib/queries/create/tests/createOne.test.js +53 -0
  60. package/lib/queries/create/tests/createOne.test.js.map +1 -1
  61. package/lib/queries/create/types/BaseCreateManyParams.d.ts +3 -0
  62. package/lib/queries/create/types/BaseCreateManyParams.d.ts.map +1 -1
  63. package/lib/queries/create/types/BaseCreateOneParams.d.ts +3 -0
  64. package/lib/queries/create/types/BaseCreateOneParams.d.ts.map +1 -1
  65. package/lib/queries/create/types/CreateManyParams.d.ts +4 -1
  66. package/lib/queries/create/types/CreateManyParams.d.ts.map +1 -1
  67. package/lib/queries/create/types/CreateManyResult.d.ts +1 -1
  68. package/lib/queries/create/types/CreateManyResult.d.ts.map +1 -1
  69. package/lib/queries/create/types/CreateOneParams.d.ts +4 -1
  70. package/lib/queries/create/types/CreateOneParams.d.ts.map +1 -1
  71. package/lib/queries/create/types/CreateOneResult.d.ts +1 -1
  72. package/lib/queries/create/types/CreateOneResult.d.ts.map +1 -1
  73. package/lib/queries/createMany.d.ts.map +1 -1
  74. package/lib/queries/createMany.js +3 -1
  75. package/lib/queries/createMany.js.map +1 -1
  76. package/lib/queries/createOne.d.ts.map +1 -1
  77. package/lib/queries/createOne.js +6 -0
  78. package/lib/queries/createOne.js.map +1 -1
  79. package/lib/queries/delete/buildDelete.d.ts +1 -1
  80. package/lib/queries/delete/buildDelete.d.ts.map +1 -1
  81. package/lib/queries/delete/buildDelete.js +1 -1
  82. package/lib/queries/delete/buildDelete.js.map +1 -1
  83. package/lib/queries/delete/deleteResultSchema.d.ts.map +1 -1
  84. package/lib/queries/delete/deleteResultSchema.js +3 -1
  85. package/lib/queries/delete/deleteResultSchema.js.map +1 -1
  86. package/lib/queries/delete/deleteToSql.js +1 -1
  87. package/lib/queries/delete/deleteToSql.js.map +1 -1
  88. package/lib/queries/delete/types/DeleteManyResult.d.ts +1 -1
  89. package/lib/queries/delete/types/DeleteManyResult.d.ts.map +1 -1
  90. package/lib/queries/delete/types/DeleteOneResult.d.ts +1 -1
  91. package/lib/queries/delete/types/DeleteOneResult.d.ts.map +1 -1
  92. package/lib/queries/delete/types/DeleteParams.d.ts +1 -1
  93. package/lib/queries/delete/types/DeleteParams.d.ts.map +1 -1
  94. package/lib/queries/deleteMany.d.ts.map +1 -1
  95. package/lib/queries/deleteMany.js +3 -1
  96. package/lib/queries/deleteMany.js.map +1 -1
  97. package/lib/queries/find/buildFind.d.ts.map +1 -1
  98. package/lib/queries/find/buildFind.js +39 -31
  99. package/lib/queries/find/buildFind.js.map +1 -1
  100. package/lib/queries/find/findResultSchema.d.ts.map +1 -1
  101. package/lib/queries/find/findResultSchema.js +9 -2
  102. package/lib/queries/find/findResultSchema.js.map +1 -1
  103. package/lib/queries/find/findToSql.d.ts.map +1 -1
  104. package/lib/queries/find/findToSql.js +15 -17
  105. package/lib/queries/find/findToSql.js.map +1 -1
  106. package/lib/queries/find/getIncludedManyToManyRelations.d.ts +17 -0
  107. package/lib/queries/find/getIncludedManyToManyRelations.d.ts.map +1 -0
  108. package/lib/queries/find/getIncludedManyToManyRelations.js +20 -0
  109. package/lib/queries/find/getIncludedManyToManyRelations.js.map +1 -0
  110. package/lib/queries/find/getIncludedOneToManyRelations.d.ts +12 -0
  111. package/lib/queries/find/getIncludedOneToManyRelations.d.ts.map +1 -0
  112. package/lib/queries/find/getIncludedOneToManyRelations.js +20 -0
  113. package/lib/queries/find/getIncludedOneToManyRelations.js.map +1 -0
  114. package/lib/queries/find/tests/findMany.include.test.d.ts +2 -0
  115. package/lib/queries/find/tests/findMany.include.test.d.ts.map +1 -0
  116. package/lib/queries/find/tests/findMany.include.test.js +93 -0
  117. package/lib/queries/find/tests/findMany.include.test.js.map +1 -0
  118. package/lib/queries/find/tests/findMany.lateral.test.d.ts +2 -0
  119. package/lib/queries/find/tests/findMany.lateral.test.d.ts.map +1 -0
  120. package/lib/queries/find/tests/findMany.lateral.test.js +86 -0
  121. package/lib/queries/find/tests/findMany.lateral.test.js.map +1 -0
  122. package/lib/queries/find/tests/findMany.nullable-relations.test.d.ts +2 -0
  123. package/lib/queries/find/tests/findMany.nullable-relations.test.d.ts.map +1 -0
  124. package/lib/queries/find/tests/findMany.nullable-relations.test.js +118 -0
  125. package/lib/queries/find/tests/findMany.nullable-relations.test.js.map +1 -0
  126. package/lib/queries/find/tests/middleware.find.where.test.js +12 -12
  127. package/lib/queries/find/tests/middleware.find.where.test.js.map +1 -1
  128. package/lib/queries/find/types/BaseFindParams.d.ts +2 -1
  129. package/lib/queries/find/types/BaseFindParams.d.ts.map +1 -1
  130. package/lib/queries/find/types/FindBuilder.d.ts +13 -4
  131. package/lib/queries/find/types/FindBuilder.d.ts.map +1 -1
  132. package/lib/queries/find/types/FindManyParams.d.ts +3 -2
  133. package/lib/queries/find/types/FindManyParams.d.ts.map +1 -1
  134. package/lib/queries/find/types/FindManyResult.d.ts +2 -1
  135. package/lib/queries/find/types/FindManyResult.d.ts.map +1 -1
  136. package/lib/queries/find/types/FindOneParams.d.ts +2 -1
  137. package/lib/queries/find/types/FindOneParams.d.ts.map +1 -1
  138. package/lib/queries/find/types/FindOneResult.d.ts +6 -0
  139. package/lib/queries/find/types/FindOneResult.d.ts.map +1 -1
  140. package/lib/queries/findMany.d.ts.map +1 -1
  141. package/lib/queries/findMany.js +71 -36
  142. package/lib/queries/findMany.js.map +1 -1
  143. package/lib/queries/middleware/Middleware.d.ts +1 -1
  144. package/lib/queries/middleware/Middleware.d.ts.map +1 -1
  145. package/lib/queries/update/buildUpdate.d.ts +2 -2
  146. package/lib/queries/update/buildUpdate.d.ts.map +1 -1
  147. package/lib/queries/update/buildUpdate.js +8 -8
  148. package/lib/queries/update/buildUpdate.js.map +1 -1
  149. package/lib/queries/update/tests/updateOne.test.js +3 -3
  150. package/lib/queries/update/tests/updateOne.test.js.map +1 -1
  151. package/lib/queries/update/types/BaseUpdateParams.d.ts +1 -1
  152. package/lib/queries/update/types/BaseUpdateParams.d.ts.map +1 -1
  153. package/lib/queries/update/types/UpdateManyResult.d.ts +1 -1
  154. package/lib/queries/update/types/UpdateManyResult.d.ts.map +1 -1
  155. package/lib/queries/update/types/UpdateOneResult.d.ts +1 -1
  156. package/lib/queries/update/types/UpdateOneResult.d.ts.map +1 -1
  157. package/lib/queries/update/types/UpdateParams.d.ts +2 -2
  158. package/lib/queries/update/types/UpdateParams.d.ts.map +1 -1
  159. package/lib/queries/update/types/UpdateValues.d.ts +1 -1
  160. package/lib/queries/update/types/UpdateValues.d.ts.map +1 -1
  161. package/lib/queries/update/updateResultSchema.d.ts.map +1 -1
  162. package/lib/queries/update/updateResultSchema.js +3 -1
  163. package/lib/queries/update/updateResultSchema.js.map +1 -1
  164. package/lib/queries/update/updateToSql.js +3 -3
  165. package/lib/queries/update/updateToSql.js.map +1 -1
  166. package/lib/queries/updateMany.d.ts.map +1 -1
  167. package/lib/queries/updateMany.js +3 -1
  168. package/lib/queries/updateMany.js.map +1 -1
  169. package/lib/queries/util/rowToObject.d.ts.map +1 -1
  170. package/lib/queries/util/rowToObject.js +1 -1
  171. package/lib/queries/util/rowToObject.js.map +1 -1
  172. package/lib/schema/populate/composeMiddleware.js +1 -1
  173. package/lib/schema/populate/composeMiddleware.js.map +1 -1
  174. package/lib/schema/populate/populateModel.d.ts.map +1 -1
  175. package/lib/schema/populate/populateModel.js +1 -0
  176. package/lib/schema/populate/populateModel.js.map +1 -1
  177. package/lib/schema/types/base/BaseColumn.d.ts +1 -0
  178. package/lib/schema/types/base/BaseColumn.d.ts.map +1 -1
  179. package/lib/schema/types/base/BaseRelation.d.ts +1 -0
  180. package/lib/schema/types/base/BaseRelation.d.ts.map +1 -1
  181. package/lib/schema/types/helpers/ColumnName.d.ts +2 -3
  182. package/lib/schema/types/helpers/ColumnName.d.ts.map +1 -1
  183. package/lib/schema/types/helpers/ColumnType.d.ts +2 -2
  184. package/lib/schema/types/helpers/ColumnType.d.ts.map +1 -1
  185. package/lib/schema/types/helpers/Columns.d.ts +2 -3
  186. package/lib/schema/types/helpers/Columns.d.ts.map +1 -1
  187. package/lib/schema/types/helpers/HasDefault.d.ts +2 -3
  188. package/lib/schema/types/helpers/HasDefault.d.ts.map +1 -1
  189. package/lib/schema/types/helpers/IsNullable.d.ts +2 -3
  190. package/lib/schema/types/helpers/IsNullable.d.ts.map +1 -1
  191. package/lib/schema/types/helpers/IsProvided.d.ts +5 -0
  192. package/lib/schema/types/helpers/IsProvided.d.ts.map +1 -0
  193. package/lib/schema/types/helpers/IsProvided.js +2 -0
  194. package/lib/schema/types/helpers/IsProvided.js.map +1 -0
  195. package/lib/schema/types/helpers/IsSerial.d.ts +2 -3
  196. package/lib/schema/types/helpers/IsSerial.d.ts.map +1 -1
  197. package/lib/schema/types/loose/LooseColumnDefinition.d.ts +5 -0
  198. package/lib/schema/types/loose/LooseColumnDefinition.d.ts.map +1 -1
  199. package/lib/schema/types/loose/LooseRelationDefinition.d.ts +1 -0
  200. package/lib/schema/types/loose/LooseRelationDefinition.d.ts.map +1 -1
  201. package/lib/schema/types/relations/ManyToManyRelation.d.ts +2 -2
  202. package/lib/schema/types/relations/ManyToManyRelation.d.ts.map +1 -1
  203. package/lib/schema/types/relations/ManyToOneRelation.d.ts +1 -1
  204. package/lib/schema/types/relations/ManyToOneRelation.d.ts.map +1 -1
  205. package/lib/schema/types/relations/OneToManyRelation.d.ts +2 -1
  206. package/lib/schema/types/relations/OneToManyRelation.d.ts.map +1 -1
  207. package/lib/schema/types/strict/ColumnDefinition.d.ts +5 -0
  208. package/lib/schema/types/strict/ColumnDefinition.d.ts.map +1 -1
  209. package/lib/test/db/index.d.ts +40 -0
  210. package/lib/test/db/index.d.ts.map +1 -1
  211. package/lib/test/db/models/post.model.d.ts +9 -0
  212. package/lib/test/db/models/post.model.d.ts.map +1 -1
  213. package/lib/test/db/models/post.model.js +6 -0
  214. package/lib/test/db/models/post.model.js.map +1 -1
  215. package/lib/test/db/models/post.relations.d.ts +6 -0
  216. package/lib/test/db/models/post.relations.d.ts.map +1 -1
  217. package/lib/test/db/models/post.relations.js +6 -0
  218. package/lib/test/db/models/post.relations.js.map +1 -1
  219. package/lib/test/db/models/user.model.d.ts +9 -0
  220. package/lib/test/db/models/user.model.d.ts.map +1 -1
  221. package/lib/test/db/models/user.model.js +6 -0
  222. package/lib/test/db/models/user.model.js.map +1 -1
  223. package/lib/test/db/models/user.relations.d.ts +16 -0
  224. package/lib/test/db/models/user.relations.d.ts.map +1 -1
  225. package/lib/test/db/models/user.relations.js +16 -0
  226. package/lib/test/db/models/user.relations.js.map +1 -1
  227. package/lib/test/db/models.d.ts +18 -0
  228. package/lib/test/db/models.d.ts.map +1 -1
  229. package/lib/test/db/relations.d.ts +22 -0
  230. package/lib/test/db/relations.d.ts.map +1 -1
  231. package/lib/test/gen/column.d.ts +1 -0
  232. package/lib/test/gen/column.d.ts.map +1 -1
  233. package/lib/test/seed/index.d.ts +40 -0
  234. package/lib/test/seed/index.d.ts.map +1 -1
  235. package/lib/types/ModelType.d.ts +10 -3
  236. package/lib/types/ModelType.d.ts.map +1 -1
  237. package/package.json +11 -4
  238. package/src/migrate/commands/implode.ts +1 -1
  239. package/src/migrate/sql/createTableSql.test.ts +1 -0
  240. package/src/orm.ts +10 -2
  241. package/src/queries/clauses/IncludeClause.ts +19 -3
  242. package/src/queries/clauses/ReturningClause.ts +4 -6
  243. package/src/queries/clauses/SelectClause.ts +4 -6
  244. package/src/queries/clauses/WhereClause.ts +1 -1
  245. package/src/queries/clauses/helpers/OptionalColumn.ts +10 -11
  246. package/src/queries/clauses/helpers/OptionalParams.ts +2 -2
  247. package/src/queries/clauses/helpers/RequiredColumn.ts +5 -6
  248. package/src/queries/clauses/helpers/RequiredParams.ts +2 -2
  249. package/src/queries/clauses/where/buildWhereClause.ts +1 -1
  250. package/src/queries/clauses/where/buildWhereClauses.test.ts +1 -1
  251. package/src/queries/clauses/where/buildWhereClauses.ts +1 -1
  252. package/src/queries/clauses/where/types/WhereClauseValue.ts +1 -1
  253. package/src/queries/count/buildCount.ts +39 -33
  254. package/src/queries/count/countToSql.ts +27 -32
  255. package/src/queries/count/types/CountBuilder.ts +23 -6
  256. package/src/queries/count.ts +3 -1
  257. package/src/queries/create/buildCreate.ts +8 -3
  258. package/src/queries/create/createResultSchema.ts +3 -1
  259. package/src/queries/create/createToSql.ts +10 -2
  260. package/src/queries/create/tests/createMany.varied-keys.test.ts +28 -0
  261. package/src/queries/create/tests/createOne.test.ts +70 -0
  262. package/src/queries/create/types/BaseCreateManyParams.ts +1 -0
  263. package/src/queries/create/types/BaseCreateOneParams.ts +1 -0
  264. package/src/queries/create/types/CreateManyParams.ts +4 -1
  265. package/src/queries/create/types/CreateManyResult.ts +1 -1
  266. package/src/queries/create/types/CreateOneParams.ts +4 -1
  267. package/src/queries/create/types/CreateOneResult.ts +1 -1
  268. package/src/queries/createMany.ts +3 -1
  269. package/src/queries/createOne.ts +9 -0
  270. package/src/queries/delete/buildDelete.ts +2 -2
  271. package/src/queries/delete/deleteResultSchema.ts +3 -1
  272. package/src/queries/delete/deleteToSql.ts +1 -1
  273. package/src/queries/delete/types/DeleteManyResult.ts +1 -1
  274. package/src/queries/delete/types/DeleteOneResult.ts +1 -1
  275. package/src/queries/delete/types/DeleteParams.ts +1 -1
  276. package/src/queries/deleteMany.ts +3 -1
  277. package/src/queries/find/buildFind.ts +46 -35
  278. package/src/queries/find/findResultSchema.ts +9 -2
  279. package/src/queries/find/findToSql.ts +31 -32
  280. package/src/queries/find/getIncludedManyToManyRelations.ts +49 -0
  281. package/src/queries/find/getIncludedOneToManyRelations.ts +44 -0
  282. package/src/queries/find/tests/findMany.include.test.ts +107 -0
  283. package/src/queries/find/tests/findMany.lateral.test.ts +90 -0
  284. package/src/queries/find/tests/findMany.nullable-relations.test.ts +127 -0
  285. package/src/queries/find/tests/middleware.find.where.test.ts +12 -12
  286. package/src/queries/find/types/BaseFindParams.ts +2 -1
  287. package/src/queries/find/types/FindBuilder.ts +25 -6
  288. package/src/queries/find/types/FindManyParams.ts +3 -2
  289. package/src/queries/find/types/FindManyResult.ts +2 -1
  290. package/src/queries/find/types/FindOneParams.ts +2 -1
  291. package/src/queries/find/types/FindOneResult.ts +48 -13
  292. package/src/queries/findMany.ts +127 -67
  293. package/src/queries/middleware/Middleware.ts +1 -1
  294. package/src/queries/update/buildUpdate.ts +10 -10
  295. package/src/queries/update/tests/updateOne.test.ts +3 -3
  296. package/src/queries/update/types/BaseUpdateParams.ts +1 -1
  297. package/src/queries/update/types/UpdateManyResult.ts +1 -1
  298. package/src/queries/update/types/UpdateOneResult.ts +1 -1
  299. package/src/queries/update/types/UpdateParams.ts +2 -2
  300. package/src/queries/update/types/UpdateValues.ts +1 -1
  301. package/src/queries/update/updateResultSchema.ts +3 -1
  302. package/src/queries/update/updateToSql.ts +3 -3
  303. package/src/queries/updateMany.ts +3 -1
  304. package/src/queries/util/rowToObject.ts +5 -1
  305. package/src/schema/populate/composeMiddleware.ts +1 -1
  306. package/src/schema/populate/populateModel.ts +1 -0
  307. package/src/schema/types/base/BaseColumn.ts +1 -0
  308. package/src/schema/types/base/BaseRelation.ts +1 -0
  309. package/src/schema/types/helpers/ColumnName.ts +5 -6
  310. package/src/schema/types/helpers/ColumnType.ts +2 -2
  311. package/src/schema/types/helpers/Columns.ts +2 -6
  312. package/src/schema/types/helpers/HasDefault.ts +5 -7
  313. package/src/schema/types/helpers/IsNullable.ts +4 -6
  314. package/src/schema/types/helpers/IsProvided.ts +8 -0
  315. package/src/schema/types/helpers/IsSerial.ts +4 -6
  316. package/src/schema/types/loose/LooseColumnDefinition.ts +6 -0
  317. package/src/schema/types/loose/LooseRelationDefinition.ts +1 -1
  318. package/src/schema/types/relations/ManyToManyRelation.ts +2 -2
  319. package/src/schema/types/relations/ManyToOneRelation.ts +1 -1
  320. package/src/schema/types/relations/OneToManyRelation.ts +2 -1
  321. package/src/schema/types/strict/ColumnDefinition.ts +6 -0
  322. package/src/test/db/models/post.model.ts +6 -0
  323. package/src/test/db/models/post.relations.ts +6 -0
  324. package/src/test/db/models/user.model.ts +6 -0
  325. package/src/test/db/models/user.relations.ts +16 -0
  326. package/src/types/ModelType.ts +16 -3
  327. package/.env +0 -2
  328. package/.eslintrc.cjs +0 -69
  329. package/.github/actions/ci-setup/action.yml +0 -19
  330. package/.github/dependabot.yml +0 -12
  331. package/.github/workflows/ci.yml +0 -119
  332. package/.github/workflows/dependabot.yml +0 -26
  333. package/.github/workflows/semgrep.yml +0 -24
  334. package/.prettierrc.cjs +0 -11
  335. package/.vscode/tasks.json +0 -28
  336. package/codecov.yml +0 -7
  337. package/lib/queries/clauses/helpers/ModelValues.d.ts +0 -8
  338. package/lib/queries/clauses/helpers/ModelValues.d.ts.map +0 -1
  339. package/lib/queries/clauses/helpers/ModelValues.js +0 -2
  340. package/lib/queries/clauses/helpers/ModelValues.js.map +0 -1
  341. package/src/queries/clauses/helpers/ModelValues.ts +0 -9
  342. package/tsconfig.json +0 -18
  343. package/vitest.config.ts +0 -15
@@ -9,9 +9,9 @@ import { BaseUpdateParams } from "./types/BaseUpdateParams";
9
9
 
10
10
  export type UpdateBuilder = {
11
11
  tableIndex: number;
12
- table: { name: string; model: string; alias: string; schema: string };
12
+ table: { table: string; model: string; alias: string; schema: string };
13
13
  where: WhereClause<LooseModelDefinitions, ModelName<LooseModelDefinitions>>;
14
- values: { name: string; value: unknown }[];
14
+ set: { name: string; value: unknown }[];
15
15
  returning: { name: string; path: string; alias: string }[];
16
16
  };
17
17
 
@@ -24,7 +24,7 @@ export const buildUpdate = (
24
24
  const builder: UpdateBuilder = {
25
25
  tableIndex: _tableIndex,
26
26
  table: {
27
- name: config.models[m].table,
27
+ table: config.models[m].table,
28
28
  schema: config.models[m].schema,
29
29
  model: m,
30
30
  alias: tableAlias(_tableIndex++),
@@ -35,19 +35,19 @@ export const buildUpdate = (
35
35
  model: m,
36
36
  })!
37
37
  : params.where!,
38
- values: [],
38
+ set: [],
39
39
  returning: [],
40
40
  };
41
41
  let colIndex = 0;
42
42
  const model = config.models[m];
43
- const values = config.middleware.update?.values
44
- ? config.middleware.update.values(params.values, {
43
+ const set = config.middleware.update?.set
44
+ ? config.middleware.update.set(params.set, {
45
45
  config,
46
46
  model: m,
47
47
  })
48
- : params.values;
48
+ : params.set;
49
49
 
50
- if (values.length === 0) {
50
+ if (set.length === 0) {
51
51
  throw new OrmError("No updates provided for update operation", {
52
52
  data: { m, model, params },
53
53
  });
@@ -59,8 +59,8 @@ export const buildUpdate = (
59
59
  });
60
60
  }
61
61
 
62
- for (const [k, v] of Object.entries(values)) {
63
- builder.values.push({
62
+ for (const [k, v] of Object.entries(set)) {
63
+ builder.set.push({
64
64
  name: model.columns[k]["name"],
65
65
  value: v,
66
66
  });
@@ -21,7 +21,7 @@ describe("updateOne", () => {
21
21
  const user = users["Stewart House"];
22
22
 
23
23
  const updated = await db.updateOne("user", {
24
- values: { username: "Stewart Home" },
24
+ set: { username: "Stewart Home" },
25
25
  where: { username: "Stewart House" },
26
26
  returning: ["id", "username"],
27
27
  });
@@ -56,7 +56,7 @@ describe("updateOne", () => {
56
56
 
57
57
  await expect(
58
58
  db.updateOne("user", {
59
- values: { username: "Stewart Home" },
59
+ set: { username: "Stewart Home" },
60
60
  where: { username: "Stewart Wrong" },
61
61
  returning: ["id", "username"],
62
62
  }),
@@ -91,7 +91,7 @@ describe("updateOne", () => {
91
91
 
92
92
  await expect(
93
93
  db.updateOne("user", {
94
- values: { joinedAt: new Date("2021-01-04") },
94
+ set: { joinedAt: new Date("2021-01-04") },
95
95
  where: { username: { [$like]: "Stewart %" } },
96
96
  returning: ["id", "username"],
97
97
  }),
@@ -4,7 +4,7 @@ import { NonEmptyArray } from "../../../types/util/NonEmptyArray";
4
4
  import { WhereClause } from "../../clauses/WhereClause";
5
5
 
6
6
  export type BaseUpdateParams = {
7
- values: Record<string, unknown | null>;
7
+ set: Record<string, unknown | null>;
8
8
  where: WhereClause<LooseModelDefinitions, ModelName<LooseModelDefinitions>>;
9
9
  returning?: NonEmptyArray<string>;
10
10
  };
@@ -9,7 +9,7 @@ export type UpdateManyResult<
9
9
  M extends ModelName<Models>,
10
10
  P extends UpdateParams<Models, M>,
11
11
  > =
12
- P["returning"] extends ReturningClause<Models, M>
12
+ P["returning"] extends ReturningClause<Models[M]>
13
13
  ? Readonly<{
14
14
  [C in P["returning"][number]]: ColumnType<Models, M, C>;
15
15
  }>[]
@@ -9,7 +9,7 @@ export type UpdateOneResult<
9
9
  M extends ModelName<Models>,
10
10
  P extends UpdateParams<Models, M>,
11
11
  > =
12
- P["returning"] extends ReturningClause<Models, M>
12
+ P["returning"] extends ReturningClause<Models[M]>
13
13
  ? Readonly<{
14
14
  [C in P["returning"][number]]: ColumnType<Models, M, C>;
15
15
  }>
@@ -8,7 +8,7 @@ export type UpdateParams<
8
8
  Models extends LooseModelDefinitions,
9
9
  M extends ModelName<Models>,
10
10
  > = {
11
- values: UpdateValues<Models, M>;
11
+ set: UpdateValues<Models, M>;
12
12
  where: WhereClause<Models, M>;
13
- returning?: ReturningClause<Models, M>;
13
+ returning?: ReturningClause<Models[M]>;
14
14
  };
@@ -8,5 +8,5 @@ export type UpdateValues<
8
8
  Models extends LooseModelDefinitions,
9
9
  M extends ModelName<Models>,
10
10
  > = Simplify<{
11
- [C in ColumnName<Models, M>]?: ColumnType<Models, M, C>;
11
+ [C in ColumnName<Models[M]>]?: ColumnType<Models, M, C>;
12
12
  }>;
@@ -14,7 +14,9 @@ export const updateResultSchema = (
14
14
 
15
15
  params.returning?.forEach((s) => {
16
16
  const col = config.models[m].columns[s];
17
- obj[s] = col.nullable ? col.zodSchema.nullable() : col.zodSchema;
17
+ obj[s] = col.nullable
18
+ ? col.zodSchema.nullish().transform((x) => x ?? null)
19
+ : col.zodSchema;
18
20
  });
19
21
 
20
22
  return z.object(obj);
@@ -10,15 +10,15 @@ export const updateToSql = (
10
10
  m: string,
11
11
  builder: UpdateBuilder,
12
12
  ): SQLStatement => {
13
- const { table, where, values: update, returning } = builder;
13
+ const { table, where, set, returning } = builder;
14
14
 
15
15
  const frag = sql`UPDATE %I.%I AS %I\nSET`.withIdentifiers(
16
16
  table.schema,
17
- table.name,
17
+ table.table,
18
18
  table.alias,
19
19
  );
20
20
 
21
- const fields = update.map((field) => {
21
+ const fields = set.map((field) => {
22
22
  return sql`\n %I = ${field.value}`.withIdentifiers(field.name);
23
23
  });
24
24
 
@@ -21,8 +21,10 @@ export const updateMany = async (
21
21
  values: statement.values,
22
22
  });
23
23
 
24
- if (process.env.NODE_ENV === "test" && !process.env.CI)
24
+ if (process.env.ORM_VERBOSE_LOGGING) {
25
25
  console.log(statement.text);
26
+ console.log(statement.values);
27
+ }
26
28
 
27
29
  const result = await conn.query(statement);
28
30
  return params.returning
@@ -5,5 +5,9 @@ export type ColumnMapping = { path: string | string[]; alias: string };
5
5
  export const rowToObject =
6
6
  (columns: ColumnMapping[]) =>
7
7
  (row: Record<string, unknown>): Record<string, unknown> => {
8
- return columns.reduce((acc, c) => set(acc, c.path, row[c.alias]), {});
8
+ return columns.reduce(
9
+ (acc, c) =>
10
+ row[c.alias] !== null ? set(acc, c.path, row[c.alias]) : acc,
11
+ {},
12
+ );
9
13
  };
@@ -27,7 +27,7 @@ export const composeMiddleware = (middleware: Middleware[]): Middleware => {
27
27
  values: compose(...middleware.map((m) => m.create?.values), values),
28
28
  },
29
29
  update: {
30
- values: compose(...middleware.map((m) => m.update?.values), values),
30
+ set: compose(...middleware.map((m) => m.update?.set), values),
31
31
  where: compose(...middleware.map((m) => m.update?.where), where),
32
32
  },
33
33
  delete: {
@@ -18,6 +18,7 @@ export const populateModel = (
18
18
  zodSchema: column.zodSchema ?? suggestedColumnSchema(column.type),
19
19
  nullable: column.nullable ?? false,
20
20
  default: column.default ?? null,
21
+ provided: column.provided ?? false,
21
22
  }));
22
23
 
23
24
  const primaryKey =
@@ -6,4 +6,5 @@ export type BaseColumn = {
6
6
  zodSchema: z.ZodType<unknown>;
7
7
  nullable: boolean;
8
8
  default?: unknown;
9
+ provided: boolean;
9
10
  };
@@ -10,6 +10,7 @@ export type BaseRelation =
10
10
  model: string;
11
11
  type: "N:1";
12
12
  foreignKey: string | string[];
13
+ optional?: boolean;
13
14
  }
14
15
  | {
15
16
  model: string;
@@ -1,7 +1,6 @@
1
- import { LooseModelDefinitions } from "../loose/LooseModelDefinitions";
2
- import { ModelName } from "./ModelName";
1
+ import { LooseModelDefinition } from "../loose/LooseModelDefinition";
3
2
 
4
- export type ColumnName<
5
- Models extends LooseModelDefinitions,
6
- M extends ModelName<Models>,
7
- > = Extract<keyof Models[M]["columns"], string>;
3
+ export type ColumnName<Model extends LooseModelDefinition> = Extract<
4
+ keyof Model["columns"],
5
+ string
6
+ >;
@@ -8,7 +8,7 @@ import { ModelName } from "./ModelName";
8
8
  type NonNullableColumnType<
9
9
  Models extends LooseModelDefinitions,
10
10
  M extends ModelName<Models>,
11
- C extends ColumnName<Models, M>,
11
+ C extends ColumnName<Models[M]>,
12
12
  > =
13
13
  Models[M]["columns"][C]["zodSchema"] extends z.ZodType<unknown>
14
14
  ? z.infer<Models[M]["columns"][C]["zodSchema"]>
@@ -17,7 +17,7 @@ type NonNullableColumnType<
17
17
  export type ColumnType<
18
18
  Models extends LooseModelDefinitions,
19
19
  M extends ModelName<Models>,
20
- C extends ColumnName<Models, M>,
20
+ C extends ColumnName<Models[M]>,
21
21
  > = Models[M]["columns"][C]["nullable"] extends true
22
22
  ? NonNullableColumnType<Models, M, C> | null
23
23
  : NonNullableColumnType<Models, M, C>;
@@ -1,7 +1,3 @@
1
- import { LooseModelDefinitions } from "../loose/LooseModelDefinitions";
2
- import { ModelName } from "./ModelName";
1
+ import { LooseModelDefinition } from "../loose/LooseModelDefinition";
3
2
 
4
- export type Columns<
5
- Models extends LooseModelDefinitions,
6
- M extends ModelName<Models>,
7
- > = Models[M]["columns"];
3
+ export type Columns<Model extends LooseModelDefinition> = Model["columns"];
@@ -1,13 +1,11 @@
1
- import { LooseModelDefinitions } from "../loose/LooseModelDefinitions";
1
+ import { LooseModelDefinition } from "../loose/LooseModelDefinition";
2
2
  import { Columns } from "./Columns";
3
- import { ModelName } from "./ModelName";
4
3
 
5
4
  export type HasDefault<
6
- Models extends LooseModelDefinitions,
7
- M extends ModelName<Models>,
8
- C extends keyof Columns<Models, M>,
9
- > = null extends Columns<Models, M>[C]["default"]
5
+ Model extends LooseModelDefinition,
6
+ C extends keyof Columns<Model>,
7
+ > = null extends Columns<Model>[C]["default"]
10
8
  ? false
11
- : undefined extends Columns<Models, M>[C]["default"]
9
+ : undefined extends Columns<Model>[C]["default"]
12
10
  ? false
13
11
  : true;
@@ -1,9 +1,7 @@
1
- import { LooseModelDefinitions } from "../loose/LooseModelDefinitions";
1
+ import { LooseModelDefinition } from "../loose/LooseModelDefinition";
2
2
  import { Columns } from "./Columns";
3
- import { ModelName } from "./ModelName";
4
3
 
5
4
  export type IsNullable<
6
- Models extends LooseModelDefinitions,
7
- M extends ModelName<Models>,
8
- C extends keyof Columns<Models, M>,
9
- > = Columns<Models, M>[C]["nullable"] extends true ? true : false;
5
+ Model extends LooseModelDefinition,
6
+ C extends keyof Columns<Model>,
7
+ > = Columns<Model>[C]["nullable"] extends true ? true : false;
@@ -0,0 +1,8 @@
1
+ import { LooseModelDefinition } from "../loose/LooseModelDefinition";
2
+ import { ColumnName } from "./ColumnName";
3
+ import { Columns } from "./Columns";
4
+
5
+ export type IsProvided<
6
+ Model extends LooseModelDefinition,
7
+ C extends ColumnName<Model>,
8
+ > = Columns<Model>[C]["provided"];
@@ -1,12 +1,10 @@
1
- import { LooseModelDefinitions } from "../loose/LooseModelDefinitions";
1
+ import { LooseModelDefinition } from "../loose/LooseModelDefinition";
2
2
  import { ColumnName } from "./ColumnName";
3
3
  import { Columns } from "./Columns";
4
- import { ModelName } from "./ModelName";
5
4
 
6
5
  export type IsSerial<
7
- Models extends LooseModelDefinitions,
8
- M extends ModelName<Models>,
9
- C extends ColumnName<Models, M>,
10
- > = Columns<Models, M>[C]["type"] extends "serial" | "bigserial" | "smallserial"
6
+ Model extends LooseModelDefinition,
7
+ C extends ColumnName<Model>,
8
+ > = Columns<Model>[C]["type"] extends "serial" | "bigserial" | "smallserial"
11
9
  ? true
12
10
  : false;
@@ -71,4 +71,10 @@ export type LooseColumnDefinition<ColumnType = unknown> = {
71
71
  onUpdate?: SQLStatement;
72
72
  onDelete?: SQLStatement;
73
73
  };
74
+
75
+ /**
76
+ * Is this column provided by middleware? If so, it will not be included in
77
+ * the set of required columns for inserts and updates.
78
+ */
79
+ provided?: boolean;
74
80
  };
@@ -1,6 +1,6 @@
1
1
  export type LooseRelationDefinition =
2
2
  | { model: string; type: "1:N"; foreignKey: string }
3
- | { model: string; type: "N:1"; foreignKey: string }
3
+ | { model: string; type: "N:1"; foreignKey: string; optional?: true }
4
4
  | {
5
5
  model: string;
6
6
  type: "N:N";
@@ -8,8 +8,8 @@ export type ManyToManyRelation<Models extends LooseModelDefinitions> = {
8
8
  model: M2;
9
9
  through: J;
10
10
  type: "N:N";
11
- foreignKey: ColumnName<Models, J> | ColumnName<Models, J>[];
12
- otherKey: ColumnName<Models, J> | ColumnName<Models, J>[];
11
+ foreignKey: ColumnName<Models[J]> | ColumnName<Models[J]>[];
12
+ otherKey: ColumnName<Models[J]> | ColumnName<Models[J]>[];
13
13
  };
14
14
  };
15
15
  }[ModelName<Models>][ModelName<Models>];
@@ -9,6 +9,6 @@ export type ManyToOneRelation<
9
9
  [M2 in ModelName<Models>]: {
10
10
  model: M2;
11
11
  type: "N:1";
12
- foreignKey: ColumnName<Models, M> | ColumnName<Models, M>[];
12
+ foreignKey: ColumnName<Models[M]> | ColumnName<Models[M]>[];
13
13
  };
14
14
  }[ModelName<Models>];
@@ -6,6 +6,7 @@ export type OneToManyRelation<Models extends LooseModelDefinitions> = {
6
6
  [M2 in ModelName<Models>]: {
7
7
  model: M2;
8
8
  type: "1:N";
9
- foreignKey: ColumnName<Models, M2> | ColumnName<Models, M2>[];
9
+ foreignKey: ColumnName<Models[M2]> | ColumnName<Models[M2]>[];
10
+ optional?: boolean;
10
11
  };
11
12
  }[ModelName<Models>];
@@ -72,4 +72,10 @@ export type ColumnDefinition<ColumnType = unknown> = {
72
72
  onUpdate?: SQLStatement;
73
73
  onDelete?: SQLStatement;
74
74
  };
75
+
76
+ /**
77
+ * Is this column provided by middleware? If so, it will not be included in
78
+ * the set of required columns for inserts and updates.
79
+ */
80
+ provided?: boolean;
75
81
  };
@@ -15,6 +15,12 @@ export const post = {
15
15
  type: "uuid",
16
16
  references: { table: "user", column: "id" },
17
17
  },
18
+ reviewedById: {
19
+ name: "reviewed_by_id",
20
+ type: "uuid",
21
+ nullable: true,
22
+ references: { table: "user", column: "id" },
23
+ },
18
24
  publishedAt: { type: "timestamp", nullable: true },
19
25
  tags: { type: "text[][][][]", nullable: true },
20
26
  tenantId: {
@@ -7,6 +7,12 @@ export const post = {
7
7
  type: "N:1",
8
8
  foreignKey: "authorId",
9
9
  },
10
+ reviewedBy: {
11
+ model: "user",
12
+ type: "N:1",
13
+ foreignKey: "reviewedById",
14
+ optional: true,
15
+ },
10
16
  tenant: {
11
17
  model: "tenant",
12
18
  type: "N:1",
@@ -7,6 +7,12 @@ export const user = {
7
7
  columns: {
8
8
  id: { type: "uuid", default: sql`uuid_generate_v4()` },
9
9
  username: { zodSchema: z.string(), type: "text" },
10
+ invitedById: {
11
+ name: "invited_by_id",
12
+ type: "uuid",
13
+ nullable: true,
14
+ references: { table: "user", column: "id" },
15
+ },
10
16
  joinedAt: {
11
17
  name: "created_at",
12
18
  zodSchema: z.date(),
@@ -7,6 +7,22 @@ export const user = {
7
7
  model: "post",
8
8
  foreignKey: "authorId",
9
9
  },
10
+ reviewedPosts: {
11
+ type: "1:N",
12
+ model: "post",
13
+ foreignKey: "reviewedById",
14
+ },
15
+ invitedBy: {
16
+ type: "N:1",
17
+ model: "user",
18
+ foreignKey: "invitedById",
19
+ optional: true,
20
+ },
21
+ invitedUsers: {
22
+ type: "1:N",
23
+ model: "user",
24
+ foreignKey: "invitedById",
25
+ },
10
26
  tenancies: {
11
27
  type: "1:N",
12
28
  model: "tenantUser",
@@ -1,7 +1,20 @@
1
+ import { IsNullable } from "../schema/types/helpers/IsNullable";
1
2
  import { LooseModelDefinition } from "../schema/types/loose/LooseModelDefinition";
2
3
  import { ColumnName } from "./ColumnName";
3
4
  import { ColumnType } from "./ColumnType";
5
+ import { Simplify } from "./util/Simplify";
4
6
 
5
- export type ModelType<Model extends LooseModelDefinition> = {
6
- [C in ColumnName<Model>]: ColumnType<Model, C>;
7
- };
7
+ export type NullableColumn<Model extends LooseModelDefinition> = {
8
+ [C in ColumnName<Model>]: IsNullable<Model, C> extends true ? C : never;
9
+ }[ColumnName<Model>];
10
+
11
+ export type ModelType<Model extends LooseModelDefinition> = Simplify<
12
+ {
13
+ [C in Exclude<ColumnName<Model>, NullableColumn<Model>>]: ColumnType<
14
+ Model,
15
+ C
16
+ >;
17
+ } & {
18
+ [C in NullableColumn<Model>]?: ColumnType<Model, C>;
19
+ }
20
+ >;
package/.env DELETED
@@ -1,2 +0,0 @@
1
- PGDATABASE=orm
2
- PGPASSWORD=password
package/.eslintrc.cjs DELETED
@@ -1,69 +0,0 @@
1
- /** @type {import('eslint').Linter.Config} */
2
- module.exports = {
3
- root: true,
4
- parserOptions: {
5
- ecmaVersion: "latest",
6
- sourceType: "module",
7
- ecmaFeatures: {
8
- jsx: true,
9
- },
10
- },
11
- env: {
12
- browser: true,
13
- commonjs: true,
14
- es6: true,
15
- },
16
-
17
- // Base config
18
- extends: ["eslint:recommended"],
19
-
20
- ignorePatterns: ["vitest.config.ts"],
21
-
22
- overrides: [
23
- // Typescript
24
- {
25
- files: ["**/*.{ts,tsx}"],
26
- plugins: ["@typescript-eslint", "import"],
27
- parser: "@typescript-eslint/parser",
28
- parserOptions: {
29
- project: "./tsconfig.json",
30
- tsconfigRootDir: "./",
31
- },
32
- settings: {
33
- "import/internal-regex": "^~/",
34
- "import/resolver": {
35
- node: {
36
- extensions: [".ts", ".tsx"],
37
- },
38
- typescript: {
39
- alwaysTryTypes: true,
40
- },
41
- },
42
- },
43
- extends: [
44
- "plugin:@typescript-eslint/recommended",
45
- "plugin:import/recommended",
46
- "plugin:import/typescript",
47
- ],
48
- rules: {
49
- "@typescript-eslint/no-unused-vars": [
50
- "error",
51
- {
52
- argsIgnorePattern: "^_",
53
- varsIgnorePattern: "^_",
54
- caughtErrorsIgnorePattern: "^_",
55
- },
56
- ],
57
- "@typescript-eslint/no-floating-promises": "error",
58
- },
59
- },
60
-
61
- // Node
62
- {
63
- files: [".eslintrc.cjs"],
64
- env: {
65
- node: true,
66
- },
67
- },
68
- ],
69
- };
@@ -1,19 +0,0 @@
1
- name: CI setup
2
- runs:
3
- using: composite
4
- steps:
5
- - uses: pnpm/action-setup@v3
6
- name: Install pnpm
7
- with:
8
- version: 8
9
- run_install: false
10
-
11
- - uses: actions/setup-node@v4
12
- with:
13
- node-version: 21
14
- cache: pnpm
15
- registry-url: "https://registry.npmjs.org"
16
-
17
- - name: Install dependencies
18
- run: pnpm install
19
- shell: bash
@@ -1,12 +0,0 @@
1
- version: 2
2
- updates:
3
- - package-ecosystem: "npm"
4
- directory: "/"
5
- open-pull-requests-limit: 25
6
- schedule:
7
- interval: "daily"
8
- - package-ecosystem: "github-actions"
9
- directory: "/"
10
- open-pull-requests-limit: 25
11
- schedule:
12
- interval: "daily"