@casekit/orm 0.0.1-alpha.1 → 0.0.1-alpha.11

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 (331) hide show
  1. package/.github/workflows/ci.yml +2 -0
  2. package/lib/migrate/commands/implode.js +1 -1
  3. package/lib/migrate/commands/implode.js.map +1 -1
  4. package/lib/migrate/sql/createTableSql.test.js +1 -0
  5. package/lib/migrate/sql/createTableSql.test.js.map +1 -1
  6. package/lib/orm.d.ts +2 -2
  7. package/lib/orm.d.ts.map +1 -1
  8. package/lib/orm.js +8 -0
  9. package/lib/orm.js.map +1 -1
  10. package/lib/queries/clauses/IncludeClause.d.ts +3 -3
  11. package/lib/queries/clauses/IncludeClause.d.ts.map +1 -1
  12. package/lib/queries/clauses/ReturningClause.d.ts +2 -3
  13. package/lib/queries/clauses/ReturningClause.d.ts.map +1 -1
  14. package/lib/queries/clauses/SelectClause.d.ts +2 -3
  15. package/lib/queries/clauses/SelectClause.d.ts.map +1 -1
  16. package/lib/queries/clauses/WhereClause.d.ts +1 -1
  17. package/lib/queries/clauses/WhereClause.d.ts.map +1 -1
  18. package/lib/queries/clauses/helpers/OptionalColumn.d.ts +5 -5
  19. package/lib/queries/clauses/helpers/OptionalColumn.d.ts.map +1 -1
  20. package/lib/queries/clauses/helpers/OptionalParams.d.ts +2 -2
  21. package/lib/queries/clauses/helpers/OptionalParams.d.ts.map +1 -1
  22. package/lib/queries/clauses/helpers/RequiredColumn.d.ts +2 -3
  23. package/lib/queries/clauses/helpers/RequiredColumn.d.ts.map +1 -1
  24. package/lib/queries/clauses/helpers/RequiredParams.d.ts +2 -2
  25. package/lib/queries/clauses/helpers/RequiredParams.d.ts.map +1 -1
  26. package/lib/queries/clauses/where/buildWhereClauses.d.ts +1 -1
  27. package/lib/queries/clauses/where/buildWhereClauses.d.ts.map +1 -1
  28. package/lib/queries/clauses/where/buildWhereClauses.js.map +1 -1
  29. package/lib/queries/clauses/where/buildWhereClauses.test.js +1 -1
  30. package/lib/queries/clauses/where/buildWhereClauses.test.js.map +1 -1
  31. package/lib/queries/clauses/where/types/WhereClauseValue.d.ts +1 -1
  32. package/lib/queries/clauses/where/types/WhereClauseValue.d.ts.map +1 -1
  33. package/lib/queries/count/buildCount.d.ts.map +1 -1
  34. package/lib/queries/count/buildCount.js +33 -29
  35. package/lib/queries/count/buildCount.js.map +1 -1
  36. package/lib/queries/count/countToSql.d.ts.map +1 -1
  37. package/lib/queries/count/countToSql.js +12 -17
  38. package/lib/queries/count/countToSql.js.map +1 -1
  39. package/lib/queries/count/types/CountBuilder.d.ts +12 -4
  40. package/lib/queries/count/types/CountBuilder.d.ts.map +1 -1
  41. package/lib/queries/count.d.ts.map +1 -1
  42. package/lib/queries/count.js +3 -1
  43. package/lib/queries/count.js.map +1 -1
  44. package/lib/queries/create/buildCreate.d.ts +4 -1
  45. package/lib/queries/create/buildCreate.d.ts.map +1 -1
  46. package/lib/queries/create/buildCreate.js +5 -2
  47. package/lib/queries/create/buildCreate.js.map +1 -1
  48. package/lib/queries/create/createResultSchema.d.ts.map +1 -1
  49. package/lib/queries/create/createResultSchema.js +3 -1
  50. package/lib/queries/create/createResultSchema.js.map +1 -1
  51. package/lib/queries/create/createToSql.d.ts.map +1 -1
  52. package/lib/queries/create/createToSql.js +5 -2
  53. package/lib/queries/create/createToSql.js.map +1 -1
  54. package/lib/queries/create/tests/createMany.varied-keys.test.d.ts +2 -0
  55. package/lib/queries/create/tests/createMany.varied-keys.test.d.ts.map +1 -0
  56. package/lib/queries/create/tests/createMany.varied-keys.test.js +24 -0
  57. package/lib/queries/create/tests/createMany.varied-keys.test.js.map +1 -0
  58. package/lib/queries/create/tests/createOne.test.js +53 -0
  59. package/lib/queries/create/tests/createOne.test.js.map +1 -1
  60. package/lib/queries/create/types/BaseCreateManyParams.d.ts +3 -0
  61. package/lib/queries/create/types/BaseCreateManyParams.d.ts.map +1 -1
  62. package/lib/queries/create/types/BaseCreateOneParams.d.ts +3 -0
  63. package/lib/queries/create/types/BaseCreateOneParams.d.ts.map +1 -1
  64. package/lib/queries/create/types/CreateManyParams.d.ts +4 -1
  65. package/lib/queries/create/types/CreateManyParams.d.ts.map +1 -1
  66. package/lib/queries/create/types/CreateManyResult.d.ts +1 -1
  67. package/lib/queries/create/types/CreateManyResult.d.ts.map +1 -1
  68. package/lib/queries/create/types/CreateOneParams.d.ts +4 -1
  69. package/lib/queries/create/types/CreateOneParams.d.ts.map +1 -1
  70. package/lib/queries/create/types/CreateOneResult.d.ts +1 -1
  71. package/lib/queries/create/types/CreateOneResult.d.ts.map +1 -1
  72. package/lib/queries/createMany.d.ts.map +1 -1
  73. package/lib/queries/createMany.js +3 -1
  74. package/lib/queries/createMany.js.map +1 -1
  75. package/lib/queries/createOne.d.ts.map +1 -1
  76. package/lib/queries/createOne.js +6 -0
  77. package/lib/queries/createOne.js.map +1 -1
  78. package/lib/queries/delete/buildDelete.d.ts +1 -1
  79. package/lib/queries/delete/buildDelete.d.ts.map +1 -1
  80. package/lib/queries/delete/buildDelete.js +1 -1
  81. package/lib/queries/delete/buildDelete.js.map +1 -1
  82. package/lib/queries/delete/deleteResultSchema.d.ts.map +1 -1
  83. package/lib/queries/delete/deleteResultSchema.js +3 -1
  84. package/lib/queries/delete/deleteResultSchema.js.map +1 -1
  85. package/lib/queries/delete/deleteToSql.js +1 -1
  86. package/lib/queries/delete/deleteToSql.js.map +1 -1
  87. package/lib/queries/delete/types/DeleteManyResult.d.ts +1 -1
  88. package/lib/queries/delete/types/DeleteManyResult.d.ts.map +1 -1
  89. package/lib/queries/delete/types/DeleteOneResult.d.ts +1 -1
  90. package/lib/queries/delete/types/DeleteOneResult.d.ts.map +1 -1
  91. package/lib/queries/delete/types/DeleteParams.d.ts +1 -1
  92. package/lib/queries/delete/types/DeleteParams.d.ts.map +1 -1
  93. package/lib/queries/deleteMany.d.ts.map +1 -1
  94. package/lib/queries/deleteMany.js +3 -1
  95. package/lib/queries/deleteMany.js.map +1 -1
  96. package/lib/queries/find/buildFind.d.ts.map +1 -1
  97. package/lib/queries/find/buildFind.js +35 -30
  98. package/lib/queries/find/buildFind.js.map +1 -1
  99. package/lib/queries/find/findResultSchema.d.ts.map +1 -1
  100. package/lib/queries/find/findResultSchema.js +9 -2
  101. package/lib/queries/find/findResultSchema.js.map +1 -1
  102. package/lib/queries/find/findToSql.d.ts.map +1 -1
  103. package/lib/queries/find/findToSql.js +15 -17
  104. package/lib/queries/find/findToSql.js.map +1 -1
  105. package/lib/queries/find/getIncludedManyToManyRelations.d.ts +17 -0
  106. package/lib/queries/find/getIncludedManyToManyRelations.d.ts.map +1 -0
  107. package/lib/queries/find/getIncludedManyToManyRelations.js +20 -0
  108. package/lib/queries/find/getIncludedManyToManyRelations.js.map +1 -0
  109. package/lib/queries/find/getIncludedOneToManyRelations.d.ts +12 -0
  110. package/lib/queries/find/getIncludedOneToManyRelations.d.ts.map +1 -0
  111. package/lib/queries/find/getIncludedOneToManyRelations.js +20 -0
  112. package/lib/queries/find/getIncludedOneToManyRelations.js.map +1 -0
  113. package/lib/queries/find/tests/findMany.include.test.d.ts +2 -0
  114. package/lib/queries/find/tests/findMany.include.test.d.ts.map +1 -0
  115. package/lib/queries/find/tests/findMany.include.test.js +93 -0
  116. package/lib/queries/find/tests/findMany.include.test.js.map +1 -0
  117. package/lib/queries/find/tests/findMany.nullable-relations.test.d.ts +2 -0
  118. package/lib/queries/find/tests/findMany.nullable-relations.test.d.ts.map +1 -0
  119. package/lib/queries/find/tests/findMany.nullable-relations.test.js +118 -0
  120. package/lib/queries/find/tests/findMany.nullable-relations.test.js.map +1 -0
  121. package/lib/queries/find/tests/middleware.find.where.test.js +12 -12
  122. package/lib/queries/find/tests/middleware.find.where.test.js.map +1 -1
  123. package/lib/queries/find/types/BaseFindParams.d.ts +2 -1
  124. package/lib/queries/find/types/BaseFindParams.d.ts.map +1 -1
  125. package/lib/queries/find/types/FindBuilder.d.ts +13 -4
  126. package/lib/queries/find/types/FindBuilder.d.ts.map +1 -1
  127. package/lib/queries/find/types/FindManyParams.d.ts +3 -2
  128. package/lib/queries/find/types/FindManyParams.d.ts.map +1 -1
  129. package/lib/queries/find/types/FindOneParams.d.ts +2 -1
  130. package/lib/queries/find/types/FindOneParams.d.ts.map +1 -1
  131. package/lib/queries/findMany.d.ts.map +1 -1
  132. package/lib/queries/findMany.js +59 -36
  133. package/lib/queries/findMany.js.map +1 -1
  134. package/lib/queries/middleware/Middleware.d.ts +1 -1
  135. package/lib/queries/middleware/Middleware.d.ts.map +1 -1
  136. package/lib/queries/update/buildUpdate.d.ts +2 -2
  137. package/lib/queries/update/buildUpdate.d.ts.map +1 -1
  138. package/lib/queries/update/buildUpdate.js +8 -8
  139. package/lib/queries/update/buildUpdate.js.map +1 -1
  140. package/lib/queries/update/tests/updateOne.test.js +3 -3
  141. package/lib/queries/update/tests/updateOne.test.js.map +1 -1
  142. package/lib/queries/update/types/BaseUpdateParams.d.ts +1 -1
  143. package/lib/queries/update/types/BaseUpdateParams.d.ts.map +1 -1
  144. package/lib/queries/update/types/UpdateManyResult.d.ts +1 -1
  145. package/lib/queries/update/types/UpdateManyResult.d.ts.map +1 -1
  146. package/lib/queries/update/types/UpdateOneResult.d.ts +1 -1
  147. package/lib/queries/update/types/UpdateOneResult.d.ts.map +1 -1
  148. package/lib/queries/update/types/UpdateParams.d.ts +2 -2
  149. package/lib/queries/update/types/UpdateParams.d.ts.map +1 -1
  150. package/lib/queries/update/types/UpdateValues.d.ts +1 -1
  151. package/lib/queries/update/types/UpdateValues.d.ts.map +1 -1
  152. package/lib/queries/update/updateResultSchema.d.ts.map +1 -1
  153. package/lib/queries/update/updateResultSchema.js +3 -1
  154. package/lib/queries/update/updateResultSchema.js.map +1 -1
  155. package/lib/queries/update/updateToSql.js +3 -3
  156. package/lib/queries/update/updateToSql.js.map +1 -1
  157. package/lib/queries/updateMany.d.ts.map +1 -1
  158. package/lib/queries/updateMany.js +3 -1
  159. package/lib/queries/updateMany.js.map +1 -1
  160. package/lib/queries/util/rowToObject.d.ts.map +1 -1
  161. package/lib/queries/util/rowToObject.js +1 -1
  162. package/lib/queries/util/rowToObject.js.map +1 -1
  163. package/lib/schema/populate/composeMiddleware.js +1 -1
  164. package/lib/schema/populate/composeMiddleware.js.map +1 -1
  165. package/lib/schema/populate/populateModel.d.ts.map +1 -1
  166. package/lib/schema/populate/populateModel.js +1 -0
  167. package/lib/schema/populate/populateModel.js.map +1 -1
  168. package/lib/schema/types/base/BaseColumn.d.ts +1 -0
  169. package/lib/schema/types/base/BaseColumn.d.ts.map +1 -1
  170. package/lib/schema/types/base/BaseRelation.d.ts +1 -0
  171. package/lib/schema/types/base/BaseRelation.d.ts.map +1 -1
  172. package/lib/schema/types/helpers/ColumnName.d.ts +2 -3
  173. package/lib/schema/types/helpers/ColumnName.d.ts.map +1 -1
  174. package/lib/schema/types/helpers/ColumnType.d.ts +2 -2
  175. package/lib/schema/types/helpers/ColumnType.d.ts.map +1 -1
  176. package/lib/schema/types/helpers/Columns.d.ts +2 -3
  177. package/lib/schema/types/helpers/Columns.d.ts.map +1 -1
  178. package/lib/schema/types/helpers/HasDefault.d.ts +2 -3
  179. package/lib/schema/types/helpers/HasDefault.d.ts.map +1 -1
  180. package/lib/schema/types/helpers/IsNullable.d.ts +2 -3
  181. package/lib/schema/types/helpers/IsNullable.d.ts.map +1 -1
  182. package/lib/schema/types/helpers/IsProvided.d.ts +5 -0
  183. package/lib/schema/types/helpers/IsProvided.d.ts.map +1 -0
  184. package/lib/schema/types/helpers/IsProvided.js +2 -0
  185. package/lib/schema/types/helpers/IsProvided.js.map +1 -0
  186. package/lib/schema/types/helpers/IsSerial.d.ts +2 -3
  187. package/lib/schema/types/helpers/IsSerial.d.ts.map +1 -1
  188. package/lib/schema/types/loose/LooseColumnDefinition.d.ts +5 -0
  189. package/lib/schema/types/loose/LooseColumnDefinition.d.ts.map +1 -1
  190. package/lib/schema/types/loose/LooseRelationDefinition.d.ts +1 -0
  191. package/lib/schema/types/loose/LooseRelationDefinition.d.ts.map +1 -1
  192. package/lib/schema/types/loose/LooseRelationsDefinition.d.ts +3 -1
  193. package/lib/schema/types/loose/LooseRelationsDefinition.d.ts.map +1 -1
  194. package/lib/schema/types/loose/LooseRelationsDefinitions.d.ts +1 -1
  195. package/lib/schema/types/loose/LooseRelationsDefinitions.d.ts.map +1 -1
  196. package/lib/schema/types/relations/ManyToManyRelation.d.ts +2 -2
  197. package/lib/schema/types/relations/ManyToManyRelation.d.ts.map +1 -1
  198. package/lib/schema/types/relations/ManyToOneRelation.d.ts +1 -1
  199. package/lib/schema/types/relations/ManyToOneRelation.d.ts.map +1 -1
  200. package/lib/schema/types/relations/OneToManyRelation.d.ts +2 -1
  201. package/lib/schema/types/relations/OneToManyRelation.d.ts.map +1 -1
  202. package/lib/schema/types/strict/ColumnDefinition.d.ts +5 -0
  203. package/lib/schema/types/strict/ColumnDefinition.d.ts.map +1 -1
  204. package/lib/test/db/index.d.ts +40 -0
  205. package/lib/test/db/index.d.ts.map +1 -1
  206. package/lib/test/db/models/post.model.d.ts +10 -1
  207. package/lib/test/db/models/post.model.d.ts.map +1 -1
  208. package/lib/test/db/models/post.model.js +6 -0
  209. package/lib/test/db/models/post.model.js.map +1 -1
  210. package/lib/test/db/models/post.relations.d.ts +6 -0
  211. package/lib/test/db/models/post.relations.d.ts.map +1 -1
  212. package/lib/test/db/models/post.relations.js +6 -0
  213. package/lib/test/db/models/post.relations.js.map +1 -1
  214. package/lib/test/db/models/tenant.model.d.ts +2 -2
  215. package/lib/test/db/models/tenantUser.model.d.ts +2 -2
  216. package/lib/test/db/models/user.model.d.ts +11 -2
  217. package/lib/test/db/models/user.model.d.ts.map +1 -1
  218. package/lib/test/db/models/user.model.js +6 -0
  219. package/lib/test/db/models/user.model.js.map +1 -1
  220. package/lib/test/db/models/user.relations.d.ts +16 -0
  221. package/lib/test/db/models/user.relations.d.ts.map +1 -1
  222. package/lib/test/db/models/user.relations.js +16 -0
  223. package/lib/test/db/models/user.relations.js.map +1 -1
  224. package/lib/test/db/models.d.ts +18 -0
  225. package/lib/test/db/models.d.ts.map +1 -1
  226. package/lib/test/db/relations.d.ts +22 -0
  227. package/lib/test/db/relations.d.ts.map +1 -1
  228. package/lib/test/gen/column.d.ts +1 -0
  229. package/lib/test/gen/column.d.ts.map +1 -1
  230. package/lib/test/seed/index.d.ts +40 -0
  231. package/lib/test/seed/index.d.ts.map +1 -1
  232. package/lib/types/ModelType.d.ts +10 -3
  233. package/lib/types/ModelType.d.ts.map +1 -1
  234. package/package.json +2 -2
  235. package/src/migrate/commands/implode.ts +1 -1
  236. package/src/migrate/sql/createTableSql.test.ts +1 -0
  237. package/src/orm.ts +10 -2
  238. package/src/queries/clauses/IncludeClause.ts +19 -3
  239. package/src/queries/clauses/ReturningClause.ts +4 -6
  240. package/src/queries/clauses/SelectClause.ts +4 -6
  241. package/src/queries/clauses/WhereClause.ts +1 -1
  242. package/src/queries/clauses/helpers/OptionalColumn.ts +10 -11
  243. package/src/queries/clauses/helpers/OptionalParams.ts +2 -2
  244. package/src/queries/clauses/helpers/RequiredColumn.ts +5 -6
  245. package/src/queries/clauses/helpers/RequiredParams.ts +2 -2
  246. package/src/queries/clauses/where/buildWhereClauses.test.ts +1 -1
  247. package/src/queries/clauses/where/buildWhereClauses.ts +1 -1
  248. package/src/queries/clauses/where/types/WhereClauseValue.ts +1 -1
  249. package/src/queries/count/buildCount.ts +39 -33
  250. package/src/queries/count/countToSql.ts +27 -32
  251. package/src/queries/count/types/CountBuilder.ts +23 -6
  252. package/src/queries/count.ts +3 -1
  253. package/src/queries/create/buildCreate.ts +8 -3
  254. package/src/queries/create/createResultSchema.ts +3 -1
  255. package/src/queries/create/createToSql.ts +10 -2
  256. package/src/queries/create/tests/createMany.varied-keys.test.ts +28 -0
  257. package/src/queries/create/tests/createOne.test.ts +70 -0
  258. package/src/queries/create/types/BaseCreateManyParams.ts +1 -0
  259. package/src/queries/create/types/BaseCreateOneParams.ts +1 -0
  260. package/src/queries/create/types/CreateManyParams.ts +4 -1
  261. package/src/queries/create/types/CreateManyResult.ts +1 -1
  262. package/src/queries/create/types/CreateOneParams.ts +4 -1
  263. package/src/queries/create/types/CreateOneResult.ts +1 -1
  264. package/src/queries/createMany.ts +3 -1
  265. package/src/queries/createOne.ts +9 -0
  266. package/src/queries/delete/buildDelete.ts +2 -2
  267. package/src/queries/delete/deleteResultSchema.ts +3 -1
  268. package/src/queries/delete/deleteToSql.ts +1 -1
  269. package/src/queries/delete/types/DeleteManyResult.ts +1 -1
  270. package/src/queries/delete/types/DeleteOneResult.ts +1 -1
  271. package/src/queries/delete/types/DeleteParams.ts +1 -1
  272. package/src/queries/deleteMany.ts +3 -1
  273. package/src/queries/find/buildFind.ts +41 -34
  274. package/src/queries/find/findResultSchema.ts +9 -2
  275. package/src/queries/find/findToSql.ts +31 -32
  276. package/src/queries/find/getIncludedManyToManyRelations.ts +49 -0
  277. package/src/queries/find/getIncludedOneToManyRelations.ts +44 -0
  278. package/src/queries/find/tests/findMany.include.test.ts +107 -0
  279. package/src/queries/find/tests/findMany.nullable-relations.test.ts +127 -0
  280. package/src/queries/find/tests/middleware.find.where.test.ts +12 -12
  281. package/src/queries/find/types/BaseFindParams.ts +2 -1
  282. package/src/queries/find/types/FindBuilder.ts +25 -6
  283. package/src/queries/find/types/FindManyParams.ts +3 -2
  284. package/src/queries/find/types/FindOneParams.ts +2 -1
  285. package/src/queries/findMany.ts +87 -66
  286. package/src/queries/middleware/Middleware.ts +1 -1
  287. package/src/queries/update/buildUpdate.ts +10 -10
  288. package/src/queries/update/tests/updateOne.test.ts +3 -3
  289. package/src/queries/update/types/BaseUpdateParams.ts +1 -1
  290. package/src/queries/update/types/UpdateManyResult.ts +1 -1
  291. package/src/queries/update/types/UpdateOneResult.ts +1 -1
  292. package/src/queries/update/types/UpdateParams.ts +2 -2
  293. package/src/queries/update/types/UpdateValues.ts +1 -1
  294. package/src/queries/update/updateResultSchema.ts +3 -1
  295. package/src/queries/update/updateToSql.ts +3 -3
  296. package/src/queries/updateMany.ts +3 -1
  297. package/src/queries/util/rowToObject.ts +5 -1
  298. package/src/schema/populate/composeMiddleware.ts +1 -1
  299. package/src/schema/populate/populateModel.ts +1 -0
  300. package/src/schema/types/base/BaseColumn.ts +1 -0
  301. package/src/schema/types/base/BaseRelation.ts +1 -0
  302. package/src/schema/types/helpers/ColumnName.ts +5 -6
  303. package/src/schema/types/helpers/ColumnType.ts +2 -2
  304. package/src/schema/types/helpers/Columns.ts +2 -6
  305. package/src/schema/types/helpers/HasDefault.ts +5 -7
  306. package/src/schema/types/helpers/IsNullable.ts +4 -6
  307. package/src/schema/types/helpers/IsProvided.ts +8 -0
  308. package/src/schema/types/helpers/IsSerial.ts +4 -6
  309. package/src/schema/types/loose/LooseColumnDefinition.ts +6 -0
  310. package/src/schema/types/loose/LooseRelationDefinition.ts +1 -1
  311. package/src/schema/types/loose/LooseRelationsDefinition.ts +6 -1
  312. package/src/schema/types/loose/LooseRelationsDefinitions.ts +1 -1
  313. package/src/schema/types/relations/ManyToManyRelation.ts +2 -2
  314. package/src/schema/types/relations/ManyToOneRelation.ts +1 -1
  315. package/src/schema/types/relations/OneToManyRelation.ts +2 -1
  316. package/src/schema/types/strict/ColumnDefinition.ts +6 -0
  317. package/src/test/db/models/foo.relations.ts +1 -1
  318. package/src/test/db/models/post.model.ts +7 -1
  319. package/src/test/db/models/post.relations.ts +7 -1
  320. package/src/test/db/models/tenant.model.ts +1 -1
  321. package/src/test/db/models/tenant.relations.ts +1 -1
  322. package/src/test/db/models/tenantUser.model.ts +1 -1
  323. package/src/test/db/models/tenantUser.relations.ts +1 -1
  324. package/src/test/db/models/user.model.ts +7 -1
  325. package/src/test/db/models/user.relations.ts +17 -1
  326. package/src/types/ModelType.ts +16 -3
  327. package/lib/queries/clauses/helpers/ModelValues.d.ts +0 -8
  328. package/lib/queries/clauses/helpers/ModelValues.d.ts.map +0 -1
  329. package/lib/queries/clauses/helpers/ModelValues.js +0 -2
  330. package/lib/queries/clauses/helpers/ModelValues.js.map +0 -1
  331. package/src/queries/clauses/helpers/ModelValues.ts +0 -9
@@ -21,14 +21,14 @@ export const timestamps: Middleware = {
21
21
  },
22
22
  },
23
23
  update: {
24
- values: (values, { model, config }) => {
24
+ set: (set, { model, config }) => {
25
25
  if ("updatedAt" in config.models[model].columns) {
26
26
  return {
27
27
  updatedAt: new Date(),
28
- ...values,
28
+ ...set,
29
29
  };
30
30
  } else {
31
- return values;
31
+ return set;
32
32
  }
33
33
  },
34
34
  },
@@ -50,7 +50,7 @@ export const softdelete: Middleware = {
50
50
  if ("deletedAt" in config.models[model].columns) {
51
51
  return updateOne({
52
52
  ...params,
53
- values: {
53
+ set: {
54
54
  deletedAt: new Date(),
55
55
  },
56
56
  });
@@ -60,7 +60,7 @@ export const softdelete: Middleware = {
60
60
  if ("deletedAt" in config.models[model].columns) {
61
61
  return updateMany({
62
62
  ...params,
63
- values: {
63
+ set: {
64
64
  deletedAt: new Date(),
65
65
  },
66
66
  });
@@ -110,7 +110,7 @@ describe("middleware.find.where", () => {
110
110
  ).toEqual([{ title: "Post a" }, { title: "Post b" }]);
111
111
 
112
112
  await db.updateMany("post", {
113
- values: { deletedAt: new Date() },
113
+ set: { deletedAt: new Date() },
114
114
  where: { authorId: lynne.id },
115
115
  });
116
116
 
@@ -158,7 +158,7 @@ describe("middleware.find.where", () => {
158
158
  ).toEqual([{ title: "Post a" }, { title: "Post b" }]);
159
159
 
160
160
  await db.updateOne("user", {
161
- values: { deletedAt: new Date() },
161
+ set: { deletedAt: new Date() },
162
162
  where: { id: lynne.id },
163
163
  });
164
164
 
@@ -206,7 +206,7 @@ describe("middleware.find.where", () => {
206
206
  ).toEqual([{ title: "Post a" }, { title: "Post b" }]);
207
207
 
208
208
  await db.updateOne("post", {
209
- values: { deletedAt: new Date() },
209
+ set: { deletedAt: new Date() },
210
210
  where: { title: "Post a" },
211
211
  });
212
212
 
@@ -260,7 +260,7 @@ describe("middleware.find.where", () => {
260
260
  ]);
261
261
 
262
262
  await db.updateOne("user", {
263
- values: { deletedAt: new Date() },
263
+ set: { deletedAt: new Date() },
264
264
  where: { username: "Lynne Tillman" },
265
265
  });
266
266
 
@@ -311,7 +311,7 @@ describe("middleware.find.where", () => {
311
311
  ).toEqual([{ title: "Post a" }, { title: "Post b" }]);
312
312
 
313
313
  await db.updateMany("post", {
314
- values: { deletedAt: new Date() },
314
+ set: { deletedAt: new Date() },
315
315
  where: { authorId: lynne.id },
316
316
  });
317
317
 
@@ -360,11 +360,11 @@ describe("middleware.find.where", () => {
360
360
  ]);
361
361
 
362
362
  await db.updateMany("post", {
363
- values: { title: "Post AAAAAA" },
363
+ set: { title: "Post AAAAAA" },
364
364
  where: { authorId: lynne.id, title: "Post a" },
365
365
  });
366
366
  await db.updateMany("post", {
367
- values: { deletedAt: new Date() },
367
+ set: { deletedAt: new Date() },
368
368
  where: { authorId: lynne.id, title: "Post b" },
369
369
  });
370
370
 
@@ -5,7 +5,7 @@ import { WhereClause } from "../../clauses/WhereClause";
5
5
 
6
6
  export type BaseFindParams = {
7
7
  select: string[];
8
- include?: Partial<Record<string, BaseFindParams>>;
8
+ include?: Partial<Record<string, Omit<BaseFindParams, "for">>>;
9
9
  where?: WhereClause<
10
10
  LooseModelDefinitions,
11
11
  ModelName<LooseModelDefinitions>
@@ -13,5 +13,6 @@ export type BaseFindParams = {
13
13
  limit?: number;
14
14
  offset?: number;
15
15
  lateralBy?: LateralByClause;
16
+ for?: "update" | "no key update" | "share" | "key share";
16
17
  orderBy?: (string | [string, "asc" | "desc"])[];
17
18
  };
@@ -12,12 +12,12 @@ export type FindBuilder = {
12
12
  path: string[];
13
13
  }[];
14
14
 
15
- tables: {
16
- name: string;
15
+ table: {
16
+ table: string;
17
17
  model: string;
18
18
  schema: string;
19
19
  alias: string;
20
- joins?: Join[];
20
+ joins: Join[];
21
21
  conditions?: WhereClause<
22
22
  LooseModelDefinitions,
23
23
  ModelName<LooseModelDefinitions>
@@ -26,7 +26,7 @@ export type FindBuilder = {
26
26
  LooseModelDefinitions,
27
27
  ModelName<LooseModelDefinitions>
28
28
  >;
29
- }[];
29
+ };
30
30
 
31
31
  lateralBy?: {
32
32
  groupTable: string;
@@ -38,6 +38,8 @@ export type FindBuilder = {
38
38
  }[];
39
39
  };
40
40
 
41
+ for?: "update" | "no key update" | "share" | "key share";
42
+
41
43
  orderBy: {
42
44
  table: string;
43
45
  column: string;
@@ -49,6 +51,23 @@ export type FindBuilder = {
49
51
  offset?: number;
50
52
  };
51
53
  export type Join = {
52
- from: { table: string; columns: string[] };
53
- to: { table: string; columns: string[] };
54
+ from: {
55
+ schema: string;
56
+ table: string;
57
+ alias: string;
58
+ model: string;
59
+ columns: string[];
60
+ };
61
+ to: {
62
+ schema: string;
63
+ table: string;
64
+ alias: string;
65
+ model: string;
66
+ columns: string[];
67
+ };
68
+ where?: WhereClause<
69
+ LooseModelDefinitions,
70
+ ModelName<LooseModelDefinitions>
71
+ >;
72
+ type?: "inner" | "left";
54
73
  };
@@ -12,12 +12,13 @@ export type FindManyParams<
12
12
  Relations extends LooseRelationsDefinitions<Models>,
13
13
  M extends ModelName<Models>,
14
14
  > = {
15
- select: SelectClause<Models, M>;
15
+ select: SelectClause<Models[M]>;
16
16
  include?: IncludeClause<Models, Relations, M>;
17
17
  where?: WhereClause<Models, M>;
18
18
  limit?: number;
19
19
  offset?: number;
20
20
  orderBy?: NonEmptyArray<
21
- ColumnName<Models, M> | [ColumnName<Models, M>, "asc" | "desc"]
21
+ ColumnName<Models[M]> | [ColumnName<Models[M]>, "asc" | "desc"]
22
22
  >;
23
+ for?: "update" | "no key update" | "share" | "key share";
23
24
  };
@@ -10,7 +10,8 @@ export type FindOneParams<
10
10
  Relations extends LooseRelationsDefinitions<Models>,
11
11
  M extends ModelName<Models>,
12
12
  > = {
13
- select: SelectClause<Models, M>;
13
+ select: SelectClause<Models[M]>;
14
14
  where?: WhereClause<Models, M>;
15
15
  include?: IncludeClause<Models, Relations, M>;
16
+ for?: "update" | "no key update" | "share" | "key share";
16
17
  };
@@ -1,4 +1,4 @@
1
- import { groupBy } from "lodash-es";
1
+ import { dropRight, get, groupBy, set } from "lodash-es";
2
2
  import hash from "object-hash";
3
3
  import { BaseConfiguration } from "src/schema/types/base/BaseConfiguration";
4
4
 
@@ -8,6 +8,8 @@ import { logger } from "../logger";
8
8
  import { ensureArray } from "../util/ensureArray";
9
9
  import { buildFind } from "./find/buildFind";
10
10
  import { findToSql } from "./find/findToSql";
11
+ import { getIncludedManyToManyRelations } from "./find/getIncludedManyToManyRelations";
12
+ import { getIncludedOneToManyRelations } from "./find/getIncludedOneToManyRelations";
11
13
  import { BaseFindParams } from "./find/types/BaseFindParams";
12
14
  import { rowToObject } from "./util/rowToObject";
13
15
 
@@ -25,89 +27,108 @@ export const findMany = async (
25
27
  values: statement.values,
26
28
  });
27
29
 
28
- if (process.env.NODE_ENV === "test" && !process.env.CI)
30
+ if (process.env.ORM_VERBOSE_LOGGING) {
29
31
  console.log(statement.text);
32
+ console.log(statement.values);
33
+ }
30
34
 
31
35
  const results = await conn
32
36
  .query(statement)
33
37
  .then((result) => result.rows.map(rowToObject(builder.columns)));
34
38
 
35
- for (const [r, subquery] of Object.entries(query.include ?? {})) {
36
- const relation = config.relations[m]![r];
37
- if (relation.type === "1:N") {
38
- const relation = config.relations[m][r];
39
-
40
- const pk = config.models[m].primaryKey;
41
- const fk = ensureArray(relation.foreignKey);
42
-
43
- const lateralBy = fk.map((c, index) => ({
44
- column: c,
45
- values: results.map((result) => result[pk[index]]),
46
- }));
47
-
48
- const subqueryResults = await findMany(
49
- conn,
50
- config,
51
- relation.model,
52
- { ...subquery!, lateralBy },
53
- );
54
-
39
+ const fetchIncludedOneToManyRelations = getIncludedOneToManyRelations(
40
+ config,
41
+ m,
42
+ query,
43
+ ).map(({ model, relation, query, path }) => {
44
+ const pk = config.models[model].primaryKey;
45
+ const fk = ensureArray(relation.foreignKey);
46
+ const lateralBy = fk.map((c, index) => ({
47
+ column: c,
48
+ values: results.map((result) =>
49
+ get(result, [...dropRight(path, 1), pk[index]]),
50
+ ),
51
+ }));
52
+ return findMany(conn, config, relation.model, {
53
+ ...query,
54
+ for: builder.for,
55
+ lateralBy,
56
+ }).then((subqueryResults) => {
55
57
  const lookup = groupBy(subqueryResults, (result) => {
56
58
  return hash(fk.map((c) => result[c]));
57
59
  });
58
-
59
60
  for (const result of results) {
60
- const key = hash(pk.map((c) => result[c]));
61
- result[r] = lookup[key] ?? [];
62
- }
63
- } else if (relation.type === "N:N") {
64
- const joinFrom = Object.entries(config.relations[m]).find(
65
- ([, rel]) =>
66
- rel.type === "1:N" && rel.model === relation.through,
67
- )?.[0];
68
-
69
- const joinTo = Object.entries(
70
- config.relations[relation.through],
71
- ).find(
72
- ([, rel]) => rel.type === "N:1" && rel.model === relation.model,
73
- )?.[0];
74
-
75
- if (joinFrom === undefined || joinTo === undefined) {
76
- throw new OrmError(
77
- "Both sides of a N:N relation must be defined",
78
- { data: { joinFrom, joinTo, query } },
79
- );
61
+ const parent =
62
+ path.length === 1
63
+ ? result
64
+ : get(result, dropRight(path, 1));
65
+ if (parent !== undefined) {
66
+ const key = hash(pk.map((c) => get(parent, c)));
67
+ set(result, path, lookup[key] ?? []);
68
+ }
80
69
  }
70
+ });
71
+ });
81
72
 
82
- const pk = config.models[m].primaryKey;
83
- const fk = ensureArray(relation.foreignKey);
84
- const lateralBy = fk.map((c, index) => ({
85
- column: c,
86
- values: results.map((result) => result[pk[index]]),
87
- }));
73
+ const fetchIncludedManyToManyRelations = getIncludedManyToManyRelations(
74
+ config,
75
+ m,
76
+ query,
77
+ ).map(({ model, relation, query, path }) => {
78
+ const joinFrom = Object.entries(config.relations[model]).find(
79
+ ([, rel]) => rel.type === "1:N" && rel.model === relation.through,
80
+ )?.[0];
81
+
82
+ const joinTo = Object.entries(config.relations[relation.through]).find(
83
+ ([, rel]) => rel.type === "N:1" && rel.model === relation.model,
84
+ )?.[0];
85
+
86
+ if (joinFrom === undefined || joinTo === undefined) {
87
+ throw new OrmError("Both sides of a N:N relation must be defined", {
88
+ data: { joinFrom, joinTo, query },
89
+ });
90
+ }
88
91
 
89
- const subqueryResults = await findMany(
90
- conn,
91
- config,
92
- relation.through,
93
- {
94
- select: ensureArray(relation.foreignKey),
95
- include: { [joinTo]: subquery! },
96
- lateralBy,
97
- },
98
- );
92
+ const pk = config.models[model].primaryKey;
93
+ const fk = ensureArray(relation.foreignKey);
94
+ const lateralBy = fk.map((c, index) => ({
95
+ column: c,
96
+ values: results.map((result) =>
97
+ get(result, [...dropRight(path, 1), pk[index]]),
98
+ ),
99
+ }));
100
+
101
+ return findMany(conn, config, relation.through, {
102
+ select: ensureArray(relation.foreignKey),
103
+ include: { [joinTo]: query },
104
+ for: builder.for,
105
+ lateralBy,
106
+ }).then((subqueryResults) => {
99
107
  const lookup = groupBy(subqueryResults, (result) => {
100
108
  return hash(fk.map((c) => result[c]));
101
109
  });
102
-
103
110
  for (const result of results) {
104
- const key = hash(pk.map((c) => result[c]));
105
- result[r] = (lookup[key] ?? []).map(
106
- (relation) => relation[joinTo] ?? [],
107
- );
111
+ const parent =
112
+ path.length === 1
113
+ ? result
114
+ : get(result, dropRight(path, 1));
115
+
116
+ if (parent !== undefined) {
117
+ const key = hash(pk.map((c) => get(parent, c)));
118
+ set(
119
+ result,
120
+ path,
121
+ (lookup[key] ?? []).map((r) => r[joinTo] ?? []),
122
+ );
123
+ }
108
124
  }
109
- }
110
- }
125
+ });
126
+ });
127
+
128
+ await Promise.all([
129
+ ...fetchIncludedOneToManyRelations,
130
+ ...fetchIncludedManyToManyRelations,
131
+ ]);
111
132
 
112
133
  return results;
113
134
  };
@@ -15,7 +15,7 @@ export type Middleware = {
15
15
  values?: ValuesMiddleware;
16
16
  };
17
17
  update?: {
18
- values?: ValuesMiddleware;
18
+ set?: ValuesMiddleware;
19
19
  where?: WhereMiddleware;
20
20
  };
21
21
  count?: {
@@ -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>;