drizzle-orm 0.43.0-e2b296d → 0.43.1-08e3953

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 (361) hide show
  1. package/column-builder.cjs.map +1 -1
  2. package/column-builder.d.cts +4 -3
  3. package/column-builder.d.ts +4 -3
  4. package/column-builder.js.map +1 -1
  5. package/gel-core/dialect.cjs +1 -1
  6. package/gel-core/dialect.cjs.map +1 -1
  7. package/gel-core/dialect.js +1 -1
  8. package/gel-core/dialect.js.map +1 -1
  9. package/mssql-core/alias.cjs +32 -0
  10. package/mssql-core/alias.cjs.map +1 -0
  11. package/mssql-core/alias.d.cts +4 -0
  12. package/mssql-core/alias.d.ts +4 -0
  13. package/mssql-core/alias.js +8 -0
  14. package/mssql-core/alias.js.map +1 -0
  15. package/mssql-core/checks.cjs +58 -0
  16. package/mssql-core/checks.cjs.map +1 -0
  17. package/mssql-core/checks.d.cts +18 -0
  18. package/mssql-core/checks.d.ts +18 -0
  19. package/mssql-core/checks.js +32 -0
  20. package/mssql-core/checks.js.map +1 -0
  21. package/mssql-core/columns/all.cjs +72 -0
  22. package/mssql-core/columns/all.cjs.map +1 -0
  23. package/mssql-core/columns/all.d.cts +43 -0
  24. package/mssql-core/columns/all.d.ts +43 -0
  25. package/mssql-core/columns/all.js +48 -0
  26. package/mssql-core/columns/all.js.map +1 -0
  27. package/mssql-core/columns/bigint.cjs +67 -0
  28. package/mssql-core/columns/bigint.cjs.map +1 -0
  29. package/mssql-core/columns/bigint.d.cts +33 -0
  30. package/mssql-core/columns/bigint.d.ts +33 -0
  31. package/mssql-core/columns/bigint.js +41 -0
  32. package/mssql-core/columns/bigint.js.map +1 -0
  33. package/mssql-core/columns/binary.cjs +57 -0
  34. package/mssql-core/columns/binary.cjs.map +1 -0
  35. package/mssql-core/columns/binary.d.cts +28 -0
  36. package/mssql-core/columns/binary.d.ts +28 -0
  37. package/mssql-core/columns/binary.js +31 -0
  38. package/mssql-core/columns/binary.js.map +1 -0
  39. package/mssql-core/columns/bit.cjs +54 -0
  40. package/mssql-core/columns/bit.cjs.map +1 -0
  41. package/mssql-core/columns/bit.d.cts +24 -0
  42. package/mssql-core/columns/bit.d.ts +24 -0
  43. package/mssql-core/columns/bit.js +28 -0
  44. package/mssql-core/columns/bit.js.map +1 -0
  45. package/mssql-core/columns/char.cjs +74 -0
  46. package/mssql-core/columns/char.cjs.map +1 -0
  47. package/mssql-core/columns/char.d.cts +37 -0
  48. package/mssql-core/columns/char.d.ts +37 -0
  49. package/mssql-core/columns/char.js +47 -0
  50. package/mssql-core/columns/char.js.map +1 -0
  51. package/mssql-core/columns/common.cjs +117 -0
  52. package/mssql-core/columns/common.cjs.map +1 -0
  53. package/mssql-core/columns/common.d.cts +67 -0
  54. package/mssql-core/columns/common.d.ts +67 -0
  55. package/mssql-core/columns/common.js +90 -0
  56. package/mssql-core/columns/common.js.map +1 -0
  57. package/mssql-core/columns/custom.cjs +75 -0
  58. package/mssql-core/columns/custom.cjs.map +1 -0
  59. package/mssql-core/columns/custom.d.cts +149 -0
  60. package/mssql-core/columns/custom.d.ts +149 -0
  61. package/mssql-core/columns/custom.js +49 -0
  62. package/mssql-core/columns/custom.js.map +1 -0
  63. package/mssql-core/columns/date.cjs +94 -0
  64. package/mssql-core/columns/date.cjs.map +1 -0
  65. package/mssql-core/columns/date.common.cjs +37 -0
  66. package/mssql-core/columns/date.common.cjs.map +1 -0
  67. package/mssql-core/columns/date.common.d.cts +12 -0
  68. package/mssql-core/columns/date.common.d.ts +12 -0
  69. package/mssql-core/columns/date.common.js +13 -0
  70. package/mssql-core/columns/date.common.js.map +1 -0
  71. package/mssql-core/columns/date.d.cts +55 -0
  72. package/mssql-core/columns/date.d.ts +55 -0
  73. package/mssql-core/columns/date.js +66 -0
  74. package/mssql-core/columns/date.js.map +1 -0
  75. package/mssql-core/columns/datetime.cjs +94 -0
  76. package/mssql-core/columns/datetime.cjs.map +1 -0
  77. package/mssql-core/columns/datetime.d.cts +54 -0
  78. package/mssql-core/columns/datetime.d.ts +54 -0
  79. package/mssql-core/columns/datetime.js +66 -0
  80. package/mssql-core/columns/datetime.js.map +1 -0
  81. package/mssql-core/columns/datetime2.cjs +102 -0
  82. package/mssql-core/columns/datetime2.cjs.map +1 -0
  83. package/mssql-core/columns/datetime2.d.cts +54 -0
  84. package/mssql-core/columns/datetime2.d.ts +54 -0
  85. package/mssql-core/columns/datetime2.js +74 -0
  86. package/mssql-core/columns/datetime2.js.map +1 -0
  87. package/mssql-core/columns/datetimeoffset.cjs +102 -0
  88. package/mssql-core/columns/datetimeoffset.cjs.map +1 -0
  89. package/mssql-core/columns/datetimeoffset.d.cts +54 -0
  90. package/mssql-core/columns/datetimeoffset.d.ts +54 -0
  91. package/mssql-core/columns/datetimeoffset.js +74 -0
  92. package/mssql-core/columns/datetimeoffset.js.map +1 -0
  93. package/mssql-core/columns/decimal.cjs +68 -0
  94. package/mssql-core/columns/decimal.cjs.map +1 -0
  95. package/mssql-core/columns/decimal.d.cts +30 -0
  96. package/mssql-core/columns/decimal.d.ts +30 -0
  97. package/mssql-core/columns/decimal.js +42 -0
  98. package/mssql-core/columns/decimal.js.map +1 -0
  99. package/mssql-core/columns/float.cjs +58 -0
  100. package/mssql-core/columns/float.cjs.map +1 -0
  101. package/mssql-core/columns/float.d.cts +28 -0
  102. package/mssql-core/columns/float.d.ts +28 -0
  103. package/mssql-core/columns/float.js +32 -0
  104. package/mssql-core/columns/float.js.map +1 -0
  105. package/mssql-core/columns/index.cjs +63 -0
  106. package/mssql-core/columns/index.cjs.map +1 -0
  107. package/mssql-core/columns/index.d.cts +21 -0
  108. package/mssql-core/columns/index.d.ts +21 -0
  109. package/mssql-core/columns/index.js +22 -0
  110. package/mssql-core/columns/index.js.map +1 -0
  111. package/mssql-core/columns/int.cjs +53 -0
  112. package/mssql-core/columns/int.cjs.map +1 -0
  113. package/mssql-core/columns/int.d.cts +23 -0
  114. package/mssql-core/columns/int.d.ts +23 -0
  115. package/mssql-core/columns/int.js +27 -0
  116. package/mssql-core/columns/int.js.map +1 -0
  117. package/mssql-core/columns/numeric.cjs +68 -0
  118. package/mssql-core/columns/numeric.cjs.map +1 -0
  119. package/mssql-core/columns/numeric.d.cts +27 -0
  120. package/mssql-core/columns/numeric.d.ts +27 -0
  121. package/mssql-core/columns/numeric.js +42 -0
  122. package/mssql-core/columns/numeric.js.map +1 -0
  123. package/mssql-core/columns/real.cjs +53 -0
  124. package/mssql-core/columns/real.cjs.map +1 -0
  125. package/mssql-core/columns/real.d.cts +23 -0
  126. package/mssql-core/columns/real.d.ts +23 -0
  127. package/mssql-core/columns/real.js +27 -0
  128. package/mssql-core/columns/real.js.map +1 -0
  129. package/mssql-core/columns/smallint.cjs +62 -0
  130. package/mssql-core/columns/smallint.cjs.map +1 -0
  131. package/mssql-core/columns/smallint.d.cts +24 -0
  132. package/mssql-core/columns/smallint.d.ts +24 -0
  133. package/mssql-core/columns/smallint.js +36 -0
  134. package/mssql-core/columns/smallint.js.map +1 -0
  135. package/mssql-core/columns/text.cjs +68 -0
  136. package/mssql-core/columns/text.cjs.map +1 -0
  137. package/mssql-core/columns/text.d.cts +45 -0
  138. package/mssql-core/columns/text.d.ts +45 -0
  139. package/mssql-core/columns/text.js +41 -0
  140. package/mssql-core/columns/text.js.map +1 -0
  141. package/mssql-core/columns/time.cjs +90 -0
  142. package/mssql-core/columns/time.cjs.map +1 -0
  143. package/mssql-core/columns/time.d.cts +49 -0
  144. package/mssql-core/columns/time.d.ts +49 -0
  145. package/mssql-core/columns/time.js +62 -0
  146. package/mssql-core/columns/time.js.map +1 -0
  147. package/mssql-core/columns/tinyint.cjs +62 -0
  148. package/mssql-core/columns/tinyint.cjs.map +1 -0
  149. package/mssql-core/columns/tinyint.d.cts +24 -0
  150. package/mssql-core/columns/tinyint.d.ts +24 -0
  151. package/mssql-core/columns/tinyint.js +36 -0
  152. package/mssql-core/columns/tinyint.js.map +1 -0
  153. package/mssql-core/columns/varbinary.cjs +61 -0
  154. package/mssql-core/columns/varbinary.cjs.map +1 -0
  155. package/mssql-core/columns/varbinary.d.cts +27 -0
  156. package/mssql-core/columns/varbinary.d.ts +27 -0
  157. package/mssql-core/columns/varbinary.js +35 -0
  158. package/mssql-core/columns/varbinary.js.map +1 -0
  159. package/mssql-core/columns/varchar.cjs +117 -0
  160. package/mssql-core/columns/varchar.cjs.map +1 -0
  161. package/mssql-core/columns/varchar.d.cts +66 -0
  162. package/mssql-core/columns/varchar.d.ts +66 -0
  163. package/mssql-core/columns/varchar.js +88 -0
  164. package/mssql-core/columns/varchar.js.map +1 -0
  165. package/mssql-core/db.cjs +254 -0
  166. package/mssql-core/db.cjs.map +1 -0
  167. package/mssql-core/db.d.cts +228 -0
  168. package/mssql-core/db.d.ts +228 -0
  169. package/mssql-core/db.js +235 -0
  170. package/mssql-core/db.js.map +1 -0
  171. package/mssql-core/dialect.cjs +611 -0
  172. package/mssql-core/dialect.cjs.map +1 -0
  173. package/mssql-core/dialect.d.cts +58 -0
  174. package/mssql-core/dialect.d.ts +58 -0
  175. package/mssql-core/dialect.js +593 -0
  176. package/mssql-core/dialect.js.map +1 -0
  177. package/mssql-core/expressions.cjs +49 -0
  178. package/mssql-core/expressions.cjs.map +1 -0
  179. package/mssql-core/expressions.d.cts +8 -0
  180. package/mssql-core/expressions.d.ts +8 -0
  181. package/mssql-core/expressions.js +22 -0
  182. package/mssql-core/expressions.js.map +1 -0
  183. package/mssql-core/foreign-keys.cjs +91 -0
  184. package/mssql-core/foreign-keys.cjs.map +1 -0
  185. package/mssql-core/foreign-keys.d.cts +51 -0
  186. package/mssql-core/foreign-keys.d.ts +51 -0
  187. package/mssql-core/foreign-keys.js +65 -0
  188. package/mssql-core/foreign-keys.js.map +1 -0
  189. package/mssql-core/index.cjs +55 -0
  190. package/mssql-core/index.cjs.map +1 -0
  191. package/mssql-core/index.d.cts +17 -0
  192. package/mssql-core/index.d.ts +17 -0
  193. package/mssql-core/index.js +18 -0
  194. package/mssql-core/index.js.map +1 -0
  195. package/mssql-core/indexes.cjs +80 -0
  196. package/mssql-core/indexes.cjs.map +1 -0
  197. package/mssql-core/indexes.d.cts +49 -0
  198. package/mssql-core/indexes.d.ts +49 -0
  199. package/mssql-core/indexes.js +52 -0
  200. package/mssql-core/indexes.js.map +1 -0
  201. package/mssql-core/primary-keys.cjs +64 -0
  202. package/mssql-core/primary-keys.cjs.map +1 -0
  203. package/mssql-core/primary-keys.d.cts +23 -0
  204. package/mssql-core/primary-keys.d.ts +23 -0
  205. package/mssql-core/primary-keys.js +38 -0
  206. package/mssql-core/primary-keys.js.map +1 -0
  207. package/mssql-core/query-builders/delete.cjs +107 -0
  208. package/mssql-core/query-builders/delete.cjs.map +1 -0
  209. package/mssql-core/query-builders/delete.d.cts +80 -0
  210. package/mssql-core/query-builders/delete.d.ts +80 -0
  211. package/mssql-core/query-builders/delete.js +83 -0
  212. package/mssql-core/query-builders/delete.js.map +1 -0
  213. package/mssql-core/query-builders/index.cjs +33 -0
  214. package/mssql-core/query-builders/index.cjs.map +1 -0
  215. package/mssql-core/query-builders/index.d.cts +6 -0
  216. package/mssql-core/query-builders/index.d.ts +6 -0
  217. package/mssql-core/query-builders/index.js +7 -0
  218. package/mssql-core/query-builders/index.js.map +1 -0
  219. package/mssql-core/query-builders/insert.cjs +105 -0
  220. package/mssql-core/query-builders/insert.cjs.map +1 -0
  221. package/mssql-core/query-builders/insert.d.cts +60 -0
  222. package/mssql-core/query-builders/insert.d.ts +60 -0
  223. package/mssql-core/query-builders/insert.js +80 -0
  224. package/mssql-core/query-builders/insert.js.map +1 -0
  225. package/mssql-core/query-builders/query-builder.cjs +95 -0
  226. package/mssql-core/query-builders/query-builder.cjs.map +1 -0
  227. package/mssql-core/query-builders/query-builder.d.cts +32 -0
  228. package/mssql-core/query-builders/query-builder.d.ts +32 -0
  229. package/mssql-core/query-builders/query-builder.js +71 -0
  230. package/mssql-core/query-builders/query-builder.js.map +1 -0
  231. package/mssql-core/query-builders/query.cjs +126 -0
  232. package/mssql-core/query-builders/query.cjs.map +1 -0
  233. package/mssql-core/query-builders/query.d.cts +42 -0
  234. package/mssql-core/query-builders/query.d.ts +42 -0
  235. package/mssql-core/query-builders/query.js +103 -0
  236. package/mssql-core/query-builders/query.js.map +1 -0
  237. package/mssql-core/query-builders/select.cjs +679 -0
  238. package/mssql-core/query-builders/select.cjs.map +1 -0
  239. package/mssql-core/query-builders/select.d.cts +549 -0
  240. package/mssql-core/query-builders/select.d.ts +549 -0
  241. package/mssql-core/query-builders/select.js +649 -0
  242. package/mssql-core/query-builders/select.js.map +1 -0
  243. package/mssql-core/query-builders/select.types.cjs +17 -0
  244. package/mssql-core/query-builders/select.types.cjs.map +1 -0
  245. package/mssql-core/query-builders/select.types.d.cts +142 -0
  246. package/mssql-core/query-builders/select.types.d.ts +142 -0
  247. package/mssql-core/query-builders/select.types.js +1 -0
  248. package/mssql-core/query-builders/select.types.js.map +1 -0
  249. package/mssql-core/query-builders/update.cjs +138 -0
  250. package/mssql-core/query-builders/update.cjs.map +1 -0
  251. package/mssql-core/query-builders/update.d.cts +109 -0
  252. package/mssql-core/query-builders/update.d.ts +109 -0
  253. package/mssql-core/query-builders/update.js +113 -0
  254. package/mssql-core/query-builders/update.js.map +1 -0
  255. package/mssql-core/schema.cjs +51 -0
  256. package/mssql-core/schema.cjs.map +1 -0
  257. package/mssql-core/schema.d.cts +22 -0
  258. package/mssql-core/schema.d.ts +22 -0
  259. package/mssql-core/schema.js +25 -0
  260. package/mssql-core/schema.js.map +1 -0
  261. package/mssql-core/session.cjs +74 -0
  262. package/mssql-core/session.cjs.map +1 -0
  263. package/mssql-core/session.d.cts +63 -0
  264. package/mssql-core/session.d.ts +63 -0
  265. package/mssql-core/session.js +48 -0
  266. package/mssql-core/session.js.map +1 -0
  267. package/mssql-core/subquery.cjs +17 -0
  268. package/mssql-core/subquery.cjs.map +1 -0
  269. package/mssql-core/subquery.d.cts +18 -0
  270. package/mssql-core/subquery.d.ts +18 -0
  271. package/mssql-core/subquery.js +1 -0
  272. package/mssql-core/subquery.js.map +1 -0
  273. package/mssql-core/table.cjs +81 -0
  274. package/mssql-core/table.cjs.map +1 -0
  275. package/mssql-core/table.d.cts +43 -0
  276. package/mssql-core/table.d.ts +43 -0
  277. package/mssql-core/table.js +53 -0
  278. package/mssql-core/table.js.map +1 -0
  279. package/mssql-core/unique-constraint.cjs +76 -0
  280. package/mssql-core/unique-constraint.cjs.map +1 -0
  281. package/mssql-core/unique-constraint.d.cts +23 -0
  282. package/mssql-core/unique-constraint.d.ts +23 -0
  283. package/mssql-core/unique-constraint.js +49 -0
  284. package/mssql-core/unique-constraint.js.map +1 -0
  285. package/mssql-core/utils.cjs +85 -0
  286. package/mssql-core/utils.cjs.map +1 -0
  287. package/mssql-core/utils.d.cts +31 -0
  288. package/mssql-core/utils.d.ts +31 -0
  289. package/mssql-core/utils.js +60 -0
  290. package/mssql-core/utils.js.map +1 -0
  291. package/mssql-core/view-base.cjs +33 -0
  292. package/mssql-core/view-base.cjs.map +1 -0
  293. package/mssql-core/view-base.d.cts +9 -0
  294. package/mssql-core/view-base.d.ts +9 -0
  295. package/mssql-core/view-base.js +9 -0
  296. package/mssql-core/view-base.js.map +1 -0
  297. package/mssql-core/view-common.cjs +29 -0
  298. package/mssql-core/view-common.cjs.map +1 -0
  299. package/mssql-core/view-common.d.cts +1 -0
  300. package/mssql-core/view-common.d.ts +1 -0
  301. package/mssql-core/view-common.js +5 -0
  302. package/mssql-core/view-common.js.map +1 -0
  303. package/mssql-core/view.cjs +154 -0
  304. package/mssql-core/view.cjs.map +1 -0
  305. package/mssql-core/view.d.cts +64 -0
  306. package/mssql-core/view.d.ts +64 -0
  307. package/mssql-core/view.js +125 -0
  308. package/mssql-core/view.js.map +1 -0
  309. package/mysql-core/dialect.cjs +1 -1
  310. package/mysql-core/dialect.cjs.map +1 -1
  311. package/mysql-core/dialect.js +1 -1
  312. package/mysql-core/dialect.js.map +1 -1
  313. package/node-mssql/driver.cjs +88 -0
  314. package/node-mssql/driver.cjs.map +1 -0
  315. package/node-mssql/driver.d.cts +34 -0
  316. package/node-mssql/driver.d.ts +34 -0
  317. package/node-mssql/driver.js +65 -0
  318. package/node-mssql/driver.js.map +1 -0
  319. package/node-mssql/index.cjs +25 -0
  320. package/node-mssql/index.cjs.map +1 -0
  321. package/node-mssql/index.d.cts +2 -0
  322. package/node-mssql/index.d.ts +2 -0
  323. package/node-mssql/index.js +3 -0
  324. package/node-mssql/index.js.map +1 -0
  325. package/node-mssql/migrator.cjs +33 -0
  326. package/node-mssql/migrator.cjs.map +1 -0
  327. package/node-mssql/migrator.d.cts +3 -0
  328. package/node-mssql/migrator.d.ts +3 -0
  329. package/node-mssql/migrator.js +9 -0
  330. package/node-mssql/migrator.js.map +1 -0
  331. package/node-mssql/session.cjs +243 -0
  332. package/node-mssql/session.cjs.map +1 -0
  333. package/node-mssql/session.d.cts +47 -0
  334. package/node-mssql/session.d.ts +47 -0
  335. package/node-mssql/session.js +211 -0
  336. package/node-mssql/session.js.map +1 -0
  337. package/package.json +653 -1
  338. package/pg-core/dialect.cjs +1 -1
  339. package/pg-core/dialect.cjs.map +1 -1
  340. package/pg-core/dialect.js +1 -1
  341. package/pg-core/dialect.js.map +1 -1
  342. package/pg-core/schema.cjs +2 -2
  343. package/pg-core/schema.cjs.map +1 -1
  344. package/pg-core/schema.d.cts +4 -1
  345. package/pg-core/schema.d.ts +4 -1
  346. package/pg-core/schema.js +2 -2
  347. package/pg-core/schema.js.map +1 -1
  348. package/relations.cjs +48 -0
  349. package/relations.cjs.map +1 -1
  350. package/relations.d.cts +1 -0
  351. package/relations.d.ts +1 -0
  352. package/relations.js +47 -0
  353. package/relations.js.map +1 -1
  354. package/singlestore-core/dialect.cjs +1 -1
  355. package/singlestore-core/dialect.cjs.map +1 -1
  356. package/singlestore-core/dialect.js +1 -1
  357. package/singlestore-core/dialect.js.map +1 -1
  358. package/version.cjs +1 -1
  359. package/version.d.cts +1 -1
  360. package/version.d.ts +1 -1
  361. package/version.js +1 -1
@@ -0,0 +1,90 @@
1
+ import { ColumnBuilder } from "../../column-builder.js";
2
+ import { Column } from "../../column.js";
3
+ import { entityKind } from "../../entity.js";
4
+ import { ForeignKeyBuilder } from "../foreign-keys.js";
5
+ class MsSqlColumnBuilder extends ColumnBuilder {
6
+ static [entityKind] = "MsSqlColumnBuilder";
7
+ foreignKeyConfigs = [];
8
+ references(ref, actions = {}) {
9
+ this.foreignKeyConfigs.push({ ref, actions });
10
+ return this;
11
+ }
12
+ unique(name) {
13
+ this.config.isUnique = true;
14
+ this.config.uniqueName = name;
15
+ return this;
16
+ }
17
+ generatedAlwaysAs(as, config) {
18
+ this.config.generated = {
19
+ as,
20
+ type: "always",
21
+ mode: config?.mode ?? "virtual"
22
+ };
23
+ return this;
24
+ }
25
+ /** @internal */
26
+ buildForeignKeys(column, table) {
27
+ return this.foreignKeyConfigs.map(({ ref, actions }) => {
28
+ return ((ref2, actions2) => {
29
+ const builder = new ForeignKeyBuilder(() => {
30
+ const foreignColumn = ref2();
31
+ return { columns: [column], foreignColumns: [foreignColumn] };
32
+ });
33
+ if (actions2.onUpdate) {
34
+ builder.onUpdate(actions2.onUpdate);
35
+ }
36
+ if (actions2.onDelete) {
37
+ builder.onDelete(actions2.onDelete);
38
+ }
39
+ return builder.build(table);
40
+ })(ref, actions);
41
+ });
42
+ }
43
+ }
44
+ class MsSqlColumn extends Column {
45
+ constructor(table, config) {
46
+ super(table, config);
47
+ this.table = table;
48
+ }
49
+ static [entityKind] = "MsSqlColumn";
50
+ /** @internal */
51
+ shouldDisableInsert() {
52
+ return false;
53
+ }
54
+ }
55
+ class MsSqlColumnBuilderWithIdentity extends MsSqlColumnBuilder {
56
+ static [entityKind] = "MsSqlColumnBuilderWithAutoIncrement";
57
+ constructor(name, dataType, columnType) {
58
+ super(name, dataType, columnType);
59
+ }
60
+ identity(seed, increment) {
61
+ this.config.identity = seed !== void 0 && increment !== void 0 ? { seed, increment } : true;
62
+ this.config.hasDefault = true;
63
+ this.config.notNull = true;
64
+ return this;
65
+ }
66
+ }
67
+ class MsSqlColumnWithIdentity extends MsSqlColumn {
68
+ static [entityKind] = "MsSqlColumnWithAutoIncrement";
69
+ identity = this.config.identity;
70
+ getIdentity() {
71
+ if (this.identity) {
72
+ return typeof this.identity === "object" ? `identity(${this.identity.seed}, ${this.identity.increment})` : "identity";
73
+ }
74
+ return;
75
+ }
76
+ getSQLType() {
77
+ const identity = this.getIdentity();
78
+ return identity ? `${this._getSQLType()} ${identity}` : this._getSQLType();
79
+ }
80
+ shouldDisableInsert() {
81
+ return !!this.identity;
82
+ }
83
+ }
84
+ export {
85
+ MsSqlColumn,
86
+ MsSqlColumnBuilder,
87
+ MsSqlColumnBuilderWithIdentity,
88
+ MsSqlColumnWithIdentity
89
+ };
90
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/mssql-core/columns/common.ts"],"sourcesContent":["import { ColumnBuilder } from '~/column-builder.ts';\nimport type {\n\tColumnBuilderBase,\n\tColumnBuilderBaseConfig,\n\tColumnBuilderExtraConfig,\n\tColumnBuilderRuntimeConfig,\n\tColumnDataType,\n\tHasGenerated,\n\tMakeColumnConfig,\n\tNotNull,\n} from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { Column } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { ForeignKey, UpdateDeleteAction } from '~/mssql-core/foreign-keys.ts';\nimport { ForeignKeyBuilder } from '~/mssql-core/foreign-keys.ts';\nimport type { AnyMsSqlTable, MsSqlTable } from '~/mssql-core/table.ts';\nimport type { SQL } from '~/sql/index.ts';\nimport type { Update } from '~/utils.ts';\n\nexport interface ReferenceConfig {\n\tref: () => MsSqlColumn;\n\tactions: {\n\t\tonUpdate?: UpdateDeleteAction;\n\t\tonDelete?: UpdateDeleteAction;\n\t};\n}\n\nexport interface MsSqlColumnBuilderBase<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTTypeConfig extends object = object,\n> extends ColumnBuilderBase<T, TTypeConfig & { dialect: 'mssql' }> {}\n\nexport interface MsSqlGeneratedColumnConfig {\n\tmode?: 'virtual' | 'stored';\n}\n\nexport abstract class MsSqlColumnBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string> & {\n\t\tdata: any;\n\t},\n\tTRuntimeConfig extends object = object,\n\tTTypeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = ColumnBuilderExtraConfig,\n> extends ColumnBuilder<T, TRuntimeConfig, TTypeConfig & { dialect: 'mssql' }, TExtraConfig>\n\timplements MsSqlColumnBuilderBase<T, TTypeConfig>\n{\n\tstatic override readonly [entityKind]: string = 'MsSqlColumnBuilder';\n\n\tprivate foreignKeyConfigs: ReferenceConfig[] = [];\n\n\treferences(ref: ReferenceConfig['ref'], actions: ReferenceConfig['actions'] = {}): this {\n\t\tthis.foreignKeyConfigs.push({ ref, actions });\n\t\treturn this;\n\t}\n\n\tunique(name?: string): this {\n\t\tthis.config.isUnique = true;\n\t\tthis.config.uniqueName = name;\n\t\treturn this;\n\t}\n\n\tgeneratedAlwaysAs(\n\t\tas: SQL | T['data'] | (() => SQL),\n\t\tconfig?: MsSqlGeneratedColumnConfig,\n\t): HasGenerated<this, {\n\t\ttype: 'always';\n\t}> {\n\t\tthis.config.generated = {\n\t\t\tas,\n\t\t\ttype: 'always',\n\t\t\tmode: config?.mode ?? 'virtual',\n\t\t};\n\t\treturn this as any;\n\t}\n\n\t/** @internal */\n\tbuildForeignKeys(column: MsSqlColumn, table: MsSqlTable): ForeignKey[] {\n\t\treturn this.foreignKeyConfigs.map(({ ref, actions }) => {\n\t\t\treturn ((ref, actions) => {\n\t\t\t\tconst builder = new ForeignKeyBuilder(() => {\n\t\t\t\t\tconst foreignColumn = ref();\n\t\t\t\t\treturn { columns: [column], foreignColumns: [foreignColumn] };\n\t\t\t\t});\n\t\t\t\tif (actions.onUpdate) {\n\t\t\t\t\tbuilder.onUpdate(actions.onUpdate);\n\t\t\t\t}\n\t\t\t\tif (actions.onDelete) {\n\t\t\t\t\tbuilder.onDelete(actions.onDelete);\n\t\t\t\t}\n\t\t\t\treturn builder.build(table);\n\t\t\t})(ref, actions);\n\t\t});\n\t}\n\n\t/** @internal */\n\tabstract build<TTableName extends string>(\n\t\ttable: AnyMsSqlTable<{ name: TTableName }>,\n\t): MsSqlColumn<MakeColumnConfig<T, TTableName>>;\n}\n\n// To understand how to use `MsSqlColumn` and `AnyMsSqlColumn`, see `Column` and `AnyColumn` documentation.\nexport abstract class MsSqlColumn<\n\tT extends ColumnBaseConfig<ColumnDataType, string> = ColumnBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = object,\n\tTTypeConfig extends object = {},\n> extends Column<T, TRuntimeConfig, TTypeConfig & { dialect: 'mssql' }> {\n\tstatic override readonly [entityKind]: string = 'MsSqlColumn';\n\n\tconstructor(\n\t\toverride readonly table: MsSqlTable,\n\t\tconfig: ColumnBuilderRuntimeConfig<T['data'], TRuntimeConfig>,\n\t) {\n\t\tsuper(table, config);\n\t}\n\n\t/** @internal */\n\toverride shouldDisableInsert(): boolean {\n\t\treturn false;\n\t}\n}\n\nexport type AnyMsSqlColumn<TPartial extends Partial<ColumnBaseConfig<ColumnDataType, string>> = {}> = MsSqlColumn<\n\tRequired<Update<ColumnBaseConfig<ColumnDataType, string>, TPartial>>\n>;\n\nexport interface MsSqlColumnWithIdentityConfig {\n\tidentity?: { seed: number; increment: number } | true | undefined;\n}\n\nexport abstract class MsSqlColumnBuilderWithIdentity<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<\n\t\tColumnDataType,\n\t\tstring\n\t>,\n\tTRuntimeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = ColumnBuilderExtraConfig,\n> extends MsSqlColumnBuilder<T, TRuntimeConfig & MsSqlColumnWithIdentityConfig, TExtraConfig> {\n\tstatic override readonly [entityKind]: string = 'MsSqlColumnBuilderWithAutoIncrement';\n\n\tconstructor(name: NonNullable<T['name']>, dataType: T['dataType'], columnType: T['columnType']) {\n\t\tsuper(name, dataType, columnType);\n\t}\n\n\tidentity(): NotNull<HasGenerated<this>>;\n\tidentity(seed: number, increment: number): NotNull<HasGenerated<this>>;\n\tidentity(seed?: number, increment?: number): NotNull<HasGenerated<this>> {\n\t\tthis.config.identity = seed !== undefined && increment !== undefined ? { seed, increment } : true;\n\t\tthis.config.hasDefault = true;\n\t\tthis.config.notNull = true;\n\t\treturn this as NotNull<HasGenerated<this>>;\n\t}\n}\n\nexport abstract class MsSqlColumnWithIdentity<\n\tT extends ColumnBaseConfig<ColumnDataType, string> = ColumnBaseConfig<\n\t\tColumnDataType,\n\t\tstring\n\t>,\n\tTRuntimeConfig extends object = object,\n> extends MsSqlColumn<T, MsSqlColumnWithIdentityConfig & TRuntimeConfig> {\n\tstatic override readonly [entityKind]: string = 'MsSqlColumnWithAutoIncrement';\n\n\treadonly identity = this.config.identity;\n\tprivate getIdentity() {\n\t\tif (this.identity) {\n\t\t\treturn typeof this.identity === 'object'\n\t\t\t\t? `identity(${this.identity.seed}, ${this.identity.increment})`\n\t\t\t\t: 'identity';\n\t\t}\n\t\treturn;\n\t}\n\n\tabstract _getSQLType(): string;\n\n\toverride getSQLType(): string {\n\t\tconst identity = this.getIdentity();\n\t\treturn identity ? `${this._getSQLType()} ${identity}` : this._getSQLType();\n\t}\n\n\toverride shouldDisableInsert(): boolean {\n\t\treturn !!this.identity;\n\t}\n}\n"],"mappings":"AAAA,SAAS,qBAAqB;AAY9B,SAAS,cAAc;AACvB,SAAS,kBAAkB;AAE3B,SAAS,yBAAyB;AAsB3B,MAAe,2BAOZ,cAEV;AAAA,EACC,QAA0B,UAAU,IAAY;AAAA,EAExC,oBAAuC,CAAC;AAAA,EAEhD,WAAW,KAA6B,UAAsC,CAAC,GAAS;AACvF,SAAK,kBAAkB,KAAK,EAAE,KAAK,QAAQ,CAAC;AAC5C,WAAO;AAAA,EACR;AAAA,EAEA,OAAO,MAAqB;AAC3B,SAAK,OAAO,WAAW;AACvB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA,EAEA,kBACC,IACA,QAGE;AACF,SAAK,OAAO,YAAY;AAAA,MACvB;AAAA,MACA,MAAM;AAAA,MACN,MAAM,QAAQ,QAAQ;AAAA,IACvB;AACA,WAAO;AAAA,EACR;AAAA;AAAA,EAGA,iBAAiB,QAAqB,OAAiC;AACtE,WAAO,KAAK,kBAAkB,IAAI,CAAC,EAAE,KAAK,QAAQ,MAAM;AACvD,cAAQ,CAACA,MAAKC,aAAY;AACzB,cAAM,UAAU,IAAI,kBAAkB,MAAM;AAC3C,gBAAM,gBAAgBD,KAAI;AAC1B,iBAAO,EAAE,SAAS,CAAC,MAAM,GAAG,gBAAgB,CAAC,aAAa,EAAE;AAAA,QAC7D,CAAC;AACD,YAAIC,SAAQ,UAAU;AACrB,kBAAQ,SAASA,SAAQ,QAAQ;AAAA,QAClC;AACA,YAAIA,SAAQ,UAAU;AACrB,kBAAQ,SAASA,SAAQ,QAAQ;AAAA,QAClC;AACA,eAAO,QAAQ,MAAM,KAAK;AAAA,MAC3B,GAAG,KAAK,OAAO;AAAA,IAChB,CAAC;AAAA,EACF;AAMD;AAGO,MAAe,oBAIZ,OAA8D;AAAA,EAGvE,YACmB,OAClB,QACC;AACD,UAAM,OAAO,MAAM;AAHD;AAAA,EAInB;AAAA,EAPA,QAA0B,UAAU,IAAY;AAAA;AAAA,EAUvC,sBAA+B;AACvC,WAAO;AAAA,EACR;AACD;AAUO,MAAe,uCAOZ,mBAAoF;AAAA,EAC7F,QAA0B,UAAU,IAAY;AAAA,EAEhD,YAAY,MAA8B,UAAyB,YAA6B;AAC/F,UAAM,MAAM,UAAU,UAAU;AAAA,EACjC;AAAA,EAIA,SAAS,MAAe,WAAiD;AACxE,SAAK,OAAO,WAAW,SAAS,UAAa,cAAc,SAAY,EAAE,MAAM,UAAU,IAAI;AAC7F,SAAK,OAAO,aAAa;AACzB,SAAK,OAAO,UAAU;AACtB,WAAO;AAAA,EACR;AACD;AAEO,MAAe,gCAMZ,YAA+D;AAAA,EACxE,QAA0B,UAAU,IAAY;AAAA,EAEvC,WAAW,KAAK,OAAO;AAAA,EACxB,cAAc;AACrB,QAAI,KAAK,UAAU;AAClB,aAAO,OAAO,KAAK,aAAa,WAC7B,YAAY,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,SAAS,MAC1D;AAAA,IACJ;AACA;AAAA,EACD;AAAA,EAIS,aAAqB;AAC7B,UAAM,WAAW,KAAK,YAAY;AAClC,WAAO,WAAW,GAAG,KAAK,YAAY,CAAC,IAAI,QAAQ,KAAK,KAAK,YAAY;AAAA,EAC1E;AAAA,EAES,sBAA+B;AACvC,WAAO,CAAC,CAAC,KAAK;AAAA,EACf;AACD;","names":["ref","actions"]}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var custom_exports = {};
20
+ __export(custom_exports, {
21
+ MsSqlCustomColumn: () => MsSqlCustomColumn,
22
+ MsSqlCustomColumnBuilder: () => MsSqlCustomColumnBuilder,
23
+ customType: () => customType
24
+ });
25
+ module.exports = __toCommonJS(custom_exports);
26
+ var import_entity = require("../../entity.cjs");
27
+ var import_common = require("./common.cjs");
28
+ class MsSqlCustomColumnBuilder extends import_common.MsSqlColumnBuilder {
29
+ static [import_entity.entityKind] = "MsSqlCustomColumnBuilder";
30
+ constructor(name, fieldConfig, customTypeParams) {
31
+ super(name, "custom", "MsSqlCustomColumn");
32
+ this.config.fieldConfig = fieldConfig;
33
+ this.config.customTypeParams = customTypeParams;
34
+ }
35
+ /** @internal */
36
+ build(table) {
37
+ return new MsSqlCustomColumn(
38
+ table,
39
+ this.config
40
+ );
41
+ }
42
+ }
43
+ class MsSqlCustomColumn extends import_common.MsSqlColumn {
44
+ static [import_entity.entityKind] = "MsSqlCustomColumn";
45
+ sqlName;
46
+ mapTo;
47
+ mapFrom;
48
+ constructor(table, config) {
49
+ super(table, config);
50
+ this.sqlName = config.customTypeParams.dataType(config.fieldConfig);
51
+ this.mapTo = config.customTypeParams.toDriver;
52
+ this.mapFrom = config.customTypeParams.fromDriver;
53
+ }
54
+ getSQLType() {
55
+ return this.sqlName;
56
+ }
57
+ mapFromDriverValue(value) {
58
+ return typeof this.mapFrom === "function" ? this.mapFrom(value) : value;
59
+ }
60
+ mapToDriverValue(value) {
61
+ return typeof this.mapTo === "function" ? this.mapTo(value) : value;
62
+ }
63
+ }
64
+ function customType(customTypeParams) {
65
+ return (dbName, fieldConfig) => {
66
+ return new MsSqlCustomColumnBuilder(dbName, fieldConfig, customTypeParams);
67
+ };
68
+ }
69
+ // Annotate the CommonJS export names for ESM import in node:
70
+ 0 && (module.exports = {
71
+ MsSqlCustomColumn,
72
+ MsSqlCustomColumnBuilder,
73
+ customType
74
+ });
75
+ //# sourceMappingURL=custom.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/mssql-core/columns/custom.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyMsSqlTable } from '~/mssql-core/table.ts';\nimport type { SQL } from '~/sql/sql.ts';\nimport type { Equal } from '~/utils.ts';\nimport { MsSqlColumn, MsSqlColumnBuilder } from './common.ts';\n\nexport type ConvertCustomConfig<TName extends string, T extends Partial<CustomTypeValues>> =\n\t& {\n\t\tname: TName;\n\t\tdataType: 'custom';\n\t\tcolumnType: 'MsSqlCustomColumn';\n\t\tdata: T['data'];\n\t\tdriverParam: T['driverData'];\n\t\tenumValues: undefined;\n\t\tgenerated: undefined;\n\t}\n\t& (T['notNull'] extends true ? { notNull: true } : {})\n\t& (T['default'] extends true ? { hasDefault: true } : {});\n\nexport interface MsSqlCustomColumnInnerConfig {\n\tcustomTypeValues: CustomTypeValues;\n}\n\nexport class MsSqlCustomColumnBuilder<T extends ColumnBuilderBaseConfig<'custom', 'MsSqlCustomColumn'>>\n\textends MsSqlColumnBuilder<\n\t\tT,\n\t\t{\n\t\t\tfieldConfig: CustomTypeValues['config'];\n\t\t\tcustomTypeParams: CustomTypeParams<any>;\n\t\t},\n\t\t{\n\t\t\tmssqlColumnBuilderBrand: 'MsSqlCustomColumnBuilderBrand';\n\t\t}\n\t>\n{\n\tstatic override readonly [entityKind]: string = 'MsSqlCustomColumnBuilder';\n\n\tconstructor(\n\t\tname: T['name'],\n\t\tfieldConfig: CustomTypeValues['config'],\n\t\tcustomTypeParams: CustomTypeParams<any>,\n\t) {\n\t\tsuper(name, 'custom', 'MsSqlCustomColumn');\n\t\tthis.config.fieldConfig = fieldConfig;\n\t\tthis.config.customTypeParams = customTypeParams;\n\t}\n\n\t/** @internal */\n\tbuild<TTableName extends string>(\n\t\ttable: AnyMsSqlTable<{ name: TTableName }>,\n\t): MsSqlCustomColumn<MakeColumnConfig<T, TTableName>> {\n\t\treturn new MsSqlCustomColumn<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t);\n\t}\n}\n\nexport class MsSqlCustomColumn<T extends ColumnBaseConfig<'custom', 'MsSqlCustomColumn'>> extends MsSqlColumn<T> {\n\tstatic override readonly [entityKind]: string = 'MsSqlCustomColumn';\n\n\tprivate sqlName: string;\n\tprivate mapTo?: (value: T['data']) => T['driverParam'];\n\tprivate mapFrom?: (value: T['driverParam']) => T['data'];\n\n\tconstructor(\n\t\ttable: AnyMsSqlTable<{ name: T['tableName'] }>,\n\t\tconfig: MsSqlCustomColumnBuilder<T>['config'],\n\t) {\n\t\tsuper(table, config);\n\t\tthis.sqlName = config.customTypeParams.dataType(config.fieldConfig);\n\t\tthis.mapTo = config.customTypeParams.toDriver;\n\t\tthis.mapFrom = config.customTypeParams.fromDriver;\n\t}\n\n\tgetSQLType(): string {\n\t\treturn this.sqlName;\n\t}\n\n\toverride mapFromDriverValue(value: T['driverParam']): T['data'] {\n\t\treturn typeof this.mapFrom === 'function' ? this.mapFrom(value) : value as T['data'];\n\t}\n\n\toverride mapToDriverValue(value: T['data']): T['driverParam'] {\n\t\treturn typeof this.mapTo === 'function' ? this.mapTo(value) : value as T['data'];\n\t}\n}\n\nexport type CustomTypeValues = {\n\t/**\n\t * Required type for custom column, that will infer proper type model\n\t *\n\t * Examples:\n\t *\n\t * If you want your column to be `string` type after selecting/or on inserting - use `data: string`. Like `text`, `varchar`\n\t *\n\t * If you want your column to be `number` type after selecting/or on inserting - use `data: number`. Like `integer`\n\t */\n\tdata: unknown;\n\n\t/**\n\t * Type helper, that represents what type database driver is accepting for specific database data type\n\t */\n\tdriverData?: unknown;\n\n\t/**\n\t * What config type should be used for {@link CustomTypeParams} `dataType` generation\n\t */\n\tconfig?: unknown;\n\n\t/**\n\t * Whether the config argument should be required or not\n\t * @default false\n\t */\n\tconfigRequired?: boolean;\n\n\t/**\n\t * If your custom data type should be notNull by default you can use `notNull: true`\n\t *\n\t * @example\n\t * const customSerial = customType<{ data: number, notNull: true, default: true }>({\n\t * \t dataType() {\n\t * \t return 'serial';\n\t * },\n\t * });\n\t */\n\tnotNull?: boolean;\n\n\t/**\n\t * If your custom data type has default you can use `default: true`\n\t *\n\t * @example\n\t * const customSerial = customType<{ data: number, notNull: true, default: true }>({\n\t * \t dataType() {\n\t * \t return 'serial';\n\t * },\n\t * });\n\t */\n\tdefault?: boolean;\n};\n\nexport interface CustomTypeParams<T extends CustomTypeValues> {\n\t/**\n\t * Database data type string representation, that is used for migrations\n\t * @example\n\t * ```\n\t * `jsonb`, `text`\n\t * ```\n\t *\n\t * If database data type needs additional params you can use them from `config` param\n\t * @example\n\t * ```\n\t * `varchar(256)`, `numeric(2,3)`\n\t * ```\n\t *\n\t * To make `config` be of specific type please use config generic in {@link CustomTypeValues}\n\t *\n\t * @example\n\t * Usage example\n\t * ```\n\t * dataType() {\n\t * return 'boolean';\n\t * },\n\t * ```\n\t * Or\n\t * ```\n\t * dataType(config) {\n\t * \t return typeof config.length !== 'undefined' ? `varchar(${config.length})` : `varchar`;\n\t * \t }\n\t * ```\n\t */\n\tdataType: (config: T['config'] | (Equal<T['configRequired'], true> extends true ? never : undefined)) => string;\n\n\t/**\n\t * Optional mapping function, between user input and driver\n\t * @example\n\t * For example, when using jsonb we need to map JS/TS object to string before writing to database\n\t * ```\n\t * toDriver(value: TData): string {\n\t * \t return JSON.stringify(value);\n\t * }\n\t * ```\n\t */\n\ttoDriver?: (value: T['data']) => T['driverData'] | SQL;\n\n\t/**\n\t * Optional mapping function, that is responsible for data mapping from database to JS/TS code\n\t * @example\n\t * For example, when using timestamp we need to map string Date representation to JS Date\n\t * ```\n\t * fromDriver(value: string): Date {\n\t * \treturn new Date(value);\n\t * },\n\t * ```\n\t */\n\tfromDriver?: (value: T['driverData']) => T['data'];\n}\n\n/**\n * Custom mssql database data type generator\n */\nexport function customType<T extends CustomTypeValues = CustomTypeValues>(\n\tcustomTypeParams: CustomTypeParams<T>,\n): Equal<T['configRequired'], true> extends true ? <TName extends string>(\n\t\tdbName: TName,\n\t\tfieldConfig: T['config'],\n\t) => MsSqlCustomColumnBuilder<ConvertCustomConfig<TName, T>>\n\t: <TName extends string>(\n\t\tdbName: TName,\n\t\tfieldConfig?: T['config'],\n\t) => MsSqlCustomColumnBuilder<ConvertCustomConfig<TName, T>>\n{\n\treturn <TName extends string>(\n\t\tdbName: TName,\n\t\tfieldConfig?: T['config'],\n\t): MsSqlCustomColumnBuilder<ConvertCustomConfig<TName, T>> => {\n\t\treturn new MsSqlCustomColumnBuilder(dbName as ConvertCustomConfig<TName, T>['name'], fieldConfig, customTypeParams);\n\t};\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,oBAA2B;AAI3B,oBAAgD;AAmBzC,MAAM,iCACJ,iCAUT;AAAA,EACC,QAA0B,wBAAU,IAAY;AAAA,EAEhD,YACC,MACA,aACA,kBACC;AACD,UAAM,MAAM,UAAU,mBAAmB;AACzC,SAAK,OAAO,cAAc;AAC1B,SAAK,OAAO,mBAAmB;AAAA,EAChC;AAAA;AAAA,EAGA,MACC,OACqD;AACrD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,0BAAqF,0BAAe;AAAA,EAChH,QAA0B,wBAAU,IAAY;AAAA,EAExC;AAAA,EACA;AAAA,EACA;AAAA,EAER,YACC,OACA,QACC;AACD,UAAM,OAAO,MAAM;AACnB,SAAK,UAAU,OAAO,iBAAiB,SAAS,OAAO,WAAW;AAClE,SAAK,QAAQ,OAAO,iBAAiB;AACrC,SAAK,UAAU,OAAO,iBAAiB;AAAA,EACxC;AAAA,EAEA,aAAqB;AACpB,WAAO,KAAK;AAAA,EACb;AAAA,EAES,mBAAmB,OAAoC;AAC/D,WAAO,OAAO,KAAK,YAAY,aAAa,KAAK,QAAQ,KAAK,IAAI;AAAA,EACnE;AAAA,EAES,iBAAiB,OAAoC;AAC7D,WAAO,OAAO,KAAK,UAAU,aAAa,KAAK,MAAM,KAAK,IAAI;AAAA,EAC/D;AACD;AAmHO,SAAS,WACf,kBASD;AACC,SAAO,CACN,QACA,gBAC6D;AAC7D,WAAO,IAAI,yBAAyB,QAAiD,aAAa,gBAAgB;AAAA,EACnH;AACD;","names":[]}
@@ -0,0 +1,149 @@
1
+ import type { ColumnBuilderBaseConfig } from "../../column-builder.cjs";
2
+ import type { ColumnBaseConfig } from "../../column.cjs";
3
+ import { entityKind } from "../../entity.cjs";
4
+ import type { AnyMsSqlTable } from "../table.cjs";
5
+ import type { SQL } from "../../sql/sql.cjs";
6
+ import type { Equal } from "../../utils.cjs";
7
+ import { MsSqlColumn, MsSqlColumnBuilder } from "./common.cjs";
8
+ export type ConvertCustomConfig<TName extends string, T extends Partial<CustomTypeValues>> = {
9
+ name: TName;
10
+ dataType: 'custom';
11
+ columnType: 'MsSqlCustomColumn';
12
+ data: T['data'];
13
+ driverParam: T['driverData'];
14
+ enumValues: undefined;
15
+ generated: undefined;
16
+ } & (T['notNull'] extends true ? {
17
+ notNull: true;
18
+ } : {}) & (T['default'] extends true ? {
19
+ hasDefault: true;
20
+ } : {});
21
+ export interface MsSqlCustomColumnInnerConfig {
22
+ customTypeValues: CustomTypeValues;
23
+ }
24
+ export declare class MsSqlCustomColumnBuilder<T extends ColumnBuilderBaseConfig<'custom', 'MsSqlCustomColumn'>> extends MsSqlColumnBuilder<T, {
25
+ fieldConfig: CustomTypeValues['config'];
26
+ customTypeParams: CustomTypeParams<any>;
27
+ }, {
28
+ mssqlColumnBuilderBrand: 'MsSqlCustomColumnBuilderBrand';
29
+ }> {
30
+ static readonly [entityKind]: string;
31
+ constructor(name: T['name'], fieldConfig: CustomTypeValues['config'], customTypeParams: CustomTypeParams<any>);
32
+ }
33
+ export declare class MsSqlCustomColumn<T extends ColumnBaseConfig<'custom', 'MsSqlCustomColumn'>> extends MsSqlColumn<T> {
34
+ static readonly [entityKind]: string;
35
+ private sqlName;
36
+ private mapTo?;
37
+ private mapFrom?;
38
+ constructor(table: AnyMsSqlTable<{
39
+ name: T['tableName'];
40
+ }>, config: MsSqlCustomColumnBuilder<T>['config']);
41
+ getSQLType(): string;
42
+ mapFromDriverValue(value: T['driverParam']): T['data'];
43
+ mapToDriverValue(value: T['data']): T['driverParam'];
44
+ }
45
+ export type CustomTypeValues = {
46
+ /**
47
+ * Required type for custom column, that will infer proper type model
48
+ *
49
+ * Examples:
50
+ *
51
+ * If you want your column to be `string` type after selecting/or on inserting - use `data: string`. Like `text`, `varchar`
52
+ *
53
+ * If you want your column to be `number` type after selecting/or on inserting - use `data: number`. Like `integer`
54
+ */
55
+ data: unknown;
56
+ /**
57
+ * Type helper, that represents what type database driver is accepting for specific database data type
58
+ */
59
+ driverData?: unknown;
60
+ /**
61
+ * What config type should be used for {@link CustomTypeParams} `dataType` generation
62
+ */
63
+ config?: unknown;
64
+ /**
65
+ * Whether the config argument should be required or not
66
+ * @default false
67
+ */
68
+ configRequired?: boolean;
69
+ /**
70
+ * If your custom data type should be notNull by default you can use `notNull: true`
71
+ *
72
+ * @example
73
+ * const customSerial = customType<{ data: number, notNull: true, default: true }>({
74
+ * dataType() {
75
+ * return 'serial';
76
+ * },
77
+ * });
78
+ */
79
+ notNull?: boolean;
80
+ /**
81
+ * If your custom data type has default you can use `default: true`
82
+ *
83
+ * @example
84
+ * const customSerial = customType<{ data: number, notNull: true, default: true }>({
85
+ * dataType() {
86
+ * return 'serial';
87
+ * },
88
+ * });
89
+ */
90
+ default?: boolean;
91
+ };
92
+ export interface CustomTypeParams<T extends CustomTypeValues> {
93
+ /**
94
+ * Database data type string representation, that is used for migrations
95
+ * @example
96
+ * ```
97
+ * `jsonb`, `text`
98
+ * ```
99
+ *
100
+ * If database data type needs additional params you can use them from `config` param
101
+ * @example
102
+ * ```
103
+ * `varchar(256)`, `numeric(2,3)`
104
+ * ```
105
+ *
106
+ * To make `config` be of specific type please use config generic in {@link CustomTypeValues}
107
+ *
108
+ * @example
109
+ * Usage example
110
+ * ```
111
+ * dataType() {
112
+ * return 'boolean';
113
+ * },
114
+ * ```
115
+ * Or
116
+ * ```
117
+ * dataType(config) {
118
+ * return typeof config.length !== 'undefined' ? `varchar(${config.length})` : `varchar`;
119
+ * }
120
+ * ```
121
+ */
122
+ dataType: (config: T['config'] | (Equal<T['configRequired'], true> extends true ? never : undefined)) => string;
123
+ /**
124
+ * Optional mapping function, between user input and driver
125
+ * @example
126
+ * For example, when using jsonb we need to map JS/TS object to string before writing to database
127
+ * ```
128
+ * toDriver(value: TData): string {
129
+ * return JSON.stringify(value);
130
+ * }
131
+ * ```
132
+ */
133
+ toDriver?: (value: T['data']) => T['driverData'] | SQL;
134
+ /**
135
+ * Optional mapping function, that is responsible for data mapping from database to JS/TS code
136
+ * @example
137
+ * For example, when using timestamp we need to map string Date representation to JS Date
138
+ * ```
139
+ * fromDriver(value: string): Date {
140
+ * return new Date(value);
141
+ * },
142
+ * ```
143
+ */
144
+ fromDriver?: (value: T['driverData']) => T['data'];
145
+ }
146
+ /**
147
+ * Custom mssql database data type generator
148
+ */
149
+ export declare function customType<T extends CustomTypeValues = CustomTypeValues>(customTypeParams: CustomTypeParams<T>): Equal<T['configRequired'], true> extends true ? <TName extends string>(dbName: TName, fieldConfig: T['config']) => MsSqlCustomColumnBuilder<ConvertCustomConfig<TName, T>> : <TName extends string>(dbName: TName, fieldConfig?: T['config']) => MsSqlCustomColumnBuilder<ConvertCustomConfig<TName, T>>;
@@ -0,0 +1,149 @@
1
+ import type { ColumnBuilderBaseConfig } from "../../column-builder.js";
2
+ import type { ColumnBaseConfig } from "../../column.js";
3
+ import { entityKind } from "../../entity.js";
4
+ import type { AnyMsSqlTable } from "../table.js";
5
+ import type { SQL } from "../../sql/sql.js";
6
+ import type { Equal } from "../../utils.js";
7
+ import { MsSqlColumn, MsSqlColumnBuilder } from "./common.js";
8
+ export type ConvertCustomConfig<TName extends string, T extends Partial<CustomTypeValues>> = {
9
+ name: TName;
10
+ dataType: 'custom';
11
+ columnType: 'MsSqlCustomColumn';
12
+ data: T['data'];
13
+ driverParam: T['driverData'];
14
+ enumValues: undefined;
15
+ generated: undefined;
16
+ } & (T['notNull'] extends true ? {
17
+ notNull: true;
18
+ } : {}) & (T['default'] extends true ? {
19
+ hasDefault: true;
20
+ } : {});
21
+ export interface MsSqlCustomColumnInnerConfig {
22
+ customTypeValues: CustomTypeValues;
23
+ }
24
+ export declare class MsSqlCustomColumnBuilder<T extends ColumnBuilderBaseConfig<'custom', 'MsSqlCustomColumn'>> extends MsSqlColumnBuilder<T, {
25
+ fieldConfig: CustomTypeValues['config'];
26
+ customTypeParams: CustomTypeParams<any>;
27
+ }, {
28
+ mssqlColumnBuilderBrand: 'MsSqlCustomColumnBuilderBrand';
29
+ }> {
30
+ static readonly [entityKind]: string;
31
+ constructor(name: T['name'], fieldConfig: CustomTypeValues['config'], customTypeParams: CustomTypeParams<any>);
32
+ }
33
+ export declare class MsSqlCustomColumn<T extends ColumnBaseConfig<'custom', 'MsSqlCustomColumn'>> extends MsSqlColumn<T> {
34
+ static readonly [entityKind]: string;
35
+ private sqlName;
36
+ private mapTo?;
37
+ private mapFrom?;
38
+ constructor(table: AnyMsSqlTable<{
39
+ name: T['tableName'];
40
+ }>, config: MsSqlCustomColumnBuilder<T>['config']);
41
+ getSQLType(): string;
42
+ mapFromDriverValue(value: T['driverParam']): T['data'];
43
+ mapToDriverValue(value: T['data']): T['driverParam'];
44
+ }
45
+ export type CustomTypeValues = {
46
+ /**
47
+ * Required type for custom column, that will infer proper type model
48
+ *
49
+ * Examples:
50
+ *
51
+ * If you want your column to be `string` type after selecting/or on inserting - use `data: string`. Like `text`, `varchar`
52
+ *
53
+ * If you want your column to be `number` type after selecting/or on inserting - use `data: number`. Like `integer`
54
+ */
55
+ data: unknown;
56
+ /**
57
+ * Type helper, that represents what type database driver is accepting for specific database data type
58
+ */
59
+ driverData?: unknown;
60
+ /**
61
+ * What config type should be used for {@link CustomTypeParams} `dataType` generation
62
+ */
63
+ config?: unknown;
64
+ /**
65
+ * Whether the config argument should be required or not
66
+ * @default false
67
+ */
68
+ configRequired?: boolean;
69
+ /**
70
+ * If your custom data type should be notNull by default you can use `notNull: true`
71
+ *
72
+ * @example
73
+ * const customSerial = customType<{ data: number, notNull: true, default: true }>({
74
+ * dataType() {
75
+ * return 'serial';
76
+ * },
77
+ * });
78
+ */
79
+ notNull?: boolean;
80
+ /**
81
+ * If your custom data type has default you can use `default: true`
82
+ *
83
+ * @example
84
+ * const customSerial = customType<{ data: number, notNull: true, default: true }>({
85
+ * dataType() {
86
+ * return 'serial';
87
+ * },
88
+ * });
89
+ */
90
+ default?: boolean;
91
+ };
92
+ export interface CustomTypeParams<T extends CustomTypeValues> {
93
+ /**
94
+ * Database data type string representation, that is used for migrations
95
+ * @example
96
+ * ```
97
+ * `jsonb`, `text`
98
+ * ```
99
+ *
100
+ * If database data type needs additional params you can use them from `config` param
101
+ * @example
102
+ * ```
103
+ * `varchar(256)`, `numeric(2,3)`
104
+ * ```
105
+ *
106
+ * To make `config` be of specific type please use config generic in {@link CustomTypeValues}
107
+ *
108
+ * @example
109
+ * Usage example
110
+ * ```
111
+ * dataType() {
112
+ * return 'boolean';
113
+ * },
114
+ * ```
115
+ * Or
116
+ * ```
117
+ * dataType(config) {
118
+ * return typeof config.length !== 'undefined' ? `varchar(${config.length})` : `varchar`;
119
+ * }
120
+ * ```
121
+ */
122
+ dataType: (config: T['config'] | (Equal<T['configRequired'], true> extends true ? never : undefined)) => string;
123
+ /**
124
+ * Optional mapping function, between user input and driver
125
+ * @example
126
+ * For example, when using jsonb we need to map JS/TS object to string before writing to database
127
+ * ```
128
+ * toDriver(value: TData): string {
129
+ * return JSON.stringify(value);
130
+ * }
131
+ * ```
132
+ */
133
+ toDriver?: (value: T['data']) => T['driverData'] | SQL;
134
+ /**
135
+ * Optional mapping function, that is responsible for data mapping from database to JS/TS code
136
+ * @example
137
+ * For example, when using timestamp we need to map string Date representation to JS Date
138
+ * ```
139
+ * fromDriver(value: string): Date {
140
+ * return new Date(value);
141
+ * },
142
+ * ```
143
+ */
144
+ fromDriver?: (value: T['driverData']) => T['data'];
145
+ }
146
+ /**
147
+ * Custom mssql database data type generator
148
+ */
149
+ export declare function customType<T extends CustomTypeValues = CustomTypeValues>(customTypeParams: CustomTypeParams<T>): Equal<T['configRequired'], true> extends true ? <TName extends string>(dbName: TName, fieldConfig: T['config']) => MsSqlCustomColumnBuilder<ConvertCustomConfig<TName, T>> : <TName extends string>(dbName: TName, fieldConfig?: T['config']) => MsSqlCustomColumnBuilder<ConvertCustomConfig<TName, T>>;
@@ -0,0 +1,49 @@
1
+ import { entityKind } from "../../entity.js";
2
+ import { MsSqlColumn, MsSqlColumnBuilder } from "./common.js";
3
+ class MsSqlCustomColumnBuilder extends MsSqlColumnBuilder {
4
+ static [entityKind] = "MsSqlCustomColumnBuilder";
5
+ constructor(name, fieldConfig, customTypeParams) {
6
+ super(name, "custom", "MsSqlCustomColumn");
7
+ this.config.fieldConfig = fieldConfig;
8
+ this.config.customTypeParams = customTypeParams;
9
+ }
10
+ /** @internal */
11
+ build(table) {
12
+ return new MsSqlCustomColumn(
13
+ table,
14
+ this.config
15
+ );
16
+ }
17
+ }
18
+ class MsSqlCustomColumn extends MsSqlColumn {
19
+ static [entityKind] = "MsSqlCustomColumn";
20
+ sqlName;
21
+ mapTo;
22
+ mapFrom;
23
+ constructor(table, config) {
24
+ super(table, config);
25
+ this.sqlName = config.customTypeParams.dataType(config.fieldConfig);
26
+ this.mapTo = config.customTypeParams.toDriver;
27
+ this.mapFrom = config.customTypeParams.fromDriver;
28
+ }
29
+ getSQLType() {
30
+ return this.sqlName;
31
+ }
32
+ mapFromDriverValue(value) {
33
+ return typeof this.mapFrom === "function" ? this.mapFrom(value) : value;
34
+ }
35
+ mapToDriverValue(value) {
36
+ return typeof this.mapTo === "function" ? this.mapTo(value) : value;
37
+ }
38
+ }
39
+ function customType(customTypeParams) {
40
+ return (dbName, fieldConfig) => {
41
+ return new MsSqlCustomColumnBuilder(dbName, fieldConfig, customTypeParams);
42
+ };
43
+ }
44
+ export {
45
+ MsSqlCustomColumn,
46
+ MsSqlCustomColumnBuilder,
47
+ customType
48
+ };
49
+ //# sourceMappingURL=custom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/mssql-core/columns/custom.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyMsSqlTable } from '~/mssql-core/table.ts';\nimport type { SQL } from '~/sql/sql.ts';\nimport type { Equal } from '~/utils.ts';\nimport { MsSqlColumn, MsSqlColumnBuilder } from './common.ts';\n\nexport type ConvertCustomConfig<TName extends string, T extends Partial<CustomTypeValues>> =\n\t& {\n\t\tname: TName;\n\t\tdataType: 'custom';\n\t\tcolumnType: 'MsSqlCustomColumn';\n\t\tdata: T['data'];\n\t\tdriverParam: T['driverData'];\n\t\tenumValues: undefined;\n\t\tgenerated: undefined;\n\t}\n\t& (T['notNull'] extends true ? { notNull: true } : {})\n\t& (T['default'] extends true ? { hasDefault: true } : {});\n\nexport interface MsSqlCustomColumnInnerConfig {\n\tcustomTypeValues: CustomTypeValues;\n}\n\nexport class MsSqlCustomColumnBuilder<T extends ColumnBuilderBaseConfig<'custom', 'MsSqlCustomColumn'>>\n\textends MsSqlColumnBuilder<\n\t\tT,\n\t\t{\n\t\t\tfieldConfig: CustomTypeValues['config'];\n\t\t\tcustomTypeParams: CustomTypeParams<any>;\n\t\t},\n\t\t{\n\t\t\tmssqlColumnBuilderBrand: 'MsSqlCustomColumnBuilderBrand';\n\t\t}\n\t>\n{\n\tstatic override readonly [entityKind]: string = 'MsSqlCustomColumnBuilder';\n\n\tconstructor(\n\t\tname: T['name'],\n\t\tfieldConfig: CustomTypeValues['config'],\n\t\tcustomTypeParams: CustomTypeParams<any>,\n\t) {\n\t\tsuper(name, 'custom', 'MsSqlCustomColumn');\n\t\tthis.config.fieldConfig = fieldConfig;\n\t\tthis.config.customTypeParams = customTypeParams;\n\t}\n\n\t/** @internal */\n\tbuild<TTableName extends string>(\n\t\ttable: AnyMsSqlTable<{ name: TTableName }>,\n\t): MsSqlCustomColumn<MakeColumnConfig<T, TTableName>> {\n\t\treturn new MsSqlCustomColumn<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t);\n\t}\n}\n\nexport class MsSqlCustomColumn<T extends ColumnBaseConfig<'custom', 'MsSqlCustomColumn'>> extends MsSqlColumn<T> {\n\tstatic override readonly [entityKind]: string = 'MsSqlCustomColumn';\n\n\tprivate sqlName: string;\n\tprivate mapTo?: (value: T['data']) => T['driverParam'];\n\tprivate mapFrom?: (value: T['driverParam']) => T['data'];\n\n\tconstructor(\n\t\ttable: AnyMsSqlTable<{ name: T['tableName'] }>,\n\t\tconfig: MsSqlCustomColumnBuilder<T>['config'],\n\t) {\n\t\tsuper(table, config);\n\t\tthis.sqlName = config.customTypeParams.dataType(config.fieldConfig);\n\t\tthis.mapTo = config.customTypeParams.toDriver;\n\t\tthis.mapFrom = config.customTypeParams.fromDriver;\n\t}\n\n\tgetSQLType(): string {\n\t\treturn this.sqlName;\n\t}\n\n\toverride mapFromDriverValue(value: T['driverParam']): T['data'] {\n\t\treturn typeof this.mapFrom === 'function' ? this.mapFrom(value) : value as T['data'];\n\t}\n\n\toverride mapToDriverValue(value: T['data']): T['driverParam'] {\n\t\treturn typeof this.mapTo === 'function' ? this.mapTo(value) : value as T['data'];\n\t}\n}\n\nexport type CustomTypeValues = {\n\t/**\n\t * Required type for custom column, that will infer proper type model\n\t *\n\t * Examples:\n\t *\n\t * If you want your column to be `string` type after selecting/or on inserting - use `data: string`. Like `text`, `varchar`\n\t *\n\t * If you want your column to be `number` type after selecting/or on inserting - use `data: number`. Like `integer`\n\t */\n\tdata: unknown;\n\n\t/**\n\t * Type helper, that represents what type database driver is accepting for specific database data type\n\t */\n\tdriverData?: unknown;\n\n\t/**\n\t * What config type should be used for {@link CustomTypeParams} `dataType` generation\n\t */\n\tconfig?: unknown;\n\n\t/**\n\t * Whether the config argument should be required or not\n\t * @default false\n\t */\n\tconfigRequired?: boolean;\n\n\t/**\n\t * If your custom data type should be notNull by default you can use `notNull: true`\n\t *\n\t * @example\n\t * const customSerial = customType<{ data: number, notNull: true, default: true }>({\n\t * \t dataType() {\n\t * \t return 'serial';\n\t * },\n\t * });\n\t */\n\tnotNull?: boolean;\n\n\t/**\n\t * If your custom data type has default you can use `default: true`\n\t *\n\t * @example\n\t * const customSerial = customType<{ data: number, notNull: true, default: true }>({\n\t * \t dataType() {\n\t * \t return 'serial';\n\t * },\n\t * });\n\t */\n\tdefault?: boolean;\n};\n\nexport interface CustomTypeParams<T extends CustomTypeValues> {\n\t/**\n\t * Database data type string representation, that is used for migrations\n\t * @example\n\t * ```\n\t * `jsonb`, `text`\n\t * ```\n\t *\n\t * If database data type needs additional params you can use them from `config` param\n\t * @example\n\t * ```\n\t * `varchar(256)`, `numeric(2,3)`\n\t * ```\n\t *\n\t * To make `config` be of specific type please use config generic in {@link CustomTypeValues}\n\t *\n\t * @example\n\t * Usage example\n\t * ```\n\t * dataType() {\n\t * return 'boolean';\n\t * },\n\t * ```\n\t * Or\n\t * ```\n\t * dataType(config) {\n\t * \t return typeof config.length !== 'undefined' ? `varchar(${config.length})` : `varchar`;\n\t * \t }\n\t * ```\n\t */\n\tdataType: (config: T['config'] | (Equal<T['configRequired'], true> extends true ? never : undefined)) => string;\n\n\t/**\n\t * Optional mapping function, between user input and driver\n\t * @example\n\t * For example, when using jsonb we need to map JS/TS object to string before writing to database\n\t * ```\n\t * toDriver(value: TData): string {\n\t * \t return JSON.stringify(value);\n\t * }\n\t * ```\n\t */\n\ttoDriver?: (value: T['data']) => T['driverData'] | SQL;\n\n\t/**\n\t * Optional mapping function, that is responsible for data mapping from database to JS/TS code\n\t * @example\n\t * For example, when using timestamp we need to map string Date representation to JS Date\n\t * ```\n\t * fromDriver(value: string): Date {\n\t * \treturn new Date(value);\n\t * },\n\t * ```\n\t */\n\tfromDriver?: (value: T['driverData']) => T['data'];\n}\n\n/**\n * Custom mssql database data type generator\n */\nexport function customType<T extends CustomTypeValues = CustomTypeValues>(\n\tcustomTypeParams: CustomTypeParams<T>,\n): Equal<T['configRequired'], true> extends true ? <TName extends string>(\n\t\tdbName: TName,\n\t\tfieldConfig: T['config'],\n\t) => MsSqlCustomColumnBuilder<ConvertCustomConfig<TName, T>>\n\t: <TName extends string>(\n\t\tdbName: TName,\n\t\tfieldConfig?: T['config'],\n\t) => MsSqlCustomColumnBuilder<ConvertCustomConfig<TName, T>>\n{\n\treturn <TName extends string>(\n\t\tdbName: TName,\n\t\tfieldConfig?: T['config'],\n\t): MsSqlCustomColumnBuilder<ConvertCustomConfig<TName, T>> => {\n\t\treturn new MsSqlCustomColumnBuilder(dbName as ConvertCustomConfig<TName, T>['name'], fieldConfig, customTypeParams);\n\t};\n}\n"],"mappings":"AAEA,SAAS,kBAAkB;AAI3B,SAAS,aAAa,0BAA0B;AAmBzC,MAAM,iCACJ,mBAUT;AAAA,EACC,QAA0B,UAAU,IAAY;AAAA,EAEhD,YACC,MACA,aACA,kBACC;AACD,UAAM,MAAM,UAAU,mBAAmB;AACzC,SAAK,OAAO,cAAc;AAC1B,SAAK,OAAO,mBAAmB;AAAA,EAChC;AAAA;AAAA,EAGA,MACC,OACqD;AACrD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,0BAAqF,YAAe;AAAA,EAChH,QAA0B,UAAU,IAAY;AAAA,EAExC;AAAA,EACA;AAAA,EACA;AAAA,EAER,YACC,OACA,QACC;AACD,UAAM,OAAO,MAAM;AACnB,SAAK,UAAU,OAAO,iBAAiB,SAAS,OAAO,WAAW;AAClE,SAAK,QAAQ,OAAO,iBAAiB;AACrC,SAAK,UAAU,OAAO,iBAAiB;AAAA,EACxC;AAAA,EAEA,aAAqB;AACpB,WAAO,KAAK;AAAA,EACb;AAAA,EAES,mBAAmB,OAAoC;AAC/D,WAAO,OAAO,KAAK,YAAY,aAAa,KAAK,QAAQ,KAAK,IAAI;AAAA,EACnE;AAAA,EAES,iBAAiB,OAAoC;AAC7D,WAAO,OAAO,KAAK,UAAU,aAAa,KAAK,MAAM,KAAK,IAAI;AAAA,EAC/D;AACD;AAmHO,SAAS,WACf,kBASD;AACC,SAAO,CACN,QACA,gBAC6D;AAC7D,WAAO,IAAI,yBAAyB,QAAiD,aAAa,gBAAgB;AAAA,EACnH;AACD;","names":[]}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var date_exports = {};
20
+ __export(date_exports, {
21
+ MsSqlDate: () => MsSqlDate,
22
+ MsSqlDateBuilder: () => MsSqlDateBuilder,
23
+ MsSqlDateString: () => MsSqlDateString,
24
+ MsSqlDateStringBuilder: () => MsSqlDateStringBuilder,
25
+ date: () => date
26
+ });
27
+ module.exports = __toCommonJS(date_exports);
28
+ var import_entity = require("../../entity.cjs");
29
+ var import_utils = require("../../utils.cjs");
30
+ var import_common = require("./common.cjs");
31
+ var import_date_common = require("./date.common.cjs");
32
+ class MsSqlDateBuilder extends import_date_common.MsSqlDateColumnBaseBuilder {
33
+ static [import_entity.entityKind] = "MsSqlDateBuilder";
34
+ constructor(name) {
35
+ super(name, "date", "MsSqlDate");
36
+ }
37
+ /** @internal */
38
+ build(table) {
39
+ return new MsSqlDate(table, this.config);
40
+ }
41
+ }
42
+ class MsSqlDate extends import_common.MsSqlColumn {
43
+ static [import_entity.entityKind] = "MsSqlDate";
44
+ constructor(table, config) {
45
+ super(table, config);
46
+ }
47
+ getSQLType() {
48
+ return `date`;
49
+ }
50
+ mapFromDriverValue(value) {
51
+ return new Date(value);
52
+ }
53
+ }
54
+ class MsSqlDateStringBuilder extends import_date_common.MsSqlDateColumnBaseBuilder {
55
+ static [import_entity.entityKind] = "MsSqlDateStringBuilder";
56
+ constructor(name) {
57
+ super(name, "string", "MsSqlDateString");
58
+ }
59
+ /** @internal */
60
+ build(table) {
61
+ return new MsSqlDateString(
62
+ table,
63
+ this.config
64
+ );
65
+ }
66
+ }
67
+ class MsSqlDateString extends import_common.MsSqlColumn {
68
+ static [import_entity.entityKind] = "MsSqlDateString";
69
+ constructor(table, config) {
70
+ super(table, config);
71
+ }
72
+ getSQLType() {
73
+ return `date`;
74
+ }
75
+ mapFromDriverValue(value) {
76
+ return typeof value === "string" ? value : value?.toISOString().split("T")[0] ?? null;
77
+ }
78
+ }
79
+ function date(a, b) {
80
+ const { name, config } = (0, import_utils.getColumnNameAndConfig)(a, b);
81
+ if (config?.mode === "string") {
82
+ return new MsSqlDateStringBuilder(name);
83
+ }
84
+ return new MsSqlDateBuilder(name);
85
+ }
86
+ // Annotate the CommonJS export names for ESM import in node:
87
+ 0 && (module.exports = {
88
+ MsSqlDate,
89
+ MsSqlDateBuilder,
90
+ MsSqlDateString,
91
+ MsSqlDateStringBuilder,
92
+ date
93
+ });
94
+ //# sourceMappingURL=date.cjs.map