@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
package/src/orm.ts CHANGED
@@ -328,8 +328,12 @@ export class Orm<
328
328
  public async query<T extends QueryResultRow>(
329
329
  fragments: TemplateStringsArray,
330
330
  ...variables: readonly unknown[]
331
- ) {
331
+ ): Promise<T[]> {
332
332
  const query = sql(fragments, ...variables);
333
+ if (process.env.ORM_VERBOSE_LOGGING) {
334
+ console.log(query.text);
335
+ console.log(query.values);
336
+ }
333
337
  const result = await this.connection.query<T>(query);
334
338
  return result.rows;
335
339
  }
@@ -337,8 +341,12 @@ export class Orm<
337
341
  public async queryOne<T extends QueryResultRow>(
338
342
  fragments: TemplateStringsArray,
339
343
  ...variables: readonly unknown[]
340
- ) {
344
+ ): Promise<T> {
341
345
  const query = sql(fragments, ...variables);
346
+ if (process.env.ORM_VERBOSE_LOGGING) {
347
+ console.log(query.text);
348
+ console.log(query.values);
349
+ }
342
350
  const result = await this.connection.query<T>(query);
343
351
  if (result.rowCount === 0 || result.rowCount === null)
344
352
  throw new OrmError("No rows returned from query");
@@ -13,11 +13,27 @@ export type IncludeClause<
13
13
  model: ModelName<Models>;
14
14
  }
15
15
  ? Relations[M][R] extends { type: "N:1" }
16
- ? FindOneParams<Models, Relations, Relations[M][R]["model"]>
16
+ ? Omit<
17
+ FindOneParams<Models, Relations, Relations[M][R]["model"]>,
18
+ // for can only be applied to the top level query
19
+ "for"
20
+ >
17
21
  : Relations[M][R] extends { type: "1:N" }
18
- ? FindManyParams<Models, Relations, Relations[M][R]["model"]>
22
+ ? Omit<
23
+ FindManyParams<Models, Relations, Relations[M][R]["model"]>,
24
+ // for can only be applied to the top level query
25
+ "for"
26
+ >
19
27
  : Relations[M][R] extends { type: "N:N" }
20
- ? FindManyParams<Models, Relations, Relations[M][R]["model"]>
28
+ ? Omit<
29
+ FindManyParams<
30
+ Models,
31
+ Relations,
32
+ Relations[M][R]["model"]
33
+ >,
34
+ // for can only be applied to the top level query
35
+ "for"
36
+ >
21
37
  : never
22
38
  : never;
23
39
  };
@@ -1,9 +1,7 @@
1
1
  import { ColumnName } from "../../schema/types/helpers/ColumnName";
2
- import { ModelName } from "../../schema/types/helpers/ModelName";
3
- import { LooseModelDefinitions } from "../../schema/types/loose/LooseModelDefinitions";
2
+ import { LooseModelDefinition } from "../../schema/types/loose/LooseModelDefinition";
4
3
  import { NonEmptyArray } from "../../types/util/NonEmptyArray";
5
4
 
6
- export type ReturningClause<
7
- Models extends LooseModelDefinitions,
8
- M extends ModelName<Models>,
9
- > = NonEmptyArray<ColumnName<Models, M>>;
5
+ export type ReturningClause<Model extends LooseModelDefinition> = NonEmptyArray<
6
+ ColumnName<Model>
7
+ >;
@@ -1,9 +1,7 @@
1
1
  import { ColumnName } from "../../schema/types/helpers/ColumnName";
2
- import { ModelName } from "../../schema/types/helpers/ModelName";
3
- import { LooseModelDefinitions } from "../../schema/types/loose/LooseModelDefinitions";
2
+ import { LooseModelDefinition } from "../../schema/types/loose/LooseModelDefinition";
4
3
  import { NonEmptyArray } from "../../types/util/NonEmptyArray";
5
4
 
6
- export type SelectClause<
7
- Models extends LooseModelDefinitions,
8
- M extends ModelName<Models>,
9
- > = NonEmptyArray<ColumnName<Models, M>>;
5
+ export type SelectClause<Model extends LooseModelDefinition> = NonEmptyArray<
6
+ ColumnName<Model>
7
+ >;
@@ -8,7 +8,7 @@ export type WhereClause<
8
8
  Models extends LooseModelDefinitions,
9
9
  M extends ModelName<Models>,
10
10
  > = {
11
- [C in ColumnName<Models, M>]?: WhereClauseValue<Models, M, C>;
11
+ [C in ColumnName<Models[M]>]?: WhereClauseValue<Models, M, C>;
12
12
  } & {
13
13
  [$and]?: WhereClause<Models, M>[];
14
14
  [$or]?: WhereClause<Models, M>[];
@@ -1,19 +1,18 @@
1
1
  import { ColumnName } from "../../../schema/types/helpers/ColumnName";
2
2
  import { HasDefault } from "../../../schema/types/helpers/HasDefault";
3
3
  import { IsNullable } from "../../../schema/types/helpers/IsNullable";
4
+ import { IsProvided } from "../../../schema/types/helpers/IsProvided";
4
5
  import { IsSerial } from "../../../schema/types/helpers/IsSerial";
5
- import { ModelName } from "../../../schema/types/helpers/ModelName";
6
- import { LooseModelDefinitions } from "../../../schema/types/loose/LooseModelDefinitions";
6
+ import { LooseModelDefinition } from "../../../schema/types/loose/LooseModelDefinition";
7
7
 
8
- export type OptionalColumn<
9
- Models extends LooseModelDefinitions,
10
- M extends ModelName<Models>,
11
- > = {
12
- [C in ColumnName<Models, M>]: IsNullable<Models, M, C> extends true
8
+ export type OptionalColumn<Model extends LooseModelDefinition> = {
9
+ [C in ColumnName<Model>]: IsNullable<Model, C> extends true
13
10
  ? C
14
- : IsSerial<Models, M, C> extends true
11
+ : IsSerial<Model, C> extends true
15
12
  ? C
16
- : HasDefault<Models, M, C> extends true
13
+ : HasDefault<Model, C> extends true
17
14
  ? C
18
- : never;
19
- }[ColumnName<Models, M>];
15
+ : IsProvided<Model, C> extends true
16
+ ? C
17
+ : never;
18
+ }[ColumnName<Model>];
@@ -7,8 +7,8 @@ export type OptionalParams<
7
7
  Models extends LooseModelDefinitions,
8
8
  M extends ModelName<Models>,
9
9
  > =
10
- OptionalColumn<Models, M> extends never
10
+ OptionalColumn<Models[M]> extends never
11
11
  ? unknown
12
12
  : {
13
- [C in OptionalColumn<Models, M>]?: ColumnType<Models, M, C>;
13
+ [C in OptionalColumn<Models[M]>]?: ColumnType<Models, M, C>;
14
14
  };
@@ -1,9 +1,8 @@
1
1
  import { ColumnName } from "../../../schema/types/helpers/ColumnName";
2
- import { ModelName } from "../../../schema/types/helpers/ModelName";
3
- import { LooseModelDefinitions } from "../../../schema/types/loose/LooseModelDefinitions";
2
+ import { LooseModelDefinition } from "../../../schema/types/loose/LooseModelDefinition";
4
3
  import { OptionalColumn } from "./OptionalColumn";
5
4
 
6
- export type RequiredColumn<
7
- Models extends LooseModelDefinitions,
8
- M extends ModelName<Models>,
9
- > = Exclude<ColumnName<Models, M>, OptionalColumn<Models, M>>;
5
+ export type RequiredColumn<Model extends LooseModelDefinition> = Exclude<
6
+ ColumnName<Model>,
7
+ OptionalColumn<Model>
8
+ >;
@@ -7,8 +7,8 @@ export type RequiredParams<
7
7
  Models extends LooseModelDefinitions,
8
8
  M extends ModelName<Models>,
9
9
  > =
10
- RequiredColumn<Models, M> extends never
10
+ RequiredColumn<Models[M]> extends never
11
11
  ? unknown
12
12
  : {
13
- [C in RequiredColumn<Models, M>]: ColumnType<Models, M, C>;
13
+ [C in RequiredColumn<Models[M]>]: ColumnType<Models, M, C>;
14
14
  };
@@ -19,7 +19,7 @@ export const buildWhereClause = (
19
19
  column: string,
20
20
  v: unknown,
21
21
  ): SQLStatement => {
22
- if (v === null) {
22
+ if (v === null || v === undefined) {
23
23
  return sql`%I.%I IS NULL`.withIdentifiers(table, column);
24
24
  } else if (
25
25
  typeof v === "string" ||
@@ -135,7 +135,7 @@ describe("buildWhereClauses", () => {
135
135
  ) => {
136
136
  const clause = buildWhereClauses(
137
137
  db.config,
138
- { name: "foo", schema: "casekit", model: "foo", alias: "a" },
138
+ { table: "foo", schema: "casekit", model: "foo", alias: "a" },
139
139
  where,
140
140
  );
141
141
  expect(clause.text).toEqual(sql);
@@ -8,7 +8,7 @@ import { $and, $not, $or } from "./operators";
8
8
 
9
9
  export const buildWhereClauses = (
10
10
  config: BaseConfiguration,
11
- table: { name: string; schema: string; alias: string; model: string },
11
+ table: { table: string; schema: string; alias: string; model: string },
12
12
  where: WhereClause<LooseModelDefinitions, ModelName<LooseModelDefinitions>>,
13
13
  ): SQLStatement => {
14
14
  const clauses: SQLStatement[] = [];
@@ -19,7 +19,7 @@ import {
19
19
  export type WhereClauseValue<
20
20
  Models extends LooseModelDefinitions,
21
21
  M extends ModelName<Models>,
22
- C extends ColumnName<Models, M>,
22
+ C extends ColumnName<Models[M]>,
23
23
  T = ColumnType<Models, M, C>,
24
24
  > =
25
25
  | ColumnType<Models, M, C>
@@ -13,23 +13,25 @@ export const buildCount = (
13
13
  _tableIndex = 0,
14
14
  ): CountBuilder => {
15
15
  const builder: CountBuilder = {
16
+ table: {
17
+ table: config.models[m]["table"],
18
+ model: m,
19
+ schema: config.models[m]["schema"],
20
+ alias: tableAlias(_tableIndex++),
21
+ joins: [],
22
+ where: config.middleware.count?.where
23
+ ? config.middleware.count.where(query.where, {
24
+ config,
25
+ model: m,
26
+ })
27
+ : query.where,
28
+ },
16
29
  tableIndex: _tableIndex,
17
- tables: [],
18
30
  };
19
31
 
20
32
  const model = config.models[m];
21
33
 
22
- const alias = tableAlias(builder.tableIndex++);
23
-
24
- builder.tables.push({
25
- name: config.models[m]["table"],
26
- model: m,
27
- schema: config.models[m]["schema"],
28
- alias: alias,
29
- where: config.middleware.count?.where
30
- ? config.middleware.count.where(query.where, { config, model: m })
31
- : query.where,
32
- });
34
+ const alias = builder.table.alias;
33
35
 
34
36
  for (const [r, subquery] of Object.entries(query.include ?? {})) {
35
37
  const relation = config.relations[m][r];
@@ -42,28 +44,32 @@ export const buildCount = (
42
44
  [...path, r],
43
45
  builder.tableIndex++,
44
46
  );
45
- const [joinedTable, ...otherTables] = joinBuilder.tables;
46
- builder.tables.push({
47
- ...joinedTable,
48
- joins: [
49
- ...(joinedTable.joins ?? []),
50
- {
51
- from: {
52
- table: alias,
53
- columns: ensureArray(relation.foreignKey).map(
54
- (c) => model.columns[c].name,
55
- ),
56
- },
57
- to: {
58
- table: joinedTable.alias,
59
- columns: joinedModel.primaryKey.map(
60
- (c) => joinedModel.columns[c].name,
61
- ),
62
- },
47
+ const joinedTable = joinBuilder.table;
48
+ builder.table.joins.push(
49
+ {
50
+ from: {
51
+ schema: config.models[m].schema,
52
+ table: config.models[m].table,
53
+ alias,
54
+ model: m,
55
+ columns: ensureArray(relation.foreignKey).map(
56
+ (c) => model.columns[c].name,
57
+ ),
58
+ },
59
+ to: {
60
+ schema: joinedModel.schema,
61
+ table: joinedTable.table,
62
+ alias: joinedTable.alias,
63
+ model: relation.model,
64
+ columns: joinedModel.primaryKey.map(
65
+ (c) => joinedModel.columns[c].name,
66
+ ),
63
67
  },
64
- ],
65
- });
66
- builder.tables.push(...otherTables);
68
+ where: joinedTable.where,
69
+ type: relation.optional ? "left" : "inner",
70
+ },
71
+ ...joinedTable.joins,
72
+ );
67
73
  }
68
74
  }
69
75
 
@@ -11,50 +11,45 @@ export const countToSql = (
11
11
  config: BaseConfiguration,
12
12
  builder: CountBuilder,
13
13
  ): SQLStatement => {
14
- const [table, ...joinedTables] = builder.tables;
14
+ const table = builder.table;
15
15
 
16
16
  const frag = sql`SELECT count(1) as "count"`;
17
17
 
18
- frag.push(pgfmt(`\nFROM %I.%I %I`, table.schema, table.name, table.alias));
18
+ frag.push(pgfmt(`\nFROM %I.%I %I`, table.schema, table.table, table.alias));
19
19
 
20
- for (const joinedTable of joinedTables) {
21
- if (!joinedTable.joins)
22
- throw new OrmError("Joined table without join clauses", {
23
- data: builder,
24
- });
20
+ for (const join of table.joins ?? []) {
21
+ if (join.from.columns.length !== join.to.columns.length) {
22
+ throw new OrmError(
23
+ "Number of foreign keys doesn't match number of primary keys in join",
24
+ { data: builder },
25
+ );
26
+ }
27
+
28
+ frag.push(join.type === "left" ? "\nLEFT JOIN" : "\nJOIN");
25
29
  frag.push(
26
30
  pgfmt(
27
- "\nJOIN %I.%I %I\n ON ",
28
- joinedTable.schema,
29
- joinedTable.name,
30
- joinedTable.alias,
31
+ "\n %I.%I %I\n ON ",
32
+ join.to.schema,
33
+ join.to.table,
34
+ join.to.alias,
31
35
  ),
32
36
  );
33
37
  frag.push(
34
- joinedTable.joins
35
- .flatMap((join) => {
36
- if (join.from.columns.length !== join.to.columns.length) {
37
- throw new OrmError(
38
- "Number of foreign keys doesn't match number of primary keys in join",
39
- { data: builder },
40
- );
41
- }
42
-
43
- return join.from.columns.map((from, i) =>
44
- pgfmt(
45
- "%I.%I = %I.%I",
46
- table.alias,
47
- from,
48
- joinedTable.alias,
49
- join.to.columns[i],
50
- ),
51
- );
52
- })
38
+ join.from.columns
39
+ .map((from, i) =>
40
+ pgfmt(
41
+ "%I.%I = %I.%I",
42
+ join.from.alias,
43
+ from,
44
+ join.to.alias,
45
+ join.to.columns[i],
46
+ ),
47
+ )
53
48
  .join(" AND "),
54
49
  );
55
- if (hasConditions(joinedTable.where)) {
50
+ if (hasConditions(join.where)) {
56
51
  frag.push(
57
- sql`\n AND ${buildWhereClauses(config, joinedTable, joinedTable.where)}`,
52
+ sql`\n AND ${buildWhereClauses(config, join.to, join.where)}`,
58
53
  );
59
54
  }
60
55
  }
@@ -5,12 +5,12 @@ import { WhereClause } from "../../clauses/WhereClause";
5
5
  export type CountBuilder = {
6
6
  tableIndex: number;
7
7
 
8
- tables: {
9
- name: string;
8
+ table: {
9
+ table: string;
10
10
  model: string;
11
11
  schema: string;
12
12
  alias: string;
13
- joins?: Join[];
13
+ joins: Join[];
14
14
  conditions?: WhereClause<
15
15
  LooseModelDefinitions,
16
16
  ModelName<LooseModelDefinitions>
@@ -19,10 +19,27 @@ export type CountBuilder = {
19
19
  LooseModelDefinitions,
20
20
  ModelName<LooseModelDefinitions>
21
21
  >;
22
- }[];
22
+ };
23
23
  };
24
24
 
25
25
  export type Join = {
26
- from: { table: string; columns: string[] };
27
- to: { table: string; columns: string[] };
26
+ from: {
27
+ schema: string;
28
+ table: string;
29
+ alias: string;
30
+ model: string;
31
+ columns: string[];
32
+ };
33
+ to: {
34
+ schema: string;
35
+ table: string;
36
+ alias: string;
37
+ model: string;
38
+ columns: string[];
39
+ };
40
+ where?: WhereClause<
41
+ LooseModelDefinitions,
42
+ ModelName<LooseModelDefinitions>
43
+ >;
44
+ type?: "inner" | "left";
28
45
  };
@@ -20,8 +20,10 @@ export const count = async (
20
20
  values: statement.values,
21
21
  });
22
22
 
23
- if (process.env.NODE_ENV === "test" && !process.env.CI)
23
+ if (process.env.ORM_VERBOSE_LOGGING) {
24
24
  console.log(statement.text);
25
+ console.log(statement.values);
26
+ }
25
27
 
26
28
  const result = await conn
27
29
  .query(statement)
@@ -1,3 +1,4 @@
1
+ import { uniq } from "lodash-es";
1
2
  import { BaseConfiguration } from "src/schema/types/base/BaseConfiguration";
2
3
 
3
4
  import { OrmError } from "../../errors";
@@ -6,8 +7,9 @@ import { BaseCreateManyParams } from "./types/BaseCreateManyParams";
6
7
 
7
8
  export type CreateBuilder = {
8
9
  tableIndex: number;
9
- table: { name: string; schema: string };
10
+ table: { table: string; schema: string };
10
11
  params: { name: string; path: string; values: unknown[] }[];
12
+ onConflict?: { do: "nothing" };
11
13
  returning: { name: string; path: string; alias: string }[];
12
14
  };
13
15
 
@@ -20,7 +22,7 @@ export const buildCreate = (
20
22
  const builder: CreateBuilder = {
21
23
  tableIndex: _tableIndex,
22
24
  table: {
23
- name: config.models[m].table,
25
+ table: config.models[m].table,
24
26
  schema: config.models[m].schema,
25
27
  },
26
28
  params: [],
@@ -42,7 +44,8 @@ export const buildCreate = (
42
44
  data: { m, params },
43
45
  });
44
46
 
45
- for (const k of Object.keys(values[0])) {
47
+ const keys = uniq(values.flatMap((v) => Object.keys(v)));
48
+ for (const k of keys) {
46
49
  builder.params.push({
47
50
  name: model.columns[k]["name"],
48
51
  path: k,
@@ -58,5 +61,7 @@ export const buildCreate = (
58
61
  });
59
62
  }
60
63
 
64
+ builder.onConflict = params.onConflict;
65
+
61
66
  return builder;
62
67
  };
@@ -15,7 +15,9 @@ export const createResultSchema = (
15
15
 
16
16
  params.returning?.forEach((s) => {
17
17
  const col = config.models[m].columns[s];
18
- obj[s] = col.nullable ? col.zodSchema.nullable() : col.zodSchema;
18
+ obj[s] = col.nullable
19
+ ? col.zodSchema.nullish().transform((x) => x ?? null)
20
+ : col.zodSchema;
19
21
  });
20
22
 
21
23
  return z.object(obj);
@@ -10,10 +10,14 @@ export const createToSql = (builder: CreateBuilder): SQLStatement => {
10
10
 
11
11
  if (params.length === 0) {
12
12
  frag.push(
13
- pgfmt("INSERT INTO %I.%I DEFAULT VALUES", table.schema, table.name),
13
+ pgfmt(
14
+ "INSERT INTO %I.%I DEFAULT VALUES",
15
+ table.schema,
16
+ table.table,
17
+ ),
14
18
  );
15
19
  } else {
16
- frag.push(pgfmt("INSERT INTO %I.%I (\n", table.schema, table.name));
20
+ frag.push(pgfmt("INSERT INTO %I.%I (\n", table.schema, table.table));
17
21
  frag.push(params.map((p) => pgfmt(" %I", p.name)).join(",\n"));
18
22
  frag.push(") VALUES ");
19
23
  const values = params[0].values.map((_, index) => {
@@ -22,6 +26,10 @@ export const createToSql = (builder: CreateBuilder): SQLStatement => {
22
26
  frag.push(sql.splat(values));
23
27
  }
24
28
 
29
+ if (builder.onConflict?.do === "nothing") {
30
+ frag.push("\nON CONFLICT DO NOTHING");
31
+ }
32
+
25
33
  if (returning.length > 0) {
26
34
  frag.push("\nRETURNING ");
27
35
  frag.push(
@@ -0,0 +1,28 @@
1
+ import { describe, expect, test } from "vitest";
2
+
3
+ import { db } from "../../../test/db";
4
+
5
+ describe("createMany", () => {
6
+ test("it can handle varied combinations of optional keys in its values", async () => {
7
+ await db.transact(
8
+ async (db) => {
9
+ const russell = await db.createOne("user", {
10
+ values: { username: `Russell` },
11
+ returning: ["id", "username"],
12
+ });
13
+ const others = await db.createMany("user", {
14
+ values: [
15
+ { username: "Fairooz" },
16
+ { username: "Dan", invitedById: russell.id },
17
+ ],
18
+ returning: ["username", "invitedById"],
19
+ });
20
+ expect(others).toEqual([
21
+ { username: "Fairooz", invitedById: null },
22
+ { username: "Dan", invitedById: russell.id },
23
+ ]);
24
+ },
25
+ { rollback: true },
26
+ );
27
+ });
28
+ });
@@ -124,4 +124,74 @@ describe("createOne", () => {
124
124
  { rollback: true },
125
125
  );
126
126
  });
127
+ test("columns that are provided by middleware do not need to be specified", async () => {
128
+ const baz = {
129
+ columns: {
130
+ id: {
131
+ type: "uuid",
132
+ zodSchema: z.string().uuid(),
133
+ provided: true,
134
+ },
135
+ name: { type: "text", zodSchema: z.string() },
136
+ },
137
+ } as const satisfies ModelDefinition;
138
+
139
+ await orm({
140
+ schema: "casekit",
141
+ models: { baz },
142
+ relations: { baz: {} },
143
+ pool: new pg.Pool(),
144
+ middleware: [
145
+ {
146
+ create: {
147
+ values: (values) => ({ id: uuid.v4(), ...values }),
148
+ },
149
+ },
150
+ ],
151
+ }).transact(
152
+ async (db) => {
153
+ await db.connection.query(createTableSql(db.models.baz));
154
+
155
+ await db.createOne("baz", {
156
+ values: { name: "hello" },
157
+ });
158
+
159
+ const rows = await db.findMany("baz", {
160
+ select: ["id", "name"],
161
+ });
162
+
163
+ expect(rows).toHaveLength(1);
164
+ expect(rows[0].id).toBeTypeOf("string");
165
+ expect(rows[0].name).toEqual("hello");
166
+ },
167
+ { rollback: true },
168
+ );
169
+ });
170
+
171
+ test("conflicts can be ignored", async () => {
172
+ await db.transact(
173
+ async (db) => {
174
+ await db.createOne("user", { values: { username: "russell" } });
175
+
176
+ // creating a duplicate user should throw an error
177
+ await expect(
178
+ db.transact(async (db) => {
179
+ return db.createOne("user", {
180
+ values: { username: "russell" },
181
+ });
182
+ }),
183
+ ).rejects.toThrow(
184
+ 'duplicate key value violates unique constraint "user_username_idx"',
185
+ );
186
+
187
+ // but if we ignore the conflict, it should work
188
+ const result = await db.createOne("user", {
189
+ values: { username: "russell" },
190
+ onConflict: { do: "nothing" },
191
+ });
192
+ expect(result).toEqual(0);
193
+ },
194
+ { rollback: true },
195
+ );
196
+ });
127
197
  });
@@ -2,5 +2,6 @@ import { NonEmptyArray } from "../../../types/util/NonEmptyArray";
2
2
 
3
3
  export type BaseCreateManyParams = {
4
4
  values: Record<string, unknown | null>[];
5
+ onConflict?: { do: "nothing" };
5
6
  returning?: NonEmptyArray<string>;
6
7
  };
@@ -2,5 +2,6 @@ import { NonEmptyArray } from "../../../types/util/NonEmptyArray";
2
2
 
3
3
  export type BaseCreateOneParams = {
4
4
  values: Record<string, unknown | null>;
5
+ onConflict?: { do: "nothing" };
5
6
  returning?: NonEmptyArray<string>;
6
7
  };
@@ -8,5 +8,8 @@ export type CreateManyParams<
8
8
  M extends ModelName<Models>,
9
9
  > = {
10
10
  values: CreateValues<Models, M>[];
11
- returning?: ReturningClause<Models, M>;
11
+ returning?: ReturningClause<Models[M]>;
12
+ onConflict?: {
13
+ do: "nothing";
14
+ };
12
15
  };