drizzle-orm 0.31.2 → 0.32.0-0d48b64

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 (367) hide show
  1. package/column-builder.cjs +2 -1
  2. package/column-builder.cjs.map +1 -1
  3. package/column-builder.d.cts +39 -5
  4. package/column-builder.d.ts +39 -5
  5. package/column-builder.js +2 -1
  6. package/column-builder.js.map +1 -1
  7. package/column.cjs +8 -0
  8. package/column.cjs.map +1 -1
  9. package/column.d.cts +4 -1
  10. package/column.d.ts +4 -1
  11. package/column.js +8 -0
  12. package/column.js.map +1 -1
  13. package/mysql-core/columns/bigint.cjs.map +1 -1
  14. package/mysql-core/columns/bigint.d.cts +2 -0
  15. package/mysql-core/columns/bigint.d.ts +2 -0
  16. package/mysql-core/columns/bigint.js.map +1 -1
  17. package/mysql-core/columns/binary.cjs.map +1 -1
  18. package/mysql-core/columns/binary.d.cts +1 -0
  19. package/mysql-core/columns/binary.d.ts +1 -0
  20. package/mysql-core/columns/binary.js.map +1 -1
  21. package/mysql-core/columns/boolean.cjs.map +1 -1
  22. package/mysql-core/columns/boolean.d.cts +1 -0
  23. package/mysql-core/columns/boolean.d.ts +1 -0
  24. package/mysql-core/columns/boolean.js.map +1 -1
  25. package/mysql-core/columns/char.cjs.map +1 -1
  26. package/mysql-core/columns/char.d.cts +1 -0
  27. package/mysql-core/columns/char.d.ts +1 -0
  28. package/mysql-core/columns/char.js.map +1 -1
  29. package/mysql-core/columns/common.cjs +8 -0
  30. package/mysql-core/columns/common.cjs.map +1 -1
  31. package/mysql-core/columns/common.d.cts +6 -1
  32. package/mysql-core/columns/common.d.ts +6 -1
  33. package/mysql-core/columns/common.js +8 -0
  34. package/mysql-core/columns/common.js.map +1 -1
  35. package/mysql-core/columns/custom.cjs.map +1 -1
  36. package/mysql-core/columns/custom.d.cts +1 -0
  37. package/mysql-core/columns/custom.d.ts +1 -0
  38. package/mysql-core/columns/custom.js.map +1 -1
  39. package/mysql-core/columns/date.cjs.map +1 -1
  40. package/mysql-core/columns/date.d.cts +2 -0
  41. package/mysql-core/columns/date.d.ts +2 -0
  42. package/mysql-core/columns/date.js.map +1 -1
  43. package/mysql-core/columns/datetime.cjs.map +1 -1
  44. package/mysql-core/columns/datetime.d.cts +2 -0
  45. package/mysql-core/columns/datetime.d.ts +2 -0
  46. package/mysql-core/columns/datetime.js.map +1 -1
  47. package/mysql-core/columns/decimal.cjs.map +1 -1
  48. package/mysql-core/columns/decimal.d.cts +1 -0
  49. package/mysql-core/columns/decimal.d.ts +1 -0
  50. package/mysql-core/columns/decimal.js.map +1 -1
  51. package/mysql-core/columns/double.cjs.map +1 -1
  52. package/mysql-core/columns/double.d.cts +1 -0
  53. package/mysql-core/columns/double.d.ts +1 -0
  54. package/mysql-core/columns/double.js.map +1 -1
  55. package/mysql-core/columns/enum.cjs.map +1 -1
  56. package/mysql-core/columns/enum.d.cts +1 -0
  57. package/mysql-core/columns/enum.d.ts +1 -0
  58. package/mysql-core/columns/enum.js.map +1 -1
  59. package/mysql-core/columns/float.cjs.map +1 -1
  60. package/mysql-core/columns/float.d.cts +1 -0
  61. package/mysql-core/columns/float.d.ts +1 -0
  62. package/mysql-core/columns/float.js.map +1 -1
  63. package/mysql-core/columns/int.cjs.map +1 -1
  64. package/mysql-core/columns/int.d.cts +1 -0
  65. package/mysql-core/columns/int.d.ts +1 -0
  66. package/mysql-core/columns/int.js.map +1 -1
  67. package/mysql-core/columns/json.cjs.map +1 -1
  68. package/mysql-core/columns/json.d.cts +1 -0
  69. package/mysql-core/columns/json.d.ts +1 -0
  70. package/mysql-core/columns/json.js.map +1 -1
  71. package/mysql-core/columns/mediumint.cjs.map +1 -1
  72. package/mysql-core/columns/mediumint.d.cts +1 -0
  73. package/mysql-core/columns/mediumint.d.ts +1 -0
  74. package/mysql-core/columns/mediumint.js.map +1 -1
  75. package/mysql-core/columns/real.cjs.map +1 -1
  76. package/mysql-core/columns/real.d.cts +1 -0
  77. package/mysql-core/columns/real.d.ts +1 -0
  78. package/mysql-core/columns/real.js.map +1 -1
  79. package/mysql-core/columns/serial.cjs.map +1 -1
  80. package/mysql-core/columns/serial.d.cts +1 -0
  81. package/mysql-core/columns/serial.d.ts +1 -0
  82. package/mysql-core/columns/serial.js.map +1 -1
  83. package/mysql-core/columns/smallint.cjs.map +1 -1
  84. package/mysql-core/columns/smallint.d.cts +1 -0
  85. package/mysql-core/columns/smallint.d.ts +1 -0
  86. package/mysql-core/columns/smallint.js.map +1 -1
  87. package/mysql-core/columns/text.cjs.map +1 -1
  88. package/mysql-core/columns/text.d.cts +1 -0
  89. package/mysql-core/columns/text.d.ts +1 -0
  90. package/mysql-core/columns/text.js.map +1 -1
  91. package/mysql-core/columns/time.cjs.map +1 -1
  92. package/mysql-core/columns/time.d.cts +1 -0
  93. package/mysql-core/columns/time.d.ts +1 -0
  94. package/mysql-core/columns/time.js.map +1 -1
  95. package/mysql-core/columns/timestamp.cjs.map +1 -1
  96. package/mysql-core/columns/timestamp.d.cts +2 -0
  97. package/mysql-core/columns/timestamp.d.ts +2 -0
  98. package/mysql-core/columns/timestamp.js.map +1 -1
  99. package/mysql-core/columns/tinyint.cjs.map +1 -1
  100. package/mysql-core/columns/tinyint.d.cts +1 -0
  101. package/mysql-core/columns/tinyint.d.ts +1 -0
  102. package/mysql-core/columns/tinyint.js.map +1 -1
  103. package/mysql-core/columns/varbinary.cjs.map +1 -1
  104. package/mysql-core/columns/varbinary.d.cts +1 -0
  105. package/mysql-core/columns/varbinary.d.ts +1 -0
  106. package/mysql-core/columns/varbinary.js.map +1 -1
  107. package/mysql-core/columns/varchar.cjs.map +1 -1
  108. package/mysql-core/columns/varchar.d.cts +1 -0
  109. package/mysql-core/columns/varchar.d.ts +1 -0
  110. package/mysql-core/columns/varchar.js.map +1 -1
  111. package/mysql-core/columns/year.cjs.map +1 -1
  112. package/mysql-core/columns/year.d.cts +1 -0
  113. package/mysql-core/columns/year.d.ts +1 -0
  114. package/mysql-core/columns/year.js.map +1 -1
  115. package/mysql-core/dialect.cjs +3 -1
  116. package/mysql-core/dialect.cjs.map +1 -1
  117. package/mysql-core/dialect.js +3 -1
  118. package/mysql-core/dialect.js.map +1 -1
  119. package/mysql-core/query-builders/update.cjs.map +1 -1
  120. package/mysql-core/query-builders/update.d.cts +1 -1
  121. package/mysql-core/query-builders/update.d.ts +1 -1
  122. package/mysql-core/query-builders/update.js.map +1 -1
  123. package/operations.cjs.map +1 -1
  124. package/operations.d.cts +4 -1
  125. package/operations.d.ts +4 -1
  126. package/package.json +26 -55
  127. package/pg-core/columns/bigint.cjs +3 -2
  128. package/pg-core/columns/bigint.cjs.map +1 -1
  129. package/pg-core/columns/bigint.d.cts +6 -3
  130. package/pg-core/columns/bigint.d.ts +6 -3
  131. package/pg-core/columns/bigint.js +4 -3
  132. package/pg-core/columns/bigint.js.map +1 -1
  133. package/pg-core/columns/bigserial.cjs.map +1 -1
  134. package/pg-core/columns/bigserial.d.cts +2 -0
  135. package/pg-core/columns/bigserial.d.ts +2 -0
  136. package/pg-core/columns/bigserial.js.map +1 -1
  137. package/pg-core/columns/boolean.cjs.map +1 -1
  138. package/pg-core/columns/boolean.d.cts +1 -0
  139. package/pg-core/columns/boolean.d.ts +1 -0
  140. package/pg-core/columns/boolean.js.map +1 -1
  141. package/pg-core/columns/char.cjs.map +1 -1
  142. package/pg-core/columns/char.d.cts +1 -0
  143. package/pg-core/columns/char.d.ts +1 -0
  144. package/pg-core/columns/char.js.map +1 -1
  145. package/pg-core/columns/cidr.cjs.map +1 -1
  146. package/pg-core/columns/cidr.d.cts +1 -0
  147. package/pg-core/columns/cidr.d.ts +1 -0
  148. package/pg-core/columns/cidr.js.map +1 -1
  149. package/pg-core/columns/common.cjs +8 -0
  150. package/pg-core/columns/common.cjs.map +1 -1
  151. package/pg-core/columns/common.d.cts +4 -1
  152. package/pg-core/columns/common.d.ts +4 -1
  153. package/pg-core/columns/common.js +8 -0
  154. package/pg-core/columns/common.js.map +1 -1
  155. package/pg-core/columns/custom.cjs.map +1 -1
  156. package/pg-core/columns/custom.d.cts +1 -0
  157. package/pg-core/columns/custom.d.ts +1 -0
  158. package/pg-core/columns/custom.js.map +1 -1
  159. package/pg-core/columns/date.cjs.map +1 -1
  160. package/pg-core/columns/date.d.cts +2 -0
  161. package/pg-core/columns/date.d.ts +2 -0
  162. package/pg-core/columns/date.js.map +1 -1
  163. package/pg-core/columns/double-precision.cjs.map +1 -1
  164. package/pg-core/columns/double-precision.d.cts +1 -0
  165. package/pg-core/columns/double-precision.d.ts +1 -0
  166. package/pg-core/columns/double-precision.js.map +1 -1
  167. package/pg-core/columns/enum.cjs.map +1 -1
  168. package/pg-core/columns/enum.d.cts +1 -0
  169. package/pg-core/columns/enum.d.ts +1 -0
  170. package/pg-core/columns/enum.js.map +1 -1
  171. package/pg-core/columns/inet.cjs.map +1 -1
  172. package/pg-core/columns/inet.d.cts +1 -0
  173. package/pg-core/columns/inet.d.ts +1 -0
  174. package/pg-core/columns/inet.js.map +1 -1
  175. package/pg-core/columns/int.common.cjs +72 -0
  176. package/pg-core/columns/int.common.cjs.map +1 -0
  177. package/pg-core/columns/int.common.d.cts +15 -0
  178. package/pg-core/columns/int.common.d.ts +15 -0
  179. package/pg-core/columns/int.common.js +48 -0
  180. package/pg-core/columns/int.common.js.map +1 -0
  181. package/pg-core/columns/integer.cjs +2 -1
  182. package/pg-core/columns/integer.cjs.map +1 -1
  183. package/pg-core/columns/integer.d.cts +4 -2
  184. package/pg-core/columns/integer.d.ts +4 -2
  185. package/pg-core/columns/integer.js +3 -2
  186. package/pg-core/columns/integer.js.map +1 -1
  187. package/pg-core/columns/interval.cjs.map +1 -1
  188. package/pg-core/columns/interval.d.cts +1 -0
  189. package/pg-core/columns/interval.d.ts +1 -0
  190. package/pg-core/columns/interval.js.map +1 -1
  191. package/pg-core/columns/json.cjs.map +1 -1
  192. package/pg-core/columns/json.d.cts +1 -0
  193. package/pg-core/columns/json.d.ts +1 -0
  194. package/pg-core/columns/json.js.map +1 -1
  195. package/pg-core/columns/jsonb.cjs.map +1 -1
  196. package/pg-core/columns/jsonb.d.cts +1 -0
  197. package/pg-core/columns/jsonb.d.ts +1 -0
  198. package/pg-core/columns/jsonb.js.map +1 -1
  199. package/pg-core/columns/line.cjs.map +1 -1
  200. package/pg-core/columns/line.d.cts +2 -0
  201. package/pg-core/columns/line.d.ts +2 -0
  202. package/pg-core/columns/line.js.map +1 -1
  203. package/pg-core/columns/macaddr.cjs.map +1 -1
  204. package/pg-core/columns/macaddr.d.cts +1 -0
  205. package/pg-core/columns/macaddr.d.ts +1 -0
  206. package/pg-core/columns/macaddr.js.map +1 -1
  207. package/pg-core/columns/macaddr8.cjs.map +1 -1
  208. package/pg-core/columns/macaddr8.d.cts +1 -0
  209. package/pg-core/columns/macaddr8.d.ts +1 -0
  210. package/pg-core/columns/macaddr8.js.map +1 -1
  211. package/pg-core/columns/numeric.cjs.map +1 -1
  212. package/pg-core/columns/numeric.d.cts +1 -0
  213. package/pg-core/columns/numeric.d.ts +1 -0
  214. package/pg-core/columns/numeric.js.map +1 -1
  215. package/pg-core/columns/point.cjs.map +1 -1
  216. package/pg-core/columns/point.d.cts +2 -0
  217. package/pg-core/columns/point.d.ts +2 -0
  218. package/pg-core/columns/point.js.map +1 -1
  219. package/pg-core/columns/postgis_extension/geometry.cjs.map +1 -1
  220. package/pg-core/columns/postgis_extension/geometry.d.cts +2 -0
  221. package/pg-core/columns/postgis_extension/geometry.d.ts +2 -0
  222. package/pg-core/columns/postgis_extension/geometry.js.map +1 -1
  223. package/pg-core/columns/real.cjs.map +1 -1
  224. package/pg-core/columns/real.d.cts +1 -0
  225. package/pg-core/columns/real.d.ts +1 -0
  226. package/pg-core/columns/real.js.map +1 -1
  227. package/pg-core/columns/serial.cjs.map +1 -1
  228. package/pg-core/columns/serial.d.cts +1 -0
  229. package/pg-core/columns/serial.d.ts +1 -0
  230. package/pg-core/columns/serial.js.map +1 -1
  231. package/pg-core/columns/smallint.cjs +2 -1
  232. package/pg-core/columns/smallint.cjs.map +1 -1
  233. package/pg-core/columns/smallint.d.cts +4 -2
  234. package/pg-core/columns/smallint.d.ts +4 -2
  235. package/pg-core/columns/smallint.js +3 -2
  236. package/pg-core/columns/smallint.js.map +1 -1
  237. package/pg-core/columns/smallserial.cjs.map +1 -1
  238. package/pg-core/columns/smallserial.d.cts +1 -0
  239. package/pg-core/columns/smallserial.d.ts +1 -0
  240. package/pg-core/columns/smallserial.js.map +1 -1
  241. package/pg-core/columns/text.cjs.map +1 -1
  242. package/pg-core/columns/text.d.cts +1 -0
  243. package/pg-core/columns/text.d.ts +1 -0
  244. package/pg-core/columns/text.js.map +1 -1
  245. package/pg-core/columns/time.cjs.map +1 -1
  246. package/pg-core/columns/time.d.cts +1 -0
  247. package/pg-core/columns/time.d.ts +1 -0
  248. package/pg-core/columns/time.js.map +1 -1
  249. package/pg-core/columns/timestamp.cjs.map +1 -1
  250. package/pg-core/columns/timestamp.d.cts +2 -0
  251. package/pg-core/columns/timestamp.d.ts +2 -0
  252. package/pg-core/columns/timestamp.js.map +1 -1
  253. package/pg-core/columns/uuid.cjs.map +1 -1
  254. package/pg-core/columns/uuid.d.cts +1 -0
  255. package/pg-core/columns/uuid.d.ts +1 -0
  256. package/pg-core/columns/uuid.js.map +1 -1
  257. package/pg-core/columns/varchar.cjs.map +1 -1
  258. package/pg-core/columns/varchar.d.cts +1 -0
  259. package/pg-core/columns/varchar.d.ts +1 -0
  260. package/pg-core/columns/varchar.js.map +1 -1
  261. package/pg-core/columns/vector_extension/bit.cjs.map +1 -1
  262. package/pg-core/columns/vector_extension/bit.d.cts +1 -0
  263. package/pg-core/columns/vector_extension/bit.d.ts +1 -0
  264. package/pg-core/columns/vector_extension/bit.js.map +1 -1
  265. package/pg-core/columns/vector_extension/halfvec.cjs.map +1 -1
  266. package/pg-core/columns/vector_extension/halfvec.d.cts +1 -0
  267. package/pg-core/columns/vector_extension/halfvec.d.ts +1 -0
  268. package/pg-core/columns/vector_extension/halfvec.js.map +1 -1
  269. package/pg-core/columns/vector_extension/sparsevec.cjs.map +1 -1
  270. package/pg-core/columns/vector_extension/sparsevec.d.cts +1 -0
  271. package/pg-core/columns/vector_extension/sparsevec.d.ts +1 -0
  272. package/pg-core/columns/vector_extension/sparsevec.js.map +1 -1
  273. package/pg-core/columns/vector_extension/vector.cjs.map +1 -1
  274. package/pg-core/columns/vector_extension/vector.d.cts +1 -0
  275. package/pg-core/columns/vector_extension/vector.d.ts +1 -0
  276. package/pg-core/columns/vector_extension/vector.js.map +1 -1
  277. package/pg-core/dialect.cjs +1 -1
  278. package/pg-core/dialect.cjs.map +1 -1
  279. package/pg-core/dialect.js +1 -1
  280. package/pg-core/dialect.js.map +1 -1
  281. package/pg-core/index.cjs +2 -0
  282. package/pg-core/index.cjs.map +1 -1
  283. package/pg-core/index.d.cts +1 -0
  284. package/pg-core/index.d.ts +1 -0
  285. package/pg-core/index.js +1 -0
  286. package/pg-core/index.js.map +1 -1
  287. package/pg-core/query-builders/update.cjs.map +1 -1
  288. package/pg-core/query-builders/update.d.cts +1 -1
  289. package/pg-core/query-builders/update.d.ts +1 -1
  290. package/pg-core/query-builders/update.js.map +1 -1
  291. package/pg-core/schema.cjs +4 -0
  292. package/pg-core/schema.cjs.map +1 -1
  293. package/pg-core/schema.d.cts +2 -0
  294. package/pg-core/schema.d.ts +2 -0
  295. package/pg-core/schema.js +4 -0
  296. package/pg-core/schema.js.map +1 -1
  297. package/{tidb-serverless/migrator.cjs → pg-core/sequence.cjs} +29 -10
  298. package/pg-core/sequence.cjs.map +1 -0
  299. package/pg-core/sequence.d.cts +16 -0
  300. package/pg-core/sequence.d.ts +16 -0
  301. package/pg-core/sequence.js +26 -0
  302. package/pg-core/sequence.js.map +1 -0
  303. package/sqlite-core/columns/blob.cjs.map +1 -1
  304. package/sqlite-core/columns/blob.d.cts +3 -0
  305. package/sqlite-core/columns/blob.d.ts +3 -0
  306. package/sqlite-core/columns/blob.js.map +1 -1
  307. package/sqlite-core/columns/common.cjs +8 -0
  308. package/sqlite-core/columns/common.cjs.map +1 -1
  309. package/sqlite-core/columns/common.d.cts +6 -1
  310. package/sqlite-core/columns/common.d.ts +6 -1
  311. package/sqlite-core/columns/common.js +8 -0
  312. package/sqlite-core/columns/common.js.map +1 -1
  313. package/sqlite-core/columns/custom.cjs.map +1 -1
  314. package/sqlite-core/columns/custom.d.cts +1 -0
  315. package/sqlite-core/columns/custom.d.ts +1 -0
  316. package/sqlite-core/columns/custom.js.map +1 -1
  317. package/sqlite-core/columns/integer.cjs.map +1 -1
  318. package/sqlite-core/columns/integer.d.cts +3 -0
  319. package/sqlite-core/columns/integer.d.ts +3 -0
  320. package/sqlite-core/columns/integer.js.map +1 -1
  321. package/sqlite-core/columns/numeric.cjs.map +1 -1
  322. package/sqlite-core/columns/numeric.d.cts +1 -0
  323. package/sqlite-core/columns/numeric.d.ts +1 -0
  324. package/sqlite-core/columns/numeric.js.map +1 -1
  325. package/sqlite-core/columns/real.cjs.map +1 -1
  326. package/sqlite-core/columns/real.d.cts +1 -0
  327. package/sqlite-core/columns/real.d.ts +1 -0
  328. package/sqlite-core/columns/real.js.map +1 -1
  329. package/sqlite-core/columns/text.cjs.map +1 -1
  330. package/sqlite-core/columns/text.d.cts +2 -0
  331. package/sqlite-core/columns/text.d.ts +2 -0
  332. package/sqlite-core/columns/text.js.map +1 -1
  333. package/sqlite-core/dialect.cjs +3 -1
  334. package/sqlite-core/dialect.cjs.map +1 -1
  335. package/sqlite-core/dialect.js +3 -1
  336. package/sqlite-core/dialect.js.map +1 -1
  337. package/sqlite-core/query-builders/update.cjs.map +1 -1
  338. package/sqlite-core/query-builders/update.d.cts +1 -1
  339. package/sqlite-core/query-builders/update.d.ts +1 -1
  340. package/sqlite-core/query-builders/update.js.map +1 -1
  341. package/version.cjs +1 -1
  342. package/version.d.cts +1 -1
  343. package/version.d.ts +1 -1
  344. package/version.js +1 -1
  345. package/tidb-serverless/driver.cjs +0 -56
  346. package/tidb-serverless/driver.cjs.map +0 -1
  347. package/tidb-serverless/driver.d.cts +0 -10
  348. package/tidb-serverless/driver.d.ts +0 -10
  349. package/tidb-serverless/driver.js +0 -35
  350. package/tidb-serverless/driver.js.map +0 -1
  351. package/tidb-serverless/index.cjs +0 -25
  352. package/tidb-serverless/index.cjs.map +0 -1
  353. package/tidb-serverless/index.d.cts +0 -2
  354. package/tidb-serverless/index.d.ts +0 -2
  355. package/tidb-serverless/index.js +0 -3
  356. package/tidb-serverless/index.js.map +0 -1
  357. package/tidb-serverless/migrator.cjs.map +0 -1
  358. package/tidb-serverless/migrator.d.cts +0 -3
  359. package/tidb-serverless/migrator.d.ts +0 -3
  360. package/tidb-serverless/migrator.js +0 -9
  361. package/tidb-serverless/migrator.js.map +0 -1
  362. package/tidb-serverless/session.cjs +0 -136
  363. package/tidb-serverless/session.cjs.map +0 -1
  364. package/tidb-serverless/session.d.cts +0 -47
  365. package/tidb-serverless/session.d.ts +0 -47
  366. package/tidb-serverless/session.js +0 -114
  367. package/tidb-serverless/session.js.map +0 -1
@@ -1,5 +1,6 @@
1
1
  import { entityKind } from "../entity.js";
2
2
  import type { pgEnum } from "./columns/enum.js";
3
+ import { type pgSequence } from "./sequence.js";
3
4
  import { type PgTableFn } from "./table.js";
4
5
  import { type pgMaterializedView, type pgView } from "./view.js";
5
6
  export declare class PgSchema<TName extends string = string> {
@@ -10,6 +11,7 @@ export declare class PgSchema<TName extends string = string> {
10
11
  view: typeof pgView;
11
12
  materializedView: typeof pgMaterializedView;
12
13
  enum: typeof pgEnum;
14
+ sequence: typeof pgSequence;
13
15
  }
14
16
  export declare function isPgSchema(obj: unknown): obj is PgSchema;
15
17
  export declare function pgSchema<T extends string>(name: T): PgSchema<T>;
package/pg-core/schema.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { entityKind, is } from "../entity.js";
2
2
  import { pgEnumWithSchema } from "./columns/enum.js";
3
+ import { pgSequenceWithSchema } from "./sequence.js";
3
4
  import { pgTableWithSchema } from "./table.js";
4
5
  import { pgMaterializedViewWithSchema, pgViewWithSchema } from "./view.js";
5
6
  class PgSchema {
@@ -19,6 +20,9 @@ class PgSchema {
19
20
  enum = (name, values) => {
20
21
  return pgEnumWithSchema(name, values, this.schemaName);
21
22
  };
23
+ sequence = (name, options) => {
24
+ return pgSequenceWithSchema(name, options, this.schemaName);
25
+ };
22
26
  }
23
27
  function isPgSchema(obj) {
24
28
  return is(obj, PgSchema);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/pg-core/schema.ts"],"sourcesContent":["import { entityKind, is } from '~/entity.ts';\nimport type { pgEnum } from './columns/enum.ts';\nimport { pgEnumWithSchema } from './columns/enum.ts';\nimport { type PgTableFn, pgTableWithSchema } from './table.ts';\nimport { type pgMaterializedView, pgMaterializedViewWithSchema, type pgView, pgViewWithSchema } from './view.ts';\n\nexport class PgSchema<TName extends string = string> {\n\tstatic readonly [entityKind]: string = 'PgSchema';\n\tconstructor(\n\t\tpublic readonly schemaName: TName,\n\t) {}\n\n\ttable: PgTableFn<TName> = ((name, columns, extraConfig) => {\n\t\treturn pgTableWithSchema(name, columns, extraConfig, this.schemaName);\n\t});\n\n\tview = ((name, columns) => {\n\t\treturn pgViewWithSchema(name, columns, this.schemaName);\n\t}) as typeof pgView;\n\n\tmaterializedView = ((name, columns) => {\n\t\treturn pgMaterializedViewWithSchema(name, columns, this.schemaName);\n\t}) as typeof pgMaterializedView;\n\n\tenum: typeof pgEnum = ((name, values) => {\n\t\treturn pgEnumWithSchema(name, values, this.schemaName);\n\t});\n}\n\nexport function isPgSchema(obj: unknown): obj is PgSchema {\n\treturn is(obj, PgSchema);\n}\n\nexport function pgSchema<T extends string>(name: T) {\n\tif (name === 'public') {\n\t\tthrow new Error(\n\t\t\t`You can't specify 'public' as schema name. Postgres is using public schema by default. If you want to use 'public' schema, just use pgTable() instead of creating a schema`,\n\t\t);\n\t}\n\n\treturn new PgSchema(name);\n}\n"],"mappings":"AAAA,SAAS,YAAY,UAAU;AAE/B,SAAS,wBAAwB;AACjC,SAAyB,yBAAyB;AAClD,SAAkC,8BAA2C,wBAAwB;AAE9F,MAAM,SAAwC;AAAA,EAEpD,YACiB,YACf;AADe;AAAA,EACd;AAAA,EAHH,QAAiB,UAAU,IAAY;AAAA,EAKvC,QAA2B,CAAC,MAAM,SAAS,gBAAgB;AAC1D,WAAO,kBAAkB,MAAM,SAAS,aAAa,KAAK,UAAU;AAAA,EACrE;AAAA,EAEA,OAAQ,CAAC,MAAM,YAAY;AAC1B,WAAO,iBAAiB,MAAM,SAAS,KAAK,UAAU;AAAA,EACvD;AAAA,EAEA,mBAAoB,CAAC,MAAM,YAAY;AACtC,WAAO,6BAA6B,MAAM,SAAS,KAAK,UAAU;AAAA,EACnE;AAAA,EAEA,OAAuB,CAAC,MAAM,WAAW;AACxC,WAAO,iBAAiB,MAAM,QAAQ,KAAK,UAAU;AAAA,EACtD;AACD;AAEO,SAAS,WAAW,KAA+B;AACzD,SAAO,GAAG,KAAK,QAAQ;AACxB;AAEO,SAAS,SAA2B,MAAS;AACnD,MAAI,SAAS,UAAU;AACtB,UAAM,IAAI;AAAA,MACT;AAAA,IACD;AAAA,EACD;AAEA,SAAO,IAAI,SAAS,IAAI;AACzB;","names":[]}
1
+ {"version":3,"sources":["../../src/pg-core/schema.ts"],"sourcesContent":["import { entityKind, is } from '~/entity.ts';\nimport type { pgEnum } from './columns/enum.ts';\nimport { pgEnumWithSchema } from './columns/enum.ts';\nimport { type pgSequence, pgSequenceWithSchema } from './sequence.ts';\nimport { type PgTableFn, pgTableWithSchema } from './table.ts';\nimport { type pgMaterializedView, pgMaterializedViewWithSchema, type pgView, pgViewWithSchema } from './view.ts';\n\nexport class PgSchema<TName extends string = string> {\n\tstatic readonly [entityKind]: string = 'PgSchema';\n\tconstructor(\n\t\tpublic readonly schemaName: TName,\n\t) {}\n\n\ttable: PgTableFn<TName> = ((name, columns, extraConfig) => {\n\t\treturn pgTableWithSchema(name, columns, extraConfig, this.schemaName);\n\t});\n\n\tview = ((name, columns) => {\n\t\treturn pgViewWithSchema(name, columns, this.schemaName);\n\t}) as typeof pgView;\n\n\tmaterializedView = ((name, columns) => {\n\t\treturn pgMaterializedViewWithSchema(name, columns, this.schemaName);\n\t}) as typeof pgMaterializedView;\n\n\tenum: typeof pgEnum = ((name, values) => {\n\t\treturn pgEnumWithSchema(name, values, this.schemaName);\n\t});\n\n\tsequence: typeof pgSequence = ((name, options) => {\n\t\treturn pgSequenceWithSchema(name, options, this.schemaName);\n\t});\n}\n\nexport function isPgSchema(obj: unknown): obj is PgSchema {\n\treturn is(obj, PgSchema);\n}\n\nexport function pgSchema<T extends string>(name: T) {\n\tif (name === 'public') {\n\t\tthrow new Error(\n\t\t\t`You can't specify 'public' as schema name. Postgres is using public schema by default. If you want to use 'public' schema, just use pgTable() instead of creating a schema`,\n\t\t);\n\t}\n\n\treturn new PgSchema(name);\n}\n"],"mappings":"AAAA,SAAS,YAAY,UAAU;AAE/B,SAAS,wBAAwB;AACjC,SAA0B,4BAA4B;AACtD,SAAyB,yBAAyB;AAClD,SAAkC,8BAA2C,wBAAwB;AAE9F,MAAM,SAAwC;AAAA,EAEpD,YACiB,YACf;AADe;AAAA,EACd;AAAA,EAHH,QAAiB,UAAU,IAAY;AAAA,EAKvC,QAA2B,CAAC,MAAM,SAAS,gBAAgB;AAC1D,WAAO,kBAAkB,MAAM,SAAS,aAAa,KAAK,UAAU;AAAA,EACrE;AAAA,EAEA,OAAQ,CAAC,MAAM,YAAY;AAC1B,WAAO,iBAAiB,MAAM,SAAS,KAAK,UAAU;AAAA,EACvD;AAAA,EAEA,mBAAoB,CAAC,MAAM,YAAY;AACtC,WAAO,6BAA6B,MAAM,SAAS,KAAK,UAAU;AAAA,EACnE;AAAA,EAEA,OAAuB,CAAC,MAAM,WAAW;AACxC,WAAO,iBAAiB,MAAM,QAAQ,KAAK,UAAU;AAAA,EACtD;AAAA,EAEA,WAA+B,CAAC,MAAM,YAAY;AACjD,WAAO,qBAAqB,MAAM,SAAS,KAAK,UAAU;AAAA,EAC3D;AACD;AAEO,SAAS,WAAW,KAA+B;AACzD,SAAO,GAAG,KAAK,QAAQ;AACxB;AAEO,SAAS,SAA2B,MAAS;AACnD,MAAI,SAAS,UAAU;AACtB,UAAM,IAAI;AAAA,MACT;AAAA,IACD;AAAA,EACD;AAEA,SAAO,IAAI,SAAS,IAAI;AACzB;","names":[]}
@@ -16,18 +16,37 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var migrator_exports = {};
20
- __export(migrator_exports, {
21
- migrate: () => migrate
19
+ var sequence_exports = {};
20
+ __export(sequence_exports, {
21
+ PgSequence: () => PgSequence,
22
+ pgSequence: () => pgSequence,
23
+ pgSequenceWithSchema: () => pgSequenceWithSchema
22
24
  });
23
- module.exports = __toCommonJS(migrator_exports);
24
- var import_migrator = require("../migrator.cjs");
25
- async function migrate(db, config) {
26
- const migrations = (0, import_migrator.readMigrationFiles)(config);
27
- await db.dialect.migrate(migrations, db.session, config);
25
+ module.exports = __toCommonJS(sequence_exports);
26
+ var import_entity = require("../entity.cjs");
27
+ class PgSequence {
28
+ static [import_entity.entityKind] = "PgSequence";
29
+ seqName;
30
+ seqOptions;
31
+ schema;
32
+ }
33
+ function pgSequence(name, options) {
34
+ return pgSequenceWithSchema(name, options, void 0);
35
+ }
36
+ function pgSequenceWithSchema(name, options, schema) {
37
+ const sequenceInstance = Object.assign(
38
+ {
39
+ name,
40
+ seqOptions: options,
41
+ schema
42
+ }
43
+ );
44
+ return sequenceInstance;
28
45
  }
29
46
  // Annotate the CommonJS export names for ESM import in node:
30
47
  0 && (module.exports = {
31
- migrate
48
+ PgSequence,
49
+ pgSequence,
50
+ pgSequenceWithSchema
32
51
  });
33
- //# sourceMappingURL=migrator.cjs.map
52
+ //# sourceMappingURL=sequence.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/pg-core/sequence.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\n\nexport type PgSequenceOptions = {\n\tincrement?: number;\n\tminValue?: number;\n\tmaxValue?: number;\n\tstartWith?: number;\n\tcache?: number;\n\tcycle?: boolean;\n};\n\nexport class PgSequence {\n\tstatic readonly [entityKind]: string = 'PgSequence';\n\n\treadonly seqName: string | undefined;\n\treadonly seqOptions: PgSequenceOptions | undefined;\n\treadonly schema: string | undefined;\n}\n\nexport function pgSequence(\n\tname: string,\n\toptions: PgSequenceOptions,\n): PgSequence {\n\treturn pgSequenceWithSchema(name, options, undefined);\n}\n\n/** @internal */\nexport function pgSequenceWithSchema(\n\tname: string,\n\toptions: PgSequenceOptions,\n\tschema?: string,\n): PgSequence {\n\tconst sequenceInstance: PgSequence = Object.assign(\n\t\t{\n\t\t\tname,\n\t\t\tseqOptions: options,\n\t\t\tschema,\n\t\t} as const,\n\t);\n\n\treturn sequenceInstance;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAWpB,MAAM,WAAW;AAAA,EACvB,QAAiB,wBAAU,IAAY;AAAA,EAE9B;AAAA,EACA;AAAA,EACA;AACV;AAEO,SAAS,WACf,MACA,SACa;AACb,SAAO,qBAAqB,MAAM,SAAS,MAAS;AACrD;AAGO,SAAS,qBACf,MACA,SACA,QACa;AACb,QAAM,mBAA+B,OAAO;AAAA,IAC3C;AAAA,MACC;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;","names":[]}
@@ -0,0 +1,16 @@
1
+ import { entityKind } from "../entity.cjs";
2
+ export type PgSequenceOptions = {
3
+ increment?: number;
4
+ minValue?: number;
5
+ maxValue?: number;
6
+ startWith?: number;
7
+ cache?: number;
8
+ cycle?: boolean;
9
+ };
10
+ export declare class PgSequence {
11
+ static readonly [entityKind]: string;
12
+ readonly seqName: string | undefined;
13
+ readonly seqOptions: PgSequenceOptions | undefined;
14
+ readonly schema: string | undefined;
15
+ }
16
+ export declare function pgSequence(name: string, options: PgSequenceOptions): PgSequence;
@@ -0,0 +1,16 @@
1
+ import { entityKind } from "../entity.js";
2
+ export type PgSequenceOptions = {
3
+ increment?: number;
4
+ minValue?: number;
5
+ maxValue?: number;
6
+ startWith?: number;
7
+ cache?: number;
8
+ cycle?: boolean;
9
+ };
10
+ export declare class PgSequence {
11
+ static readonly [entityKind]: string;
12
+ readonly seqName: string | undefined;
13
+ readonly seqOptions: PgSequenceOptions | undefined;
14
+ readonly schema: string | undefined;
15
+ }
16
+ export declare function pgSequence(name: string, options: PgSequenceOptions): PgSequence;
@@ -0,0 +1,26 @@
1
+ import { entityKind } from "../entity.js";
2
+ class PgSequence {
3
+ static [entityKind] = "PgSequence";
4
+ seqName;
5
+ seqOptions;
6
+ schema;
7
+ }
8
+ function pgSequence(name, options) {
9
+ return pgSequenceWithSchema(name, options, void 0);
10
+ }
11
+ function pgSequenceWithSchema(name, options, schema) {
12
+ const sequenceInstance = Object.assign(
13
+ {
14
+ name,
15
+ seqOptions: options,
16
+ schema
17
+ }
18
+ );
19
+ return sequenceInstance;
20
+ }
21
+ export {
22
+ PgSequence,
23
+ pgSequence,
24
+ pgSequenceWithSchema
25
+ };
26
+ //# sourceMappingURL=sequence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/pg-core/sequence.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\n\nexport type PgSequenceOptions = {\n\tincrement?: number;\n\tminValue?: number;\n\tmaxValue?: number;\n\tstartWith?: number;\n\tcache?: number;\n\tcycle?: boolean;\n};\n\nexport class PgSequence {\n\tstatic readonly [entityKind]: string = 'PgSequence';\n\n\treadonly seqName: string | undefined;\n\treadonly seqOptions: PgSequenceOptions | undefined;\n\treadonly schema: string | undefined;\n}\n\nexport function pgSequence(\n\tname: string,\n\toptions: PgSequenceOptions,\n): PgSequence {\n\treturn pgSequenceWithSchema(name, options, undefined);\n}\n\n/** @internal */\nexport function pgSequenceWithSchema(\n\tname: string,\n\toptions: PgSequenceOptions,\n\tschema?: string,\n): PgSequence {\n\tconst sequenceInstance: PgSequence = Object.assign(\n\t\t{\n\t\t\tname,\n\t\t\tseqOptions: options,\n\t\t\tschema,\n\t\t} as const,\n\t);\n\n\treturn sequenceInstance;\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAWpB,MAAM,WAAW;AAAA,EACvB,QAAiB,UAAU,IAAY;AAAA,EAE9B;AAAA,EACA;AAAA,EACA;AACV;AAEO,SAAS,WACf,MACA,SACa;AACb,SAAO,qBAAqB,MAAM,SAAS,MAAS;AACrD;AAGO,SAAS,qBACf,MACA,SACA,QACa;AACb,QAAM,mBAA+B,OAAO;AAAA,IAC3C;AAAA,MACC;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/sqlite-core/columns/blob.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnySQLiteTable } from '~/sqlite-core/table.ts';\nimport type { Equal } from '~/utils.ts';\nimport { SQLiteColumn, SQLiteColumnBuilder } from './common.ts';\n\ntype BlobMode = 'buffer' | 'json' | 'bigint';\n\nexport type SQLiteBigIntBuilderInitial<TName extends string> = SQLiteBigIntBuilder<{\n\tname: TName;\n\tdataType: 'bigint';\n\tcolumnType: 'SQLiteBigInt';\n\tdata: bigint;\n\tdriverParam: Buffer;\n\tenumValues: undefined;\n}>;\n\nexport class SQLiteBigIntBuilder<T extends ColumnBuilderBaseConfig<'bigint', 'SQLiteBigInt'>>\n\textends SQLiteColumnBuilder<T>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteBigIntBuilder';\n\n\tconstructor(name: T['name']) {\n\t\tsuper(name, 'bigint', 'SQLiteBigInt');\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteBigInt<MakeColumnConfig<T, TTableName>> {\n\t\treturn new SQLiteBigInt<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any>);\n\t}\n}\n\nexport class SQLiteBigInt<T extends ColumnBaseConfig<'bigint', 'SQLiteBigInt'>> extends SQLiteColumn<T> {\n\tstatic readonly [entityKind]: string = 'SQLiteBigInt';\n\n\tgetSQLType(): string {\n\t\treturn 'blob';\n\t}\n\n\toverride mapFromDriverValue(value: Buffer): bigint {\n\t\treturn BigInt(value.toString());\n\t}\n\n\toverride mapToDriverValue(value: bigint): Buffer {\n\t\treturn Buffer.from(value.toString());\n\t}\n}\n\nexport type SQLiteBlobJsonBuilderInitial<TName extends string> = SQLiteBlobJsonBuilder<{\n\tname: TName;\n\tdataType: 'json';\n\tcolumnType: 'SQLiteBlobJson';\n\tdata: unknown;\n\tdriverParam: Buffer;\n\tenumValues: undefined;\n}>;\n\nexport class SQLiteBlobJsonBuilder<T extends ColumnBuilderBaseConfig<'json', 'SQLiteBlobJson'>>\n\textends SQLiteColumnBuilder<T>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteBlobJsonBuilder';\n\n\tconstructor(name: T['name']) {\n\t\tsuper(name, 'json', 'SQLiteBlobJson');\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteBlobJson<MakeColumnConfig<T, TTableName>> {\n\t\treturn new SQLiteBlobJson<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any>,\n\t\t);\n\t}\n}\n\nexport class SQLiteBlobJson<T extends ColumnBaseConfig<'json', 'SQLiteBlobJson'>> extends SQLiteColumn<T> {\n\tstatic readonly [entityKind]: string = 'SQLiteBlobJson';\n\n\tgetSQLType(): string {\n\t\treturn 'blob';\n\t}\n\n\toverride mapFromDriverValue(value: Buffer): T['data'] {\n\t\treturn JSON.parse(value.toString());\n\t}\n\n\toverride mapToDriverValue(value: T['data']): Buffer {\n\t\treturn Buffer.from(JSON.stringify(value));\n\t}\n}\n\nexport type SQLiteBlobBufferBuilderInitial<TName extends string> = SQLiteBlobBufferBuilder<{\n\tname: TName;\n\tdataType: 'buffer';\n\tcolumnType: 'SQLiteBlobBuffer';\n\tdata: Buffer;\n\tdriverParam: Buffer;\n\tenumValues: undefined;\n}>;\n\nexport class SQLiteBlobBufferBuilder<T extends ColumnBuilderBaseConfig<'buffer', 'SQLiteBlobBuffer'>>\n\textends SQLiteColumnBuilder<T>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteBlobBufferBuilder';\n\n\tconstructor(name: T['name']) {\n\t\tsuper(name, 'buffer', 'SQLiteBlobBuffer');\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteBlobBuffer<MakeColumnConfig<T, TTableName>> {\n\t\treturn new SQLiteBlobBuffer<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any>);\n\t}\n}\n\nexport class SQLiteBlobBuffer<T extends ColumnBaseConfig<'buffer', 'SQLiteBlobBuffer'>> extends SQLiteColumn<T> {\n\tstatic readonly [entityKind]: string = 'SQLiteBlobBuffer';\n\n\tgetSQLType(): string {\n\t\treturn 'blob';\n\t}\n}\n\nexport interface BlobConfig<TMode extends BlobMode = BlobMode> {\n\tmode: TMode;\n}\n\n/**\n * It's recommended to use `text('...', { mode: 'json' })` instead of `blob` in JSON mode, because it supports JSON functions:\n * >All JSON functions currently throw an error if any of their arguments are BLOBs because BLOBs are reserved for a future enhancement in which BLOBs will store the binary encoding for JSON.\n *\n * https://www.sqlite.org/json1.html\n */\nexport function blob<TName extends string, TMode extends BlobMode = BlobMode>(\n\tname: TName,\n\tconfig?: BlobConfig<TMode>,\n): Equal<TMode, 'bigint'> extends true ? SQLiteBigIntBuilderInitial<TName>\n\t: Equal<TMode, 'buffer'> extends true ? SQLiteBlobBufferBuilderInitial<TName>\n\t: SQLiteBlobJsonBuilderInitial<TName>;\nexport function blob(name: string, config?: BlobConfig) {\n\tif (config?.mode === 'json') {\n\t\treturn new SQLiteBlobJsonBuilder(name);\n\t}\n\tif (config?.mode === 'bigint') {\n\t\treturn new SQLiteBigIntBuilder(name);\n\t}\n\treturn new SQLiteBlobBufferBuilder(name);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,oBAA2B;AAG3B,oBAAkD;AAa3C,MAAM,4BACJ,kCACT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB;AAC5B,UAAM,MAAM,UAAU,cAAc;AAAA,EACrC;AAAA;AAAA,EAGS,MACR,OACgD;AAChD,WAAO,IAAI,aAA8C,OAAO,KAAK,MAAyC;AAAA,EAC/G;AACD;AAEO,MAAM,qBAA2E,2BAAgB;AAAA,EACvG,QAAiB,wBAAU,IAAY;AAAA,EAEvC,aAAqB;AACpB,WAAO;AAAA,EACR;AAAA,EAES,mBAAmB,OAAuB;AAClD,WAAO,OAAO,MAAM,SAAS,CAAC;AAAA,EAC/B;AAAA,EAES,iBAAiB,OAAuB;AAChD,WAAO,OAAO,KAAK,MAAM,SAAS,CAAC;AAAA,EACpC;AACD;AAWO,MAAM,8BACJ,kCACT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB;AAC5B,UAAM,MAAM,QAAQ,gBAAgB;AAAA,EACrC;AAAA;AAAA,EAGS,MACR,OACkD;AAClD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,uBAA6E,2BAAgB;AAAA,EACzG,QAAiB,wBAAU,IAAY;AAAA,EAEvC,aAAqB;AACpB,WAAO;AAAA,EACR;AAAA,EAES,mBAAmB,OAA0B;AACrD,WAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AAAA,EACnC;AAAA,EAES,iBAAiB,OAA0B;AACnD,WAAO,OAAO,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA,EACzC;AACD;AAWO,MAAM,gCACJ,kCACT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB;AAC5B,UAAM,MAAM,UAAU,kBAAkB;AAAA,EACzC;AAAA;AAAA,EAGS,MACR,OACoD;AACpD,WAAO,IAAI,iBAAkD,OAAO,KAAK,MAAyC;AAAA,EACnH;AACD;AAEO,MAAM,yBAAmF,2BAAgB;AAAA,EAC/G,QAAiB,wBAAU,IAAY;AAAA,EAEvC,aAAqB;AACpB,WAAO;AAAA,EACR;AACD;AAkBO,SAAS,KAAK,MAAc,QAAqB;AACvD,MAAI,QAAQ,SAAS,QAAQ;AAC5B,WAAO,IAAI,sBAAsB,IAAI;AAAA,EACtC;AACA,MAAI,QAAQ,SAAS,UAAU;AAC9B,WAAO,IAAI,oBAAoB,IAAI;AAAA,EACpC;AACA,SAAO,IAAI,wBAAwB,IAAI;AACxC;","names":[]}
1
+ {"version":3,"sources":["../../../src/sqlite-core/columns/blob.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnySQLiteTable } from '~/sqlite-core/table.ts';\nimport type { Equal } from '~/utils.ts';\nimport { SQLiteColumn, SQLiteColumnBuilder } from './common.ts';\n\ntype BlobMode = 'buffer' | 'json' | 'bigint';\n\nexport type SQLiteBigIntBuilderInitial<TName extends string> = SQLiteBigIntBuilder<{\n\tname: TName;\n\tdataType: 'bigint';\n\tcolumnType: 'SQLiteBigInt';\n\tdata: bigint;\n\tdriverParam: Buffer;\n\tenumValues: undefined;\n\tgenerated: undefined;\n}>;\n\nexport class SQLiteBigIntBuilder<T extends ColumnBuilderBaseConfig<'bigint', 'SQLiteBigInt'>>\n\textends SQLiteColumnBuilder<T>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteBigIntBuilder';\n\n\tconstructor(name: T['name']) {\n\t\tsuper(name, 'bigint', 'SQLiteBigInt');\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteBigInt<MakeColumnConfig<T, TTableName>> {\n\t\treturn new SQLiteBigInt<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any>);\n\t}\n}\n\nexport class SQLiteBigInt<T extends ColumnBaseConfig<'bigint', 'SQLiteBigInt'>> extends SQLiteColumn<T> {\n\tstatic readonly [entityKind]: string = 'SQLiteBigInt';\n\n\tgetSQLType(): string {\n\t\treturn 'blob';\n\t}\n\n\toverride mapFromDriverValue(value: Buffer): bigint {\n\t\treturn BigInt(value.toString());\n\t}\n\n\toverride mapToDriverValue(value: bigint): Buffer {\n\t\treturn Buffer.from(value.toString());\n\t}\n}\n\nexport type SQLiteBlobJsonBuilderInitial<TName extends string> = SQLiteBlobJsonBuilder<{\n\tname: TName;\n\tdataType: 'json';\n\tcolumnType: 'SQLiteBlobJson';\n\tdata: unknown;\n\tdriverParam: Buffer;\n\tenumValues: undefined;\n\tgenerated: undefined;\n}>;\n\nexport class SQLiteBlobJsonBuilder<T extends ColumnBuilderBaseConfig<'json', 'SQLiteBlobJson'>>\n\textends SQLiteColumnBuilder<T>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteBlobJsonBuilder';\n\n\tconstructor(name: T['name']) {\n\t\tsuper(name, 'json', 'SQLiteBlobJson');\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteBlobJson<MakeColumnConfig<T, TTableName>> {\n\t\treturn new SQLiteBlobJson<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any>,\n\t\t);\n\t}\n}\n\nexport class SQLiteBlobJson<T extends ColumnBaseConfig<'json', 'SQLiteBlobJson'>> extends SQLiteColumn<T> {\n\tstatic readonly [entityKind]: string = 'SQLiteBlobJson';\n\n\tgetSQLType(): string {\n\t\treturn 'blob';\n\t}\n\n\toverride mapFromDriverValue(value: Buffer): T['data'] {\n\t\treturn JSON.parse(value.toString());\n\t}\n\n\toverride mapToDriverValue(value: T['data']): Buffer {\n\t\treturn Buffer.from(JSON.stringify(value));\n\t}\n}\n\nexport type SQLiteBlobBufferBuilderInitial<TName extends string> = SQLiteBlobBufferBuilder<{\n\tname: TName;\n\tdataType: 'buffer';\n\tcolumnType: 'SQLiteBlobBuffer';\n\tdata: Buffer;\n\tdriverParam: Buffer;\n\tenumValues: undefined;\n\tgenerated: undefined;\n}>;\n\nexport class SQLiteBlobBufferBuilder<T extends ColumnBuilderBaseConfig<'buffer', 'SQLiteBlobBuffer'>>\n\textends SQLiteColumnBuilder<T>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteBlobBufferBuilder';\n\n\tconstructor(name: T['name']) {\n\t\tsuper(name, 'buffer', 'SQLiteBlobBuffer');\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteBlobBuffer<MakeColumnConfig<T, TTableName>> {\n\t\treturn new SQLiteBlobBuffer<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any>);\n\t}\n}\n\nexport class SQLiteBlobBuffer<T extends ColumnBaseConfig<'buffer', 'SQLiteBlobBuffer'>> extends SQLiteColumn<T> {\n\tstatic readonly [entityKind]: string = 'SQLiteBlobBuffer';\n\n\tgetSQLType(): string {\n\t\treturn 'blob';\n\t}\n}\n\nexport interface BlobConfig<TMode extends BlobMode = BlobMode> {\n\tmode: TMode;\n}\n\n/**\n * It's recommended to use `text('...', { mode: 'json' })` instead of `blob` in JSON mode, because it supports JSON functions:\n * >All JSON functions currently throw an error if any of their arguments are BLOBs because BLOBs are reserved for a future enhancement in which BLOBs will store the binary encoding for JSON.\n *\n * https://www.sqlite.org/json1.html\n */\nexport function blob<TName extends string, TMode extends BlobMode = BlobMode>(\n\tname: TName,\n\tconfig?: BlobConfig<TMode>,\n): Equal<TMode, 'bigint'> extends true ? SQLiteBigIntBuilderInitial<TName>\n\t: Equal<TMode, 'buffer'> extends true ? SQLiteBlobBufferBuilderInitial<TName>\n\t: SQLiteBlobJsonBuilderInitial<TName>;\nexport function blob(name: string, config?: BlobConfig) {\n\tif (config?.mode === 'json') {\n\t\treturn new SQLiteBlobJsonBuilder(name);\n\t}\n\tif (config?.mode === 'bigint') {\n\t\treturn new SQLiteBigIntBuilder(name);\n\t}\n\treturn new SQLiteBlobBufferBuilder(name);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,oBAA2B;AAG3B,oBAAkD;AAc3C,MAAM,4BACJ,kCACT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB;AAC5B,UAAM,MAAM,UAAU,cAAc;AAAA,EACrC;AAAA;AAAA,EAGS,MACR,OACgD;AAChD,WAAO,IAAI,aAA8C,OAAO,KAAK,MAAyC;AAAA,EAC/G;AACD;AAEO,MAAM,qBAA2E,2BAAgB;AAAA,EACvG,QAAiB,wBAAU,IAAY;AAAA,EAEvC,aAAqB;AACpB,WAAO;AAAA,EACR;AAAA,EAES,mBAAmB,OAAuB;AAClD,WAAO,OAAO,MAAM,SAAS,CAAC;AAAA,EAC/B;AAAA,EAES,iBAAiB,OAAuB;AAChD,WAAO,OAAO,KAAK,MAAM,SAAS,CAAC;AAAA,EACpC;AACD;AAYO,MAAM,8BACJ,kCACT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB;AAC5B,UAAM,MAAM,QAAQ,gBAAgB;AAAA,EACrC;AAAA;AAAA,EAGS,MACR,OACkD;AAClD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,uBAA6E,2BAAgB;AAAA,EACzG,QAAiB,wBAAU,IAAY;AAAA,EAEvC,aAAqB;AACpB,WAAO;AAAA,EACR;AAAA,EAES,mBAAmB,OAA0B;AACrD,WAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AAAA,EACnC;AAAA,EAES,iBAAiB,OAA0B;AACnD,WAAO,OAAO,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA,EACzC;AACD;AAYO,MAAM,gCACJ,kCACT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB;AAC5B,UAAM,MAAM,UAAU,kBAAkB;AAAA,EACzC;AAAA;AAAA,EAGS,MACR,OACoD;AACpD,WAAO,IAAI,iBAAkD,OAAO,KAAK,MAAyC;AAAA,EACnH;AACD;AAEO,MAAM,yBAAmF,2BAAgB;AAAA,EAC/G,QAAiB,wBAAU,IAAY;AAAA,EAEvC,aAAqB;AACpB,WAAO;AAAA,EACR;AACD;AAkBO,SAAS,KAAK,MAAc,QAAqB;AACvD,MAAI,QAAQ,SAAS,QAAQ;AAC5B,WAAO,IAAI,sBAAsB,IAAI;AAAA,EACtC;AACA,MAAI,QAAQ,SAAS,UAAU;AAC9B,WAAO,IAAI,oBAAoB,IAAI;AAAA,EACpC;AACA,SAAO,IAAI,wBAAwB,IAAI;AACxC;","names":[]}
@@ -13,6 +13,7 @@ export type SQLiteBigIntBuilderInitial<TName extends string> = SQLiteBigIntBuild
13
13
  data: bigint;
14
14
  driverParam: Buffer;
15
15
  enumValues: undefined;
16
+ generated: undefined;
16
17
  }>;
17
18
  export declare class SQLiteBigIntBuilder<T extends ColumnBuilderBaseConfig<'bigint', 'SQLiteBigInt'>> extends SQLiteColumnBuilder<T> {
18
19
  static readonly [entityKind]: string;
@@ -31,6 +32,7 @@ export type SQLiteBlobJsonBuilderInitial<TName extends string> = SQLiteBlobJsonB
31
32
  data: unknown;
32
33
  driverParam: Buffer;
33
34
  enumValues: undefined;
35
+ generated: undefined;
34
36
  }>;
35
37
  export declare class SQLiteBlobJsonBuilder<T extends ColumnBuilderBaseConfig<'json', 'SQLiteBlobJson'>> extends SQLiteColumnBuilder<T> {
36
38
  static readonly [entityKind]: string;
@@ -49,6 +51,7 @@ export type SQLiteBlobBufferBuilderInitial<TName extends string> = SQLiteBlobBuf
49
51
  data: Buffer;
50
52
  driverParam: Buffer;
51
53
  enumValues: undefined;
54
+ generated: undefined;
52
55
  }>;
53
56
  export declare class SQLiteBlobBufferBuilder<T extends ColumnBuilderBaseConfig<'buffer', 'SQLiteBlobBuffer'>> extends SQLiteColumnBuilder<T> {
54
57
  static readonly [entityKind]: string;
@@ -13,6 +13,7 @@ export type SQLiteBigIntBuilderInitial<TName extends string> = SQLiteBigIntBuild
13
13
  data: bigint;
14
14
  driverParam: Buffer;
15
15
  enumValues: undefined;
16
+ generated: undefined;
16
17
  }>;
17
18
  export declare class SQLiteBigIntBuilder<T extends ColumnBuilderBaseConfig<'bigint', 'SQLiteBigInt'>> extends SQLiteColumnBuilder<T> {
18
19
  static readonly [entityKind]: string;
@@ -31,6 +32,7 @@ export type SQLiteBlobJsonBuilderInitial<TName extends string> = SQLiteBlobJsonB
31
32
  data: unknown;
32
33
  driverParam: Buffer;
33
34
  enumValues: undefined;
35
+ generated: undefined;
34
36
  }>;
35
37
  export declare class SQLiteBlobJsonBuilder<T extends ColumnBuilderBaseConfig<'json', 'SQLiteBlobJson'>> extends SQLiteColumnBuilder<T> {
36
38
  static readonly [entityKind]: string;
@@ -49,6 +51,7 @@ export type SQLiteBlobBufferBuilderInitial<TName extends string> = SQLiteBlobBuf
49
51
  data: Buffer;
50
52
  driverParam: Buffer;
51
53
  enumValues: undefined;
54
+ generated: undefined;
52
55
  }>;
53
56
  export declare class SQLiteBlobBufferBuilder<T extends ColumnBuilderBaseConfig<'buffer', 'SQLiteBlobBuffer'>> extends SQLiteColumnBuilder<T> {
54
57
  static readonly [entityKind]: string;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/sqlite-core/columns/blob.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnySQLiteTable } from '~/sqlite-core/table.ts';\nimport type { Equal } from '~/utils.ts';\nimport { SQLiteColumn, SQLiteColumnBuilder } from './common.ts';\n\ntype BlobMode = 'buffer' | 'json' | 'bigint';\n\nexport type SQLiteBigIntBuilderInitial<TName extends string> = SQLiteBigIntBuilder<{\n\tname: TName;\n\tdataType: 'bigint';\n\tcolumnType: 'SQLiteBigInt';\n\tdata: bigint;\n\tdriverParam: Buffer;\n\tenumValues: undefined;\n}>;\n\nexport class SQLiteBigIntBuilder<T extends ColumnBuilderBaseConfig<'bigint', 'SQLiteBigInt'>>\n\textends SQLiteColumnBuilder<T>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteBigIntBuilder';\n\n\tconstructor(name: T['name']) {\n\t\tsuper(name, 'bigint', 'SQLiteBigInt');\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteBigInt<MakeColumnConfig<T, TTableName>> {\n\t\treturn new SQLiteBigInt<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any>);\n\t}\n}\n\nexport class SQLiteBigInt<T extends ColumnBaseConfig<'bigint', 'SQLiteBigInt'>> extends SQLiteColumn<T> {\n\tstatic readonly [entityKind]: string = 'SQLiteBigInt';\n\n\tgetSQLType(): string {\n\t\treturn 'blob';\n\t}\n\n\toverride mapFromDriverValue(value: Buffer): bigint {\n\t\treturn BigInt(value.toString());\n\t}\n\n\toverride mapToDriverValue(value: bigint): Buffer {\n\t\treturn Buffer.from(value.toString());\n\t}\n}\n\nexport type SQLiteBlobJsonBuilderInitial<TName extends string> = SQLiteBlobJsonBuilder<{\n\tname: TName;\n\tdataType: 'json';\n\tcolumnType: 'SQLiteBlobJson';\n\tdata: unknown;\n\tdriverParam: Buffer;\n\tenumValues: undefined;\n}>;\n\nexport class SQLiteBlobJsonBuilder<T extends ColumnBuilderBaseConfig<'json', 'SQLiteBlobJson'>>\n\textends SQLiteColumnBuilder<T>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteBlobJsonBuilder';\n\n\tconstructor(name: T['name']) {\n\t\tsuper(name, 'json', 'SQLiteBlobJson');\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteBlobJson<MakeColumnConfig<T, TTableName>> {\n\t\treturn new SQLiteBlobJson<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any>,\n\t\t);\n\t}\n}\n\nexport class SQLiteBlobJson<T extends ColumnBaseConfig<'json', 'SQLiteBlobJson'>> extends SQLiteColumn<T> {\n\tstatic readonly [entityKind]: string = 'SQLiteBlobJson';\n\n\tgetSQLType(): string {\n\t\treturn 'blob';\n\t}\n\n\toverride mapFromDriverValue(value: Buffer): T['data'] {\n\t\treturn JSON.parse(value.toString());\n\t}\n\n\toverride mapToDriverValue(value: T['data']): Buffer {\n\t\treturn Buffer.from(JSON.stringify(value));\n\t}\n}\n\nexport type SQLiteBlobBufferBuilderInitial<TName extends string> = SQLiteBlobBufferBuilder<{\n\tname: TName;\n\tdataType: 'buffer';\n\tcolumnType: 'SQLiteBlobBuffer';\n\tdata: Buffer;\n\tdriverParam: Buffer;\n\tenumValues: undefined;\n}>;\n\nexport class SQLiteBlobBufferBuilder<T extends ColumnBuilderBaseConfig<'buffer', 'SQLiteBlobBuffer'>>\n\textends SQLiteColumnBuilder<T>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteBlobBufferBuilder';\n\n\tconstructor(name: T['name']) {\n\t\tsuper(name, 'buffer', 'SQLiteBlobBuffer');\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteBlobBuffer<MakeColumnConfig<T, TTableName>> {\n\t\treturn new SQLiteBlobBuffer<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any>);\n\t}\n}\n\nexport class SQLiteBlobBuffer<T extends ColumnBaseConfig<'buffer', 'SQLiteBlobBuffer'>> extends SQLiteColumn<T> {\n\tstatic readonly [entityKind]: string = 'SQLiteBlobBuffer';\n\n\tgetSQLType(): string {\n\t\treturn 'blob';\n\t}\n}\n\nexport interface BlobConfig<TMode extends BlobMode = BlobMode> {\n\tmode: TMode;\n}\n\n/**\n * It's recommended to use `text('...', { mode: 'json' })` instead of `blob` in JSON mode, because it supports JSON functions:\n * >All JSON functions currently throw an error if any of their arguments are BLOBs because BLOBs are reserved for a future enhancement in which BLOBs will store the binary encoding for JSON.\n *\n * https://www.sqlite.org/json1.html\n */\nexport function blob<TName extends string, TMode extends BlobMode = BlobMode>(\n\tname: TName,\n\tconfig?: BlobConfig<TMode>,\n): Equal<TMode, 'bigint'> extends true ? SQLiteBigIntBuilderInitial<TName>\n\t: Equal<TMode, 'buffer'> extends true ? SQLiteBlobBufferBuilderInitial<TName>\n\t: SQLiteBlobJsonBuilderInitial<TName>;\nexport function blob(name: string, config?: BlobConfig) {\n\tif (config?.mode === 'json') {\n\t\treturn new SQLiteBlobJsonBuilder(name);\n\t}\n\tif (config?.mode === 'bigint') {\n\t\treturn new SQLiteBigIntBuilder(name);\n\t}\n\treturn new SQLiteBlobBufferBuilder(name);\n}\n"],"mappings":"AAEA,SAAS,kBAAkB;AAG3B,SAAS,cAAc,2BAA2B;AAa3C,MAAM,4BACJ,oBACT;AAAA,EACC,QAAiB,UAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB;AAC5B,UAAM,MAAM,UAAU,cAAc;AAAA,EACrC;AAAA;AAAA,EAGS,MACR,OACgD;AAChD,WAAO,IAAI,aAA8C,OAAO,KAAK,MAAyC;AAAA,EAC/G;AACD;AAEO,MAAM,qBAA2E,aAAgB;AAAA,EACvG,QAAiB,UAAU,IAAY;AAAA,EAEvC,aAAqB;AACpB,WAAO;AAAA,EACR;AAAA,EAES,mBAAmB,OAAuB;AAClD,WAAO,OAAO,MAAM,SAAS,CAAC;AAAA,EAC/B;AAAA,EAES,iBAAiB,OAAuB;AAChD,WAAO,OAAO,KAAK,MAAM,SAAS,CAAC;AAAA,EACpC;AACD;AAWO,MAAM,8BACJ,oBACT;AAAA,EACC,QAAiB,UAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB;AAC5B,UAAM,MAAM,QAAQ,gBAAgB;AAAA,EACrC;AAAA;AAAA,EAGS,MACR,OACkD;AAClD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,uBAA6E,aAAgB;AAAA,EACzG,QAAiB,UAAU,IAAY;AAAA,EAEvC,aAAqB;AACpB,WAAO;AAAA,EACR;AAAA,EAES,mBAAmB,OAA0B;AACrD,WAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AAAA,EACnC;AAAA,EAES,iBAAiB,OAA0B;AACnD,WAAO,OAAO,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA,EACzC;AACD;AAWO,MAAM,gCACJ,oBACT;AAAA,EACC,QAAiB,UAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB;AAC5B,UAAM,MAAM,UAAU,kBAAkB;AAAA,EACzC;AAAA;AAAA,EAGS,MACR,OACoD;AACpD,WAAO,IAAI,iBAAkD,OAAO,KAAK,MAAyC;AAAA,EACnH;AACD;AAEO,MAAM,yBAAmF,aAAgB;AAAA,EAC/G,QAAiB,UAAU,IAAY;AAAA,EAEvC,aAAqB;AACpB,WAAO;AAAA,EACR;AACD;AAkBO,SAAS,KAAK,MAAc,QAAqB;AACvD,MAAI,QAAQ,SAAS,QAAQ;AAC5B,WAAO,IAAI,sBAAsB,IAAI;AAAA,EACtC;AACA,MAAI,QAAQ,SAAS,UAAU;AAC9B,WAAO,IAAI,oBAAoB,IAAI;AAAA,EACpC;AACA,SAAO,IAAI,wBAAwB,IAAI;AACxC;","names":[]}
1
+ {"version":3,"sources":["../../../src/sqlite-core/columns/blob.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnySQLiteTable } from '~/sqlite-core/table.ts';\nimport type { Equal } from '~/utils.ts';\nimport { SQLiteColumn, SQLiteColumnBuilder } from './common.ts';\n\ntype BlobMode = 'buffer' | 'json' | 'bigint';\n\nexport type SQLiteBigIntBuilderInitial<TName extends string> = SQLiteBigIntBuilder<{\n\tname: TName;\n\tdataType: 'bigint';\n\tcolumnType: 'SQLiteBigInt';\n\tdata: bigint;\n\tdriverParam: Buffer;\n\tenumValues: undefined;\n\tgenerated: undefined;\n}>;\n\nexport class SQLiteBigIntBuilder<T extends ColumnBuilderBaseConfig<'bigint', 'SQLiteBigInt'>>\n\textends SQLiteColumnBuilder<T>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteBigIntBuilder';\n\n\tconstructor(name: T['name']) {\n\t\tsuper(name, 'bigint', 'SQLiteBigInt');\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteBigInt<MakeColumnConfig<T, TTableName>> {\n\t\treturn new SQLiteBigInt<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any>);\n\t}\n}\n\nexport class SQLiteBigInt<T extends ColumnBaseConfig<'bigint', 'SQLiteBigInt'>> extends SQLiteColumn<T> {\n\tstatic readonly [entityKind]: string = 'SQLiteBigInt';\n\n\tgetSQLType(): string {\n\t\treturn 'blob';\n\t}\n\n\toverride mapFromDriverValue(value: Buffer): bigint {\n\t\treturn BigInt(value.toString());\n\t}\n\n\toverride mapToDriverValue(value: bigint): Buffer {\n\t\treturn Buffer.from(value.toString());\n\t}\n}\n\nexport type SQLiteBlobJsonBuilderInitial<TName extends string> = SQLiteBlobJsonBuilder<{\n\tname: TName;\n\tdataType: 'json';\n\tcolumnType: 'SQLiteBlobJson';\n\tdata: unknown;\n\tdriverParam: Buffer;\n\tenumValues: undefined;\n\tgenerated: undefined;\n}>;\n\nexport class SQLiteBlobJsonBuilder<T extends ColumnBuilderBaseConfig<'json', 'SQLiteBlobJson'>>\n\textends SQLiteColumnBuilder<T>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteBlobJsonBuilder';\n\n\tconstructor(name: T['name']) {\n\t\tsuper(name, 'json', 'SQLiteBlobJson');\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteBlobJson<MakeColumnConfig<T, TTableName>> {\n\t\treturn new SQLiteBlobJson<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any>,\n\t\t);\n\t}\n}\n\nexport class SQLiteBlobJson<T extends ColumnBaseConfig<'json', 'SQLiteBlobJson'>> extends SQLiteColumn<T> {\n\tstatic readonly [entityKind]: string = 'SQLiteBlobJson';\n\n\tgetSQLType(): string {\n\t\treturn 'blob';\n\t}\n\n\toverride mapFromDriverValue(value: Buffer): T['data'] {\n\t\treturn JSON.parse(value.toString());\n\t}\n\n\toverride mapToDriverValue(value: T['data']): Buffer {\n\t\treturn Buffer.from(JSON.stringify(value));\n\t}\n}\n\nexport type SQLiteBlobBufferBuilderInitial<TName extends string> = SQLiteBlobBufferBuilder<{\n\tname: TName;\n\tdataType: 'buffer';\n\tcolumnType: 'SQLiteBlobBuffer';\n\tdata: Buffer;\n\tdriverParam: Buffer;\n\tenumValues: undefined;\n\tgenerated: undefined;\n}>;\n\nexport class SQLiteBlobBufferBuilder<T extends ColumnBuilderBaseConfig<'buffer', 'SQLiteBlobBuffer'>>\n\textends SQLiteColumnBuilder<T>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteBlobBufferBuilder';\n\n\tconstructor(name: T['name']) {\n\t\tsuper(name, 'buffer', 'SQLiteBlobBuffer');\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteBlobBuffer<MakeColumnConfig<T, TTableName>> {\n\t\treturn new SQLiteBlobBuffer<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any>);\n\t}\n}\n\nexport class SQLiteBlobBuffer<T extends ColumnBaseConfig<'buffer', 'SQLiteBlobBuffer'>> extends SQLiteColumn<T> {\n\tstatic readonly [entityKind]: string = 'SQLiteBlobBuffer';\n\n\tgetSQLType(): string {\n\t\treturn 'blob';\n\t}\n}\n\nexport interface BlobConfig<TMode extends BlobMode = BlobMode> {\n\tmode: TMode;\n}\n\n/**\n * It's recommended to use `text('...', { mode: 'json' })` instead of `blob` in JSON mode, because it supports JSON functions:\n * >All JSON functions currently throw an error if any of their arguments are BLOBs because BLOBs are reserved for a future enhancement in which BLOBs will store the binary encoding for JSON.\n *\n * https://www.sqlite.org/json1.html\n */\nexport function blob<TName extends string, TMode extends BlobMode = BlobMode>(\n\tname: TName,\n\tconfig?: BlobConfig<TMode>,\n): Equal<TMode, 'bigint'> extends true ? SQLiteBigIntBuilderInitial<TName>\n\t: Equal<TMode, 'buffer'> extends true ? SQLiteBlobBufferBuilderInitial<TName>\n\t: SQLiteBlobJsonBuilderInitial<TName>;\nexport function blob(name: string, config?: BlobConfig) {\n\tif (config?.mode === 'json') {\n\t\treturn new SQLiteBlobJsonBuilder(name);\n\t}\n\tif (config?.mode === 'bigint') {\n\t\treturn new SQLiteBigIntBuilder(name);\n\t}\n\treturn new SQLiteBlobBufferBuilder(name);\n}\n"],"mappings":"AAEA,SAAS,kBAAkB;AAG3B,SAAS,cAAc,2BAA2B;AAc3C,MAAM,4BACJ,oBACT;AAAA,EACC,QAAiB,UAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB;AAC5B,UAAM,MAAM,UAAU,cAAc;AAAA,EACrC;AAAA;AAAA,EAGS,MACR,OACgD;AAChD,WAAO,IAAI,aAA8C,OAAO,KAAK,MAAyC;AAAA,EAC/G;AACD;AAEO,MAAM,qBAA2E,aAAgB;AAAA,EACvG,QAAiB,UAAU,IAAY;AAAA,EAEvC,aAAqB;AACpB,WAAO;AAAA,EACR;AAAA,EAES,mBAAmB,OAAuB;AAClD,WAAO,OAAO,MAAM,SAAS,CAAC;AAAA,EAC/B;AAAA,EAES,iBAAiB,OAAuB;AAChD,WAAO,OAAO,KAAK,MAAM,SAAS,CAAC;AAAA,EACpC;AACD;AAYO,MAAM,8BACJ,oBACT;AAAA,EACC,QAAiB,UAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB;AAC5B,UAAM,MAAM,QAAQ,gBAAgB;AAAA,EACrC;AAAA;AAAA,EAGS,MACR,OACkD;AAClD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,uBAA6E,aAAgB;AAAA,EACzG,QAAiB,UAAU,IAAY;AAAA,EAEvC,aAAqB;AACpB,WAAO;AAAA,EACR;AAAA,EAES,mBAAmB,OAA0B;AACrD,WAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AAAA,EACnC;AAAA,EAES,iBAAiB,OAA0B;AACnD,WAAO,OAAO,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA,EACzC;AACD;AAYO,MAAM,gCACJ,oBACT;AAAA,EACC,QAAiB,UAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB;AAC5B,UAAM,MAAM,UAAU,kBAAkB;AAAA,EACzC;AAAA;AAAA,EAGS,MACR,OACoD;AACpD,WAAO,IAAI,iBAAkD,OAAO,KAAK,MAAyC;AAAA,EACnH;AACD;AAEO,MAAM,yBAAmF,aAAgB;AAAA,EAC/G,QAAiB,UAAU,IAAY;AAAA,EAEvC,aAAqB;AACpB,WAAO;AAAA,EACR;AACD;AAkBO,SAAS,KAAK,MAAc,QAAqB;AACvD,MAAI,QAAQ,SAAS,QAAQ;AAC5B,WAAO,IAAI,sBAAsB,IAAI;AAAA,EACtC;AACA,MAAI,QAAQ,SAAS,UAAU;AAC9B,WAAO,IAAI,oBAAoB,IAAI;AAAA,EACpC;AACA,SAAO,IAAI,wBAAwB,IAAI;AACxC;","names":[]}
@@ -39,6 +39,14 @@ class SQLiteColumnBuilder extends import_column_builder.ColumnBuilder {
39
39
  this.config.uniqueName = name;
40
40
  return this;
41
41
  }
42
+ generatedAlwaysAs(as, config) {
43
+ this.config.generated = {
44
+ as,
45
+ type: "always",
46
+ mode: config?.mode ?? "virtual"
47
+ };
48
+ return this;
49
+ }
42
50
  /** @internal */
43
51
  buildForeignKeys(column, table) {
44
52
  return this.foreignKeyConfigs.map(({ ref, actions }) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/sqlite-core/columns/common.ts"],"sourcesContent":["import type {\n\tColumnBuilderBase,\n\tColumnBuilderBaseConfig,\n\tColumnBuilderExtraConfig,\n\tColumnBuilderRuntimeConfig,\n\tColumnDataType,\n\tMakeColumnConfig,\n} from '~/column-builder.ts';\nimport { ColumnBuilder } from '~/column-builder.ts';\nimport { Column } from '~/column.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { ForeignKey, UpdateDeleteAction } from '~/sqlite-core/foreign-keys.ts';\nimport { ForeignKeyBuilder } from '~/sqlite-core/foreign-keys.ts';\nimport type { AnySQLiteTable, SQLiteTable } from '~/sqlite-core/table.ts';\nimport type { Update } from '~/utils.ts';\nimport { uniqueKeyName } from '../unique-constraint.ts';\n\nexport interface ReferenceConfig {\n\tref: () => SQLiteColumn;\n\tactions: {\n\t\tonUpdate?: UpdateDeleteAction;\n\t\tonDelete?: UpdateDeleteAction;\n\t};\n}\n\nexport interface SQLiteColumnBuilderBase<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTTypeConfig extends object = object,\n> extends ColumnBuilderBase<T, TTypeConfig & { dialect: 'sqlite' }> {}\n\nexport abstract class SQLiteColumnBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = object,\n\tTTypeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = object,\n> extends ColumnBuilder<T, TRuntimeConfig, TTypeConfig & { dialect: 'sqlite' }, TExtraConfig>\n\timplements SQLiteColumnBuilderBase<T, TTypeConfig>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteColumnBuilder';\n\n\tprivate foreignKeyConfigs: ReferenceConfig[] = [];\n\n\treferences(\n\t\tref: ReferenceConfig['ref'],\n\t\tactions: ReferenceConfig['actions'] = {},\n\t): this {\n\t\tthis.foreignKeyConfigs.push({ ref, actions });\n\t\treturn this;\n\t}\n\n\tunique(\n\t\tname?: string,\n\t): this {\n\t\tthis.config.isUnique = true;\n\t\tthis.config.uniqueName = name;\n\t\treturn this;\n\t}\n\n\t/** @internal */\n\tbuildForeignKeys(column: SQLiteColumn, table: SQLiteTable): 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: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteColumn<MakeColumnConfig<T, TTableName>>;\n}\n\n// To understand how to use `SQLiteColumn` and `AnySQLiteColumn`, see `Column` and `AnyColumn` documentation.\nexport abstract class SQLiteColumn<\n\tT extends ColumnBaseConfig<ColumnDataType, string> = ColumnBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = object,\n> extends Column<T, TRuntimeConfig, { dialect: 'sqlite' }> {\n\tstatic readonly [entityKind]: string = 'SQLiteColumn';\n\n\tconstructor(\n\t\toverride readonly table: SQLiteTable,\n\t\tconfig: ColumnBuilderRuntimeConfig<T['data'], TRuntimeConfig>,\n\t) {\n\t\tif (!config.uniqueName) {\n\t\t\tconfig.uniqueName = uniqueKeyName(table, [config.name]);\n\t\t}\n\t\tsuper(table, config);\n\t}\n}\n\nexport type AnySQLiteColumn<TPartial extends Partial<ColumnBaseConfig<ColumnDataType, string>> = {}> = SQLiteColumn<\n\tRequired<Update<ColumnBaseConfig<ColumnDataType, string>, TPartial>>\n>;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,4BAA8B;AAC9B,oBAAuB;AAEvB,oBAA2B;AAE3B,0BAAkC;AAGlC,+BAA8B;AAevB,MAAe,4BAKZ,oCAEV;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAE/B,oBAAuC,CAAC;AAAA,EAEhD,WACC,KACA,UAAsC,CAAC,GAChC;AACP,SAAK,kBAAkB,KAAK,EAAE,KAAK,QAAQ,CAAC;AAC5C,WAAO;AAAA,EACR;AAAA,EAEA,OACC,MACO;AACP,SAAK,OAAO,WAAW;AACvB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA;AAAA,EAGA,iBAAiB,QAAsB,OAAkC;AACxE,WAAO,KAAK,kBAAkB,IAAI,CAAC,EAAE,KAAK,QAAQ,MAAM;AACvD,cAAQ,CAACA,MAAKC,aAAY;AACzB,cAAM,UAAU,IAAI,sCAAkB,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,qBAGZ,qBAAiD;AAAA,EAG1D,YACmB,OAClB,QACC;AACD,QAAI,CAAC,OAAO,YAAY;AACvB,aAAO,iBAAa,wCAAc,OAAO,CAAC,OAAO,IAAI,CAAC;AAAA,IACvD;AACA,UAAM,OAAO,MAAM;AAND;AAAA,EAOnB;AAAA,EAVA,QAAiB,wBAAU,IAAY;AAWxC;","names":["ref","actions"]}
1
+ {"version":3,"sources":["../../../src/sqlite-core/columns/common.ts"],"sourcesContent":["import type {\n\tColumnBuilderBase,\n\tColumnBuilderBaseConfig,\n\tColumnBuilderExtraConfig,\n\tColumnBuilderRuntimeConfig,\n\tColumnDataType,\n\tHasGenerated,\n\tMakeColumnConfig,\n} from '~/column-builder.ts';\nimport { ColumnBuilder } from '~/column-builder.ts';\nimport { Column } from '~/column.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { SQL } from '~/sql/sql.ts';\nimport type { ForeignKey, UpdateDeleteAction } from '~/sqlite-core/foreign-keys.ts';\nimport { ForeignKeyBuilder } from '~/sqlite-core/foreign-keys.ts';\nimport type { AnySQLiteTable, SQLiteTable } from '~/sqlite-core/table.ts';\nimport type { Update } from '~/utils.ts';\nimport { uniqueKeyName } from '../unique-constraint.ts';\n\nexport interface ReferenceConfig {\n\tref: () => SQLiteColumn;\n\tactions: {\n\t\tonUpdate?: UpdateDeleteAction;\n\t\tonDelete?: UpdateDeleteAction;\n\t};\n}\n\nexport interface SQLiteColumnBuilderBase<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTTypeConfig extends object = object,\n> extends ColumnBuilderBase<T, TTypeConfig & { dialect: 'sqlite' }> {}\n\nexport interface SQLiteGeneratedColumnConfig {\n\tmode?: 'virtual' | 'stored';\n}\n\nexport abstract class SQLiteColumnBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = object,\n\tTTypeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = object,\n> extends ColumnBuilder<T, TRuntimeConfig, TTypeConfig & { dialect: 'sqlite' }, TExtraConfig>\n\timplements SQLiteColumnBuilderBase<T, TTypeConfig>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteColumnBuilder';\n\n\tprivate foreignKeyConfigs: ReferenceConfig[] = [];\n\n\treferences(\n\t\tref: ReferenceConfig['ref'],\n\t\tactions: ReferenceConfig['actions'] = {},\n\t): this {\n\t\tthis.foreignKeyConfigs.push({ ref, actions });\n\t\treturn this;\n\t}\n\n\tunique(\n\t\tname?: string,\n\t): this {\n\t\tthis.config.isUnique = true;\n\t\tthis.config.uniqueName = name;\n\t\treturn this;\n\t}\n\n\tgeneratedAlwaysAs(as: SQL | T['data'], config?: SQLiteGeneratedColumnConfig): HasGenerated<this> {\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: SQLiteColumn, table: SQLiteTable): 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: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteColumn<MakeColumnConfig<T, TTableName>>;\n}\n\n// To understand how to use `SQLiteColumn` and `AnySQLiteColumn`, see `Column` and `AnyColumn` documentation.\nexport abstract class SQLiteColumn<\n\tT extends ColumnBaseConfig<ColumnDataType, string> = ColumnBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = object,\n> extends Column<T, TRuntimeConfig, { dialect: 'sqlite' }> {\n\tstatic readonly [entityKind]: string = 'SQLiteColumn';\n\n\tconstructor(\n\t\toverride readonly table: SQLiteTable,\n\t\tconfig: ColumnBuilderRuntimeConfig<T['data'], TRuntimeConfig>,\n\t) {\n\t\tif (!config.uniqueName) {\n\t\t\tconfig.uniqueName = uniqueKeyName(table, [config.name]);\n\t\t}\n\t\tsuper(table, config);\n\t}\n}\n\nexport type AnySQLiteColumn<TPartial extends Partial<ColumnBaseConfig<ColumnDataType, string>> = {}> = SQLiteColumn<\n\tRequired<Update<ColumnBaseConfig<ColumnDataType, string>, TPartial>>\n>;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,4BAA8B;AAC9B,oBAAuB;AAEvB,oBAA2B;AAG3B,0BAAkC;AAGlC,+BAA8B;AAmBvB,MAAe,4BAKZ,oCAEV;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAE/B,oBAAuC,CAAC;AAAA,EAEhD,WACC,KACA,UAAsC,CAAC,GAChC;AACP,SAAK,kBAAkB,KAAK,EAAE,KAAK,QAAQ,CAAC;AAC5C,WAAO;AAAA,EACR;AAAA,EAEA,OACC,MACO;AACP,SAAK,OAAO,WAAW;AACvB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA,EAEA,kBAAkB,IAAqB,QAA0D;AAChG,SAAK,OAAO,YAAY;AAAA,MACvB;AAAA,MACA,MAAM;AAAA,MACN,MAAM,QAAQ,QAAQ;AAAA,IACvB;AACA,WAAO;AAAA,EACR;AAAA;AAAA,EAGA,iBAAiB,QAAsB,OAAkC;AACxE,WAAO,KAAK,kBAAkB,IAAI,CAAC,EAAE,KAAK,QAAQ,MAAM;AACvD,cAAQ,CAACA,MAAKC,aAAY;AACzB,cAAM,UAAU,IAAI,sCAAkB,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,qBAGZ,qBAAiD;AAAA,EAG1D,YACmB,OAClB,QACC;AACD,QAAI,CAAC,OAAO,YAAY;AACvB,aAAO,iBAAa,wCAAc,OAAO,CAAC,OAAO,IAAI,CAAC;AAAA,IACvD;AACA,UAAM,OAAO,MAAM;AAND;AAAA,EAOnB;AAAA,EAVA,QAAiB,wBAAU,IAAY;AAWxC;","names":["ref","actions"]}
@@ -1,8 +1,9 @@
1
- import type { ColumnBuilderBase, ColumnBuilderBaseConfig, ColumnBuilderExtraConfig, ColumnBuilderRuntimeConfig, ColumnDataType } from "../../column-builder.cjs";
1
+ import type { ColumnBuilderBase, ColumnBuilderBaseConfig, ColumnBuilderExtraConfig, ColumnBuilderRuntimeConfig, ColumnDataType, HasGenerated } from "../../column-builder.cjs";
2
2
  import { ColumnBuilder } from "../../column-builder.cjs";
3
3
  import { Column } from "../../column.cjs";
4
4
  import type { ColumnBaseConfig } from "../../column.cjs";
5
5
  import { entityKind } from "../../entity.cjs";
6
+ import type { SQL } from "../../sql/sql.cjs";
6
7
  import type { UpdateDeleteAction } from "../foreign-keys.cjs";
7
8
  import type { SQLiteTable } from "../table.cjs";
8
9
  import type { Update } from "../../utils.cjs";
@@ -17,6 +18,9 @@ export interface SQLiteColumnBuilderBase<T extends ColumnBuilderBaseConfig<Colum
17
18
  dialect: 'sqlite';
18
19
  }> {
19
20
  }
21
+ export interface SQLiteGeneratedColumnConfig {
22
+ mode?: 'virtual' | 'stored';
23
+ }
20
24
  export declare abstract class SQLiteColumnBuilder<T extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>, TRuntimeConfig extends object = object, TTypeConfig extends object = object, TExtraConfig extends ColumnBuilderExtraConfig = object> extends ColumnBuilder<T, TRuntimeConfig, TTypeConfig & {
21
25
  dialect: 'sqlite';
22
26
  }, TExtraConfig> implements SQLiteColumnBuilderBase<T, TTypeConfig> {
@@ -24,6 +28,7 @@ export declare abstract class SQLiteColumnBuilder<T extends ColumnBuilderBaseCon
24
28
  private foreignKeyConfigs;
25
29
  references(ref: ReferenceConfig['ref'], actions?: ReferenceConfig['actions']): this;
26
30
  unique(name?: string): this;
31
+ generatedAlwaysAs(as: SQL | T['data'], config?: SQLiteGeneratedColumnConfig): HasGenerated<this>;
27
32
  }
28
33
  export declare abstract class SQLiteColumn<T extends ColumnBaseConfig<ColumnDataType, string> = ColumnBaseConfig<ColumnDataType, string>, TRuntimeConfig extends object = object> extends Column<T, TRuntimeConfig, {
29
34
  dialect: 'sqlite';
@@ -1,8 +1,9 @@
1
- import type { ColumnBuilderBase, ColumnBuilderBaseConfig, ColumnBuilderExtraConfig, ColumnBuilderRuntimeConfig, ColumnDataType } from "../../column-builder.js";
1
+ import type { ColumnBuilderBase, ColumnBuilderBaseConfig, ColumnBuilderExtraConfig, ColumnBuilderRuntimeConfig, ColumnDataType, HasGenerated } from "../../column-builder.js";
2
2
  import { ColumnBuilder } from "../../column-builder.js";
3
3
  import { Column } from "../../column.js";
4
4
  import type { ColumnBaseConfig } from "../../column.js";
5
5
  import { entityKind } from "../../entity.js";
6
+ import type { SQL } from "../../sql/sql.js";
6
7
  import type { UpdateDeleteAction } from "../foreign-keys.js";
7
8
  import type { SQLiteTable } from "../table.js";
8
9
  import type { Update } from "../../utils.js";
@@ -17,6 +18,9 @@ export interface SQLiteColumnBuilderBase<T extends ColumnBuilderBaseConfig<Colum
17
18
  dialect: 'sqlite';
18
19
  }> {
19
20
  }
21
+ export interface SQLiteGeneratedColumnConfig {
22
+ mode?: 'virtual' | 'stored';
23
+ }
20
24
  export declare abstract class SQLiteColumnBuilder<T extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>, TRuntimeConfig extends object = object, TTypeConfig extends object = object, TExtraConfig extends ColumnBuilderExtraConfig = object> extends ColumnBuilder<T, TRuntimeConfig, TTypeConfig & {
21
25
  dialect: 'sqlite';
22
26
  }, TExtraConfig> implements SQLiteColumnBuilderBase<T, TTypeConfig> {
@@ -24,6 +28,7 @@ export declare abstract class SQLiteColumnBuilder<T extends ColumnBuilderBaseCon
24
28
  private foreignKeyConfigs;
25
29
  references(ref: ReferenceConfig['ref'], actions?: ReferenceConfig['actions']): this;
26
30
  unique(name?: string): this;
31
+ generatedAlwaysAs(as: SQL | T['data'], config?: SQLiteGeneratedColumnConfig): HasGenerated<this>;
27
32
  }
28
33
  export declare abstract class SQLiteColumn<T extends ColumnBaseConfig<ColumnDataType, string> = ColumnBaseConfig<ColumnDataType, string>, TRuntimeConfig extends object = object> extends Column<T, TRuntimeConfig, {
29
34
  dialect: 'sqlite';
@@ -15,6 +15,14 @@ class SQLiteColumnBuilder extends ColumnBuilder {
15
15
  this.config.uniqueName = name;
16
16
  return this;
17
17
  }
18
+ generatedAlwaysAs(as, config) {
19
+ this.config.generated = {
20
+ as,
21
+ type: "always",
22
+ mode: config?.mode ?? "virtual"
23
+ };
24
+ return this;
25
+ }
18
26
  /** @internal */
19
27
  buildForeignKeys(column, table) {
20
28
  return this.foreignKeyConfigs.map(({ ref, actions }) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/sqlite-core/columns/common.ts"],"sourcesContent":["import type {\n\tColumnBuilderBase,\n\tColumnBuilderBaseConfig,\n\tColumnBuilderExtraConfig,\n\tColumnBuilderRuntimeConfig,\n\tColumnDataType,\n\tMakeColumnConfig,\n} from '~/column-builder.ts';\nimport { ColumnBuilder } from '~/column-builder.ts';\nimport { Column } from '~/column.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { ForeignKey, UpdateDeleteAction } from '~/sqlite-core/foreign-keys.ts';\nimport { ForeignKeyBuilder } from '~/sqlite-core/foreign-keys.ts';\nimport type { AnySQLiteTable, SQLiteTable } from '~/sqlite-core/table.ts';\nimport type { Update } from '~/utils.ts';\nimport { uniqueKeyName } from '../unique-constraint.ts';\n\nexport interface ReferenceConfig {\n\tref: () => SQLiteColumn;\n\tactions: {\n\t\tonUpdate?: UpdateDeleteAction;\n\t\tonDelete?: UpdateDeleteAction;\n\t};\n}\n\nexport interface SQLiteColumnBuilderBase<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTTypeConfig extends object = object,\n> extends ColumnBuilderBase<T, TTypeConfig & { dialect: 'sqlite' }> {}\n\nexport abstract class SQLiteColumnBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = object,\n\tTTypeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = object,\n> extends ColumnBuilder<T, TRuntimeConfig, TTypeConfig & { dialect: 'sqlite' }, TExtraConfig>\n\timplements SQLiteColumnBuilderBase<T, TTypeConfig>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteColumnBuilder';\n\n\tprivate foreignKeyConfigs: ReferenceConfig[] = [];\n\n\treferences(\n\t\tref: ReferenceConfig['ref'],\n\t\tactions: ReferenceConfig['actions'] = {},\n\t): this {\n\t\tthis.foreignKeyConfigs.push({ ref, actions });\n\t\treturn this;\n\t}\n\n\tunique(\n\t\tname?: string,\n\t): this {\n\t\tthis.config.isUnique = true;\n\t\tthis.config.uniqueName = name;\n\t\treturn this;\n\t}\n\n\t/** @internal */\n\tbuildForeignKeys(column: SQLiteColumn, table: SQLiteTable): 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: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteColumn<MakeColumnConfig<T, TTableName>>;\n}\n\n// To understand how to use `SQLiteColumn` and `AnySQLiteColumn`, see `Column` and `AnyColumn` documentation.\nexport abstract class SQLiteColumn<\n\tT extends ColumnBaseConfig<ColumnDataType, string> = ColumnBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = object,\n> extends Column<T, TRuntimeConfig, { dialect: 'sqlite' }> {\n\tstatic readonly [entityKind]: string = 'SQLiteColumn';\n\n\tconstructor(\n\t\toverride readonly table: SQLiteTable,\n\t\tconfig: ColumnBuilderRuntimeConfig<T['data'], TRuntimeConfig>,\n\t) {\n\t\tif (!config.uniqueName) {\n\t\t\tconfig.uniqueName = uniqueKeyName(table, [config.name]);\n\t\t}\n\t\tsuper(table, config);\n\t}\n}\n\nexport type AnySQLiteColumn<TPartial extends Partial<ColumnBaseConfig<ColumnDataType, string>> = {}> = SQLiteColumn<\n\tRequired<Update<ColumnBaseConfig<ColumnDataType, string>, TPartial>>\n>;\n"],"mappings":"AAQA,SAAS,qBAAqB;AAC9B,SAAS,cAAc;AAEvB,SAAS,kBAAkB;AAE3B,SAAS,yBAAyB;AAGlC,SAAS,qBAAqB;AAevB,MAAe,4BAKZ,cAEV;AAAA,EACC,QAAiB,UAAU,IAAY;AAAA,EAE/B,oBAAuC,CAAC;AAAA,EAEhD,WACC,KACA,UAAsC,CAAC,GAChC;AACP,SAAK,kBAAkB,KAAK,EAAE,KAAK,QAAQ,CAAC;AAC5C,WAAO;AAAA,EACR;AAAA,EAEA,OACC,MACO;AACP,SAAK,OAAO,WAAW;AACvB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA;AAAA,EAGA,iBAAiB,QAAsB,OAAkC;AACxE,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,qBAGZ,OAAiD;AAAA,EAG1D,YACmB,OAClB,QACC;AACD,QAAI,CAAC,OAAO,YAAY;AACvB,aAAO,aAAa,cAAc,OAAO,CAAC,OAAO,IAAI,CAAC;AAAA,IACvD;AACA,UAAM,OAAO,MAAM;AAND;AAAA,EAOnB;AAAA,EAVA,QAAiB,UAAU,IAAY;AAWxC;","names":["ref","actions"]}
1
+ {"version":3,"sources":["../../../src/sqlite-core/columns/common.ts"],"sourcesContent":["import type {\n\tColumnBuilderBase,\n\tColumnBuilderBaseConfig,\n\tColumnBuilderExtraConfig,\n\tColumnBuilderRuntimeConfig,\n\tColumnDataType,\n\tHasGenerated,\n\tMakeColumnConfig,\n} from '~/column-builder.ts';\nimport { ColumnBuilder } from '~/column-builder.ts';\nimport { Column } from '~/column.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { SQL } from '~/sql/sql.ts';\nimport type { ForeignKey, UpdateDeleteAction } from '~/sqlite-core/foreign-keys.ts';\nimport { ForeignKeyBuilder } from '~/sqlite-core/foreign-keys.ts';\nimport type { AnySQLiteTable, SQLiteTable } from '~/sqlite-core/table.ts';\nimport type { Update } from '~/utils.ts';\nimport { uniqueKeyName } from '../unique-constraint.ts';\n\nexport interface ReferenceConfig {\n\tref: () => SQLiteColumn;\n\tactions: {\n\t\tonUpdate?: UpdateDeleteAction;\n\t\tonDelete?: UpdateDeleteAction;\n\t};\n}\n\nexport interface SQLiteColumnBuilderBase<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTTypeConfig extends object = object,\n> extends ColumnBuilderBase<T, TTypeConfig & { dialect: 'sqlite' }> {}\n\nexport interface SQLiteGeneratedColumnConfig {\n\tmode?: 'virtual' | 'stored';\n}\n\nexport abstract class SQLiteColumnBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = object,\n\tTTypeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = object,\n> extends ColumnBuilder<T, TRuntimeConfig, TTypeConfig & { dialect: 'sqlite' }, TExtraConfig>\n\timplements SQLiteColumnBuilderBase<T, TTypeConfig>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteColumnBuilder';\n\n\tprivate foreignKeyConfigs: ReferenceConfig[] = [];\n\n\treferences(\n\t\tref: ReferenceConfig['ref'],\n\t\tactions: ReferenceConfig['actions'] = {},\n\t): this {\n\t\tthis.foreignKeyConfigs.push({ ref, actions });\n\t\treturn this;\n\t}\n\n\tunique(\n\t\tname?: string,\n\t): this {\n\t\tthis.config.isUnique = true;\n\t\tthis.config.uniqueName = name;\n\t\treturn this;\n\t}\n\n\tgeneratedAlwaysAs(as: SQL | T['data'], config?: SQLiteGeneratedColumnConfig): HasGenerated<this> {\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: SQLiteColumn, table: SQLiteTable): 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: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteColumn<MakeColumnConfig<T, TTableName>>;\n}\n\n// To understand how to use `SQLiteColumn` and `AnySQLiteColumn`, see `Column` and `AnyColumn` documentation.\nexport abstract class SQLiteColumn<\n\tT extends ColumnBaseConfig<ColumnDataType, string> = ColumnBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = object,\n> extends Column<T, TRuntimeConfig, { dialect: 'sqlite' }> {\n\tstatic readonly [entityKind]: string = 'SQLiteColumn';\n\n\tconstructor(\n\t\toverride readonly table: SQLiteTable,\n\t\tconfig: ColumnBuilderRuntimeConfig<T['data'], TRuntimeConfig>,\n\t) {\n\t\tif (!config.uniqueName) {\n\t\t\tconfig.uniqueName = uniqueKeyName(table, [config.name]);\n\t\t}\n\t\tsuper(table, config);\n\t}\n}\n\nexport type AnySQLiteColumn<TPartial extends Partial<ColumnBaseConfig<ColumnDataType, string>> = {}> = SQLiteColumn<\n\tRequired<Update<ColumnBaseConfig<ColumnDataType, string>, TPartial>>\n>;\n"],"mappings":"AASA,SAAS,qBAAqB;AAC9B,SAAS,cAAc;AAEvB,SAAS,kBAAkB;AAG3B,SAAS,yBAAyB;AAGlC,SAAS,qBAAqB;AAmBvB,MAAe,4BAKZ,cAEV;AAAA,EACC,QAAiB,UAAU,IAAY;AAAA,EAE/B,oBAAuC,CAAC;AAAA,EAEhD,WACC,KACA,UAAsC,CAAC,GAChC;AACP,SAAK,kBAAkB,KAAK,EAAE,KAAK,QAAQ,CAAC;AAC5C,WAAO;AAAA,EACR;AAAA,EAEA,OACC,MACO;AACP,SAAK,OAAO,WAAW;AACvB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA,EAEA,kBAAkB,IAAqB,QAA0D;AAChG,SAAK,OAAO,YAAY;AAAA,MACvB;AAAA,MACA,MAAM;AAAA,MACN,MAAM,QAAQ,QAAQ;AAAA,IACvB;AACA,WAAO;AAAA,EACR;AAAA;AAAA,EAGA,iBAAiB,QAAsB,OAAkC;AACxE,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,qBAGZ,OAAiD;AAAA,EAG1D,YACmB,OAClB,QACC;AACD,QAAI,CAAC,OAAO,YAAY;AACvB,aAAO,aAAa,cAAc,OAAO,CAAC,OAAO,IAAI,CAAC;AAAA,IACvD;AACA,UAAM,OAAO,MAAM;AAND;AAAA,EAOnB;AAAA,EAVA,QAAiB,UAAU,IAAY;AAWxC;","names":["ref","actions"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/sqlite-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 { SQL } from '~/sql/sql.ts';\nimport type { AnySQLiteTable } from '~/sqlite-core/table.ts';\nimport type { Equal } from '~/utils.ts';\nimport { SQLiteColumn, SQLiteColumnBuilder } 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: 'SQLiteCustomColumn';\n\t\tdata: T['data'];\n\t\tdriverParam: T['driverData'];\n\t\tenumValues: undefined;\n\t}\n\t& (T['notNull'] extends true ? { notNull: true } : {})\n\t& (T['default'] extends true ? { hasDefault: true } : {});\n\nexport interface SQLiteCustomColumnInnerConfig {\n\tcustomTypeValues: CustomTypeValues;\n}\n\nexport class SQLiteCustomColumnBuilder<T extends ColumnBuilderBaseConfig<'custom', 'SQLiteCustomColumn'>>\n\textends SQLiteColumnBuilder<\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\tsqliteColumnBuilderBrand: 'SQLiteCustomColumnBuilderBrand';\n\t\t}\n\t>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteCustomColumnBuilder';\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', 'SQLiteCustomColumn');\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: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteCustomColumn<MakeColumnConfig<T, TTableName>> {\n\t\treturn new SQLiteCustomColumn<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 SQLiteCustomColumn<T extends ColumnBaseConfig<'custom', 'SQLiteCustomColumn'>> extends SQLiteColumn<T> {\n\tstatic readonly [entityKind]: string = 'SQLiteCustomColumn';\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: AnySQLiteTable<{ name: T['tableName'] }>,\n\t\tconfig: SQLiteCustomColumnBuilder<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 sqlite 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) => SQLiteCustomColumnBuilder<ConvertCustomConfig<TName, T>>\n\t: <TName extends string>(\n\t\tdbName: TName,\n\t\tfieldConfig?: T['config'],\n\t) => SQLiteCustomColumnBuilder<ConvertCustomConfig<TName, T>>\n{\n\treturn <TName extends string>(\n\t\tdbName: TName,\n\t\tfieldConfig?: T['config'],\n\t): SQLiteCustomColumnBuilder<ConvertCustomConfig<TName, T>> => {\n\t\treturn new SQLiteCustomColumnBuilder(\n\t\t\tdbName as ConvertCustomConfig<TName, T>['name'],\n\t\t\tfieldConfig,\n\t\t\tcustomTypeParams,\n\t\t);\n\t};\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,oBAA2B;AAI3B,oBAAkD;AAkB3C,MAAM,kCACJ,kCAUT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAEvC,YACC,MACA,aACA,kBACC;AACD,UAAM,MAAM,UAAU,oBAAoB;AAC1C,SAAK,OAAO,cAAc;AAC1B,SAAK,OAAO,mBAAmB;AAAA,EAChC;AAAA;AAAA,EAGA,MACC,OACsD;AACtD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,2BAAuF,2BAAgB;AAAA,EACnH,QAAiB,wBAAU,IAAY;AAAA,EAE/B;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,gBAC8D;AAC9D,WAAO,IAAI;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AACD;","names":[]}
1
+ {"version":3,"sources":["../../../src/sqlite-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 { SQL } from '~/sql/sql.ts';\nimport type { AnySQLiteTable } from '~/sqlite-core/table.ts';\nimport type { Equal } from '~/utils.ts';\nimport { SQLiteColumn, SQLiteColumnBuilder } 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: 'SQLiteCustomColumn';\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 SQLiteCustomColumnInnerConfig {\n\tcustomTypeValues: CustomTypeValues;\n}\n\nexport class SQLiteCustomColumnBuilder<T extends ColumnBuilderBaseConfig<'custom', 'SQLiteCustomColumn'>>\n\textends SQLiteColumnBuilder<\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\tsqliteColumnBuilderBrand: 'SQLiteCustomColumnBuilderBrand';\n\t\t}\n\t>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteCustomColumnBuilder';\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', 'SQLiteCustomColumn');\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: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteCustomColumn<MakeColumnConfig<T, TTableName>> {\n\t\treturn new SQLiteCustomColumn<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 SQLiteCustomColumn<T extends ColumnBaseConfig<'custom', 'SQLiteCustomColumn'>> extends SQLiteColumn<T> {\n\tstatic readonly [entityKind]: string = 'SQLiteCustomColumn';\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: AnySQLiteTable<{ name: T['tableName'] }>,\n\t\tconfig: SQLiteCustomColumnBuilder<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 sqlite 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) => SQLiteCustomColumnBuilder<ConvertCustomConfig<TName, T>>\n\t: <TName extends string>(\n\t\tdbName: TName,\n\t\tfieldConfig?: T['config'],\n\t) => SQLiteCustomColumnBuilder<ConvertCustomConfig<TName, T>>\n{\n\treturn <TName extends string>(\n\t\tdbName: TName,\n\t\tfieldConfig?: T['config'],\n\t): SQLiteCustomColumnBuilder<ConvertCustomConfig<TName, T>> => {\n\t\treturn new SQLiteCustomColumnBuilder(\n\t\t\tdbName as ConvertCustomConfig<TName, T>['name'],\n\t\t\tfieldConfig,\n\t\t\tcustomTypeParams,\n\t\t);\n\t};\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,oBAA2B;AAI3B,oBAAkD;AAmB3C,MAAM,kCACJ,kCAUT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAEvC,YACC,MACA,aACA,kBACC;AACD,UAAM,MAAM,UAAU,oBAAoB;AAC1C,SAAK,OAAO,cAAc;AAC1B,SAAK,OAAO,mBAAmB;AAAA,EAChC;AAAA;AAAA,EAGA,MACC,OACsD;AACtD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,2BAAuF,2BAAgB;AAAA,EACnH,QAAiB,wBAAU,IAAY;AAAA,EAE/B;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,gBAC8D;AAC9D,WAAO,IAAI;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AACD;","names":[]}
@@ -12,6 +12,7 @@ export type ConvertCustomConfig<TName extends string, T extends Partial<CustomTy
12
12
  data: T['data'];
13
13
  driverParam: T['driverData'];
14
14
  enumValues: undefined;
15
+ generated: undefined;
15
16
  } & (T['notNull'] extends true ? {
16
17
  notNull: true;
17
18
  } : {}) & (T['default'] extends true ? {
@@ -12,6 +12,7 @@ export type ConvertCustomConfig<TName extends string, T extends Partial<CustomTy
12
12
  data: T['data'];
13
13
  driverParam: T['driverData'];
14
14
  enumValues: undefined;
15
+ generated: undefined;
15
16
  } & (T['notNull'] extends true ? {
16
17
  notNull: true;
17
18
  } : {}) & (T['default'] extends true ? {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/sqlite-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 { SQL } from '~/sql/sql.ts';\nimport type { AnySQLiteTable } from '~/sqlite-core/table.ts';\nimport type { Equal } from '~/utils.ts';\nimport { SQLiteColumn, SQLiteColumnBuilder } 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: 'SQLiteCustomColumn';\n\t\tdata: T['data'];\n\t\tdriverParam: T['driverData'];\n\t\tenumValues: undefined;\n\t}\n\t& (T['notNull'] extends true ? { notNull: true } : {})\n\t& (T['default'] extends true ? { hasDefault: true } : {});\n\nexport interface SQLiteCustomColumnInnerConfig {\n\tcustomTypeValues: CustomTypeValues;\n}\n\nexport class SQLiteCustomColumnBuilder<T extends ColumnBuilderBaseConfig<'custom', 'SQLiteCustomColumn'>>\n\textends SQLiteColumnBuilder<\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\tsqliteColumnBuilderBrand: 'SQLiteCustomColumnBuilderBrand';\n\t\t}\n\t>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteCustomColumnBuilder';\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', 'SQLiteCustomColumn');\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: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteCustomColumn<MakeColumnConfig<T, TTableName>> {\n\t\treturn new SQLiteCustomColumn<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 SQLiteCustomColumn<T extends ColumnBaseConfig<'custom', 'SQLiteCustomColumn'>> extends SQLiteColumn<T> {\n\tstatic readonly [entityKind]: string = 'SQLiteCustomColumn';\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: AnySQLiteTable<{ name: T['tableName'] }>,\n\t\tconfig: SQLiteCustomColumnBuilder<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 sqlite 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) => SQLiteCustomColumnBuilder<ConvertCustomConfig<TName, T>>\n\t: <TName extends string>(\n\t\tdbName: TName,\n\t\tfieldConfig?: T['config'],\n\t) => SQLiteCustomColumnBuilder<ConvertCustomConfig<TName, T>>\n{\n\treturn <TName extends string>(\n\t\tdbName: TName,\n\t\tfieldConfig?: T['config'],\n\t): SQLiteCustomColumnBuilder<ConvertCustomConfig<TName, T>> => {\n\t\treturn new SQLiteCustomColumnBuilder(\n\t\t\tdbName as ConvertCustomConfig<TName, T>['name'],\n\t\t\tfieldConfig,\n\t\t\tcustomTypeParams,\n\t\t);\n\t};\n}\n"],"mappings":"AAEA,SAAS,kBAAkB;AAI3B,SAAS,cAAc,2BAA2B;AAkB3C,MAAM,kCACJ,oBAUT;AAAA,EACC,QAAiB,UAAU,IAAY;AAAA,EAEvC,YACC,MACA,aACA,kBACC;AACD,UAAM,MAAM,UAAU,oBAAoB;AAC1C,SAAK,OAAO,cAAc;AAC1B,SAAK,OAAO,mBAAmB;AAAA,EAChC;AAAA;AAAA,EAGA,MACC,OACsD;AACtD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,2BAAuF,aAAgB;AAAA,EACnH,QAAiB,UAAU,IAAY;AAAA,EAE/B;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,gBAC8D;AAC9D,WAAO,IAAI;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AACD;","names":[]}
1
+ {"version":3,"sources":["../../../src/sqlite-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 { SQL } from '~/sql/sql.ts';\nimport type { AnySQLiteTable } from '~/sqlite-core/table.ts';\nimport type { Equal } from '~/utils.ts';\nimport { SQLiteColumn, SQLiteColumnBuilder } 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: 'SQLiteCustomColumn';\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 SQLiteCustomColumnInnerConfig {\n\tcustomTypeValues: CustomTypeValues;\n}\n\nexport class SQLiteCustomColumnBuilder<T extends ColumnBuilderBaseConfig<'custom', 'SQLiteCustomColumn'>>\n\textends SQLiteColumnBuilder<\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\tsqliteColumnBuilderBrand: 'SQLiteCustomColumnBuilderBrand';\n\t\t}\n\t>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteCustomColumnBuilder';\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', 'SQLiteCustomColumn');\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: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteCustomColumn<MakeColumnConfig<T, TTableName>> {\n\t\treturn new SQLiteCustomColumn<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 SQLiteCustomColumn<T extends ColumnBaseConfig<'custom', 'SQLiteCustomColumn'>> extends SQLiteColumn<T> {\n\tstatic readonly [entityKind]: string = 'SQLiteCustomColumn';\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: AnySQLiteTable<{ name: T['tableName'] }>,\n\t\tconfig: SQLiteCustomColumnBuilder<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 sqlite 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) => SQLiteCustomColumnBuilder<ConvertCustomConfig<TName, T>>\n\t: <TName extends string>(\n\t\tdbName: TName,\n\t\tfieldConfig?: T['config'],\n\t) => SQLiteCustomColumnBuilder<ConvertCustomConfig<TName, T>>\n{\n\treturn <TName extends string>(\n\t\tdbName: TName,\n\t\tfieldConfig?: T['config'],\n\t): SQLiteCustomColumnBuilder<ConvertCustomConfig<TName, T>> => {\n\t\treturn new SQLiteCustomColumnBuilder(\n\t\t\tdbName as ConvertCustomConfig<TName, T>['name'],\n\t\t\tfieldConfig,\n\t\t\tcustomTypeParams,\n\t\t);\n\t};\n}\n"],"mappings":"AAEA,SAAS,kBAAkB;AAI3B,SAAS,cAAc,2BAA2B;AAmB3C,MAAM,kCACJ,oBAUT;AAAA,EACC,QAAiB,UAAU,IAAY;AAAA,EAEvC,YACC,MACA,aACA,kBACC;AACD,UAAM,MAAM,UAAU,oBAAoB;AAC1C,SAAK,OAAO,cAAc;AAC1B,SAAK,OAAO,mBAAmB;AAAA,EAChC;AAAA;AAAA,EAGA,MACC,OACsD;AACtD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,2BAAuF,aAAgB;AAAA,EACnH,QAAiB,UAAU,IAAY;AAAA,EAE/B;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,gBAC8D;AAC9D,WAAO,IAAI;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AACD;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/sqlite-core/columns/integer.ts"],"sourcesContent":["import type {\n\tColumnBuilderBaseConfig,\n\tColumnBuilderRuntimeConfig,\n\tColumnDataType,\n\tHasDefault,\n\tMakeColumnConfig,\n\tNotNull,\n} from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport { sql } from '~/sql/sql.ts';\nimport type { OnConflict } from '~/sqlite-core/utils.ts';\nimport type { Equal, Or } from '~/utils.ts';\nimport type { AnySQLiteTable } from '../table.ts';\nimport { SQLiteColumn, SQLiteColumnBuilder } from './common.ts';\n\nexport interface PrimaryKeyConfig {\n\tautoIncrement?: boolean;\n\tonConflict?: OnConflict;\n}\n\nexport abstract class SQLiteBaseIntegerBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = object,\n> extends SQLiteColumnBuilder<\n\tT,\n\tTRuntimeConfig & { autoIncrement: boolean },\n\t{},\n\t{ primaryKeyHasDefault: true }\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteBaseIntegerBuilder';\n\n\tconstructor(name: T['name'], dataType: T['dataType'], columnType: T['columnType']) {\n\t\tsuper(name, dataType, columnType);\n\t\tthis.config.autoIncrement = false;\n\t}\n\n\toverride primaryKey(config?: PrimaryKeyConfig): HasDefault<NotNull<this>> {\n\t\tif (config?.autoIncrement) {\n\t\t\tthis.config.autoIncrement = true;\n\t\t}\n\t\tthis.config.hasDefault = true;\n\t\treturn super.primaryKey() as HasDefault<NotNull<this>>;\n\t}\n\n\t/** @internal */\n\tabstract override build<TTableName extends string>(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteBaseInteger<MakeColumnConfig<T, TTableName>>;\n}\n\nexport abstract class SQLiteBaseInteger<\n\tT extends ColumnBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = object,\n> extends SQLiteColumn<T, TRuntimeConfig & { autoIncrement: boolean }> {\n\tstatic readonly [entityKind]: string = 'SQLiteBaseInteger';\n\n\treadonly autoIncrement: boolean = this.config.autoIncrement;\n\n\tgetSQLType(): string {\n\t\treturn 'integer';\n\t}\n}\n\nexport type SQLiteIntegerBuilderInitial<TName extends string> = SQLiteIntegerBuilder<{\n\tname: TName;\n\tdataType: 'number';\n\tcolumnType: 'SQLiteInteger';\n\tdata: number;\n\tdriverParam: number;\n\tenumValues: undefined;\n}>;\n\nexport class SQLiteIntegerBuilder<T extends ColumnBuilderBaseConfig<'number', 'SQLiteInteger'>>\n\textends SQLiteBaseIntegerBuilder<T>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteIntegerBuilder';\n\n\tconstructor(name: T['name']) {\n\t\tsuper(name, 'number', 'SQLiteInteger');\n\t}\n\n\tbuild<TTableName extends string>(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteInteger<MakeColumnConfig<T, TTableName>> {\n\t\treturn new SQLiteInteger<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 SQLiteInteger<T extends ColumnBaseConfig<'number', 'SQLiteInteger'>> extends SQLiteBaseInteger<T> {\n\tstatic readonly [entityKind]: string = 'SQLiteInteger';\n}\n\nexport type SQLiteTimestampBuilderInitial<TName extends string> = SQLiteTimestampBuilder<{\n\tname: TName;\n\tdataType: 'date';\n\tcolumnType: 'SQLiteTimestamp';\n\tdata: Date;\n\tdriverParam: number;\n\tenumValues: undefined;\n}>;\n\nexport class SQLiteTimestampBuilder<T extends ColumnBuilderBaseConfig<'date', 'SQLiteTimestamp'>>\n\textends SQLiteBaseIntegerBuilder<T, { mode: 'timestamp' | 'timestamp_ms' }>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteTimestampBuilder';\n\n\tconstructor(name: T['name'], mode: 'timestamp' | 'timestamp_ms') {\n\t\tsuper(name, 'date', 'SQLiteTimestamp');\n\t\tthis.config.mode = mode;\n\t}\n\n\t/**\n\t * @deprecated Use `default()` with your own expression instead.\n\t *\n\t * Adds `DEFAULT (cast((julianday('now') - 2440587.5)*86400000 as integer))` to the column, which is the current epoch timestamp in milliseconds.\n\t */\n\tdefaultNow(): HasDefault<this> {\n\t\treturn this.default(sql`(cast((julianday('now') - 2440587.5)*86400000 as integer))`) as any;\n\t}\n\n\tbuild<TTableName extends string>(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteTimestamp<MakeColumnConfig<T, TTableName>> {\n\t\treturn new SQLiteTimestamp<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 SQLiteTimestamp<T extends ColumnBaseConfig<'date', 'SQLiteTimestamp'>>\n\textends SQLiteBaseInteger<T, { mode: 'timestamp' | 'timestamp_ms' }>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteTimestamp';\n\n\treadonly mode: 'timestamp' | 'timestamp_ms' = this.config.mode;\n\n\toverride mapFromDriverValue(value: number): Date {\n\t\tif (this.config.mode === 'timestamp') {\n\t\t\treturn new Date(value * 1000);\n\t\t}\n\t\treturn new Date(value);\n\t}\n\n\toverride mapToDriverValue(value: Date): number {\n\t\tconst unix = value.getTime();\n\t\tif (this.config.mode === 'timestamp') {\n\t\t\treturn Math.floor(unix / 1000);\n\t\t}\n\t\treturn unix;\n\t}\n}\n\nexport type SQLiteBooleanBuilderInitial<TName extends string> = SQLiteBooleanBuilder<{\n\tname: TName;\n\tdataType: 'boolean';\n\tcolumnType: 'SQLiteBoolean';\n\tdata: boolean;\n\tdriverParam: number;\n\tenumValues: undefined;\n}>;\n\nexport class SQLiteBooleanBuilder<T extends ColumnBuilderBaseConfig<'boolean', 'SQLiteBoolean'>>\n\textends SQLiteBaseIntegerBuilder<T, { mode: 'boolean' }>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteBooleanBuilder';\n\n\tconstructor(name: T['name'], mode: 'boolean') {\n\t\tsuper(name, 'boolean', 'SQLiteBoolean');\n\t\tthis.config.mode = mode;\n\t}\n\n\tbuild<TTableName extends string>(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteBoolean<MakeColumnConfig<T, TTableName>> {\n\t\treturn new SQLiteBoolean<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 SQLiteBoolean<T extends ColumnBaseConfig<'boolean', 'SQLiteBoolean'>>\n\textends SQLiteBaseInteger<T, { mode: 'boolean' }>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteBoolean';\n\n\treadonly mode: 'boolean' = this.config.mode;\n\n\toverride mapFromDriverValue(value: number): boolean {\n\t\treturn Number(value) === 1;\n\t}\n\n\toverride mapToDriverValue(value: boolean): number {\n\t\treturn value ? 1 : 0;\n\t}\n}\n\nexport interface IntegerConfig<\n\tTMode extends 'number' | 'timestamp' | 'timestamp_ms' | 'boolean' =\n\t\t| 'number'\n\t\t| 'timestamp'\n\t\t| 'timestamp_ms'\n\t\t| 'boolean',\n> {\n\tmode: TMode;\n}\n\nexport function integer<TName extends string, TMode extends IntegerConfig['mode']>(\n\tname: TName,\n\tconfig?: IntegerConfig<TMode>,\n): Or<Equal<TMode, 'timestamp'>, Equal<TMode, 'timestamp_ms'>> extends true ? SQLiteTimestampBuilderInitial<TName>\n\t: Equal<TMode, 'boolean'> extends true ? SQLiteBooleanBuilderInitial<TName>\n\t: SQLiteIntegerBuilderInitial<TName>;\nexport function integer(name: string, config?: IntegerConfig) {\n\tif (config?.mode === 'timestamp' || config?.mode === 'timestamp_ms') {\n\t\treturn new SQLiteTimestampBuilder(name, config.mode);\n\t}\n\tif (config?.mode === 'boolean') {\n\t\treturn new SQLiteBooleanBuilder(name, config.mode);\n\t}\n\treturn new SQLiteIntegerBuilder(name);\n}\n\nexport const int = integer;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,oBAA2B;AAC3B,iBAAoB;AAIpB,oBAAkD;AAO3C,MAAe,iCAGZ,kCAKR;AAAA,EACD,QAAiB,wBAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB,UAAyB,YAA6B;AAClF,UAAM,MAAM,UAAU,UAAU;AAChC,SAAK,OAAO,gBAAgB;AAAA,EAC7B;AAAA,EAES,WAAW,QAAsD;AACzE,QAAI,QAAQ,eAAe;AAC1B,WAAK,OAAO,gBAAgB;AAAA,IAC7B;AACA,SAAK,OAAO,aAAa;AACzB,WAAO,MAAM,WAAW;AAAA,EACzB;AAMD;AAEO,MAAe,0BAGZ,2BAA6D;AAAA,EACtE,QAAiB,wBAAU,IAAY;AAAA,EAE9B,gBAAyB,KAAK,OAAO;AAAA,EAE9C,aAAqB;AACpB,WAAO;AAAA,EACR;AACD;AAWO,MAAM,6BACJ,yBACT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB;AAC5B,UAAM,MAAM,UAAU,eAAe;AAAA,EACtC;AAAA,EAEA,MACC,OACiD;AACjD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,sBAA6E,kBAAqB;AAAA,EAC9G,QAAiB,wBAAU,IAAY;AACxC;AAWO,MAAM,+BACJ,yBACT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB,MAAoC;AAChE,UAAM,MAAM,QAAQ,iBAAiB;AACrC,SAAK,OAAO,OAAO;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAA+B;AAC9B,WAAO,KAAK,QAAQ,0EAA+D;AAAA,EACpF;AAAA,EAEA,MACC,OACmD;AACnD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,wBACJ,kBACT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAE9B,OAAqC,KAAK,OAAO;AAAA,EAEjD,mBAAmB,OAAqB;AAChD,QAAI,KAAK,OAAO,SAAS,aAAa;AACrC,aAAO,IAAI,KAAK,QAAQ,GAAI;AAAA,IAC7B;AACA,WAAO,IAAI,KAAK,KAAK;AAAA,EACtB;AAAA,EAES,iBAAiB,OAAqB;AAC9C,UAAM,OAAO,MAAM,QAAQ;AAC3B,QAAI,KAAK,OAAO,SAAS,aAAa;AACrC,aAAO,KAAK,MAAM,OAAO,GAAI;AAAA,IAC9B;AACA,WAAO;AAAA,EACR;AACD;AAWO,MAAM,6BACJ,yBACT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB,MAAiB;AAC7C,UAAM,MAAM,WAAW,eAAe;AACtC,SAAK,OAAO,OAAO;AAAA,EACpB;AAAA,EAEA,MACC,OACiD;AACjD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,sBACJ,kBACT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAE9B,OAAkB,KAAK,OAAO;AAAA,EAE9B,mBAAmB,OAAwB;AACnD,WAAO,OAAO,KAAK,MAAM;AAAA,EAC1B;AAAA,EAES,iBAAiB,OAAwB;AACjD,WAAO,QAAQ,IAAI;AAAA,EACpB;AACD;AAkBO,SAAS,QAAQ,MAAc,QAAwB;AAC7D,MAAI,QAAQ,SAAS,eAAe,QAAQ,SAAS,gBAAgB;AACpE,WAAO,IAAI,uBAAuB,MAAM,OAAO,IAAI;AAAA,EACpD;AACA,MAAI,QAAQ,SAAS,WAAW;AAC/B,WAAO,IAAI,qBAAqB,MAAM,OAAO,IAAI;AAAA,EAClD;AACA,SAAO,IAAI,qBAAqB,IAAI;AACrC;AAEO,MAAM,MAAM;","names":[]}
1
+ {"version":3,"sources":["../../../src/sqlite-core/columns/integer.ts"],"sourcesContent":["import type {\n\tColumnBuilderBaseConfig,\n\tColumnBuilderRuntimeConfig,\n\tColumnDataType,\n\tHasDefault,\n\tMakeColumnConfig,\n\tNotNull,\n} from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport { sql } from '~/sql/sql.ts';\nimport type { OnConflict } from '~/sqlite-core/utils.ts';\nimport type { Equal, Or } from '~/utils.ts';\nimport type { AnySQLiteTable } from '../table.ts';\nimport { SQLiteColumn, SQLiteColumnBuilder } from './common.ts';\n\nexport interface PrimaryKeyConfig {\n\tautoIncrement?: boolean;\n\tonConflict?: OnConflict;\n}\n\nexport abstract class SQLiteBaseIntegerBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = object,\n> extends SQLiteColumnBuilder<\n\tT,\n\tTRuntimeConfig & { autoIncrement: boolean },\n\t{},\n\t{ primaryKeyHasDefault: true }\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteBaseIntegerBuilder';\n\n\tconstructor(name: T['name'], dataType: T['dataType'], columnType: T['columnType']) {\n\t\tsuper(name, dataType, columnType);\n\t\tthis.config.autoIncrement = false;\n\t}\n\n\toverride primaryKey(config?: PrimaryKeyConfig): HasDefault<NotNull<this>> {\n\t\tif (config?.autoIncrement) {\n\t\t\tthis.config.autoIncrement = true;\n\t\t}\n\t\tthis.config.hasDefault = true;\n\t\treturn super.primaryKey() as HasDefault<NotNull<this>>;\n\t}\n\n\t/** @internal */\n\tabstract override build<TTableName extends string>(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteBaseInteger<MakeColumnConfig<T, TTableName>>;\n}\n\nexport abstract class SQLiteBaseInteger<\n\tT extends ColumnBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = object,\n> extends SQLiteColumn<T, TRuntimeConfig & { autoIncrement: boolean }> {\n\tstatic readonly [entityKind]: string = 'SQLiteBaseInteger';\n\n\treadonly autoIncrement: boolean = this.config.autoIncrement;\n\n\tgetSQLType(): string {\n\t\treturn 'integer';\n\t}\n}\n\nexport type SQLiteIntegerBuilderInitial<TName extends string> = SQLiteIntegerBuilder<{\n\tname: TName;\n\tdataType: 'number';\n\tcolumnType: 'SQLiteInteger';\n\tdata: number;\n\tdriverParam: number;\n\tenumValues: undefined;\n\tgenerated: undefined;\n}>;\n\nexport class SQLiteIntegerBuilder<T extends ColumnBuilderBaseConfig<'number', 'SQLiteInteger'>>\n\textends SQLiteBaseIntegerBuilder<T>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteIntegerBuilder';\n\n\tconstructor(name: T['name']) {\n\t\tsuper(name, 'number', 'SQLiteInteger');\n\t}\n\n\tbuild<TTableName extends string>(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteInteger<MakeColumnConfig<T, TTableName>> {\n\t\treturn new SQLiteInteger<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 SQLiteInteger<T extends ColumnBaseConfig<'number', 'SQLiteInteger'>> extends SQLiteBaseInteger<T> {\n\tstatic readonly [entityKind]: string = 'SQLiteInteger';\n}\n\nexport type SQLiteTimestampBuilderInitial<TName extends string> = SQLiteTimestampBuilder<{\n\tname: TName;\n\tdataType: 'date';\n\tcolumnType: 'SQLiteTimestamp';\n\tdata: Date;\n\tdriverParam: number;\n\tenumValues: undefined;\n\tgenerated: undefined;\n}>;\n\nexport class SQLiteTimestampBuilder<T extends ColumnBuilderBaseConfig<'date', 'SQLiteTimestamp'>>\n\textends SQLiteBaseIntegerBuilder<T, { mode: 'timestamp' | 'timestamp_ms' }>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteTimestampBuilder';\n\n\tconstructor(name: T['name'], mode: 'timestamp' | 'timestamp_ms') {\n\t\tsuper(name, 'date', 'SQLiteTimestamp');\n\t\tthis.config.mode = mode;\n\t}\n\n\t/**\n\t * @deprecated Use `default()` with your own expression instead.\n\t *\n\t * Adds `DEFAULT (cast((julianday('now') - 2440587.5)*86400000 as integer))` to the column, which is the current epoch timestamp in milliseconds.\n\t */\n\tdefaultNow(): HasDefault<this> {\n\t\treturn this.default(sql`(cast((julianday('now') - 2440587.5)*86400000 as integer))`) as any;\n\t}\n\n\tbuild<TTableName extends string>(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteTimestamp<MakeColumnConfig<T, TTableName>> {\n\t\treturn new SQLiteTimestamp<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 SQLiteTimestamp<T extends ColumnBaseConfig<'date', 'SQLiteTimestamp'>>\n\textends SQLiteBaseInteger<T, { mode: 'timestamp' | 'timestamp_ms' }>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteTimestamp';\n\n\treadonly mode: 'timestamp' | 'timestamp_ms' = this.config.mode;\n\n\toverride mapFromDriverValue(value: number): Date {\n\t\tif (this.config.mode === 'timestamp') {\n\t\t\treturn new Date(value * 1000);\n\t\t}\n\t\treturn new Date(value);\n\t}\n\n\toverride mapToDriverValue(value: Date): number {\n\t\tconst unix = value.getTime();\n\t\tif (this.config.mode === 'timestamp') {\n\t\t\treturn Math.floor(unix / 1000);\n\t\t}\n\t\treturn unix;\n\t}\n}\n\nexport type SQLiteBooleanBuilderInitial<TName extends string> = SQLiteBooleanBuilder<{\n\tname: TName;\n\tdataType: 'boolean';\n\tcolumnType: 'SQLiteBoolean';\n\tdata: boolean;\n\tdriverParam: number;\n\tenumValues: undefined;\n\tgenerated: undefined;\n}>;\n\nexport class SQLiteBooleanBuilder<T extends ColumnBuilderBaseConfig<'boolean', 'SQLiteBoolean'>>\n\textends SQLiteBaseIntegerBuilder<T, { mode: 'boolean' }>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteBooleanBuilder';\n\n\tconstructor(name: T['name'], mode: 'boolean') {\n\t\tsuper(name, 'boolean', 'SQLiteBoolean');\n\t\tthis.config.mode = mode;\n\t}\n\n\tbuild<TTableName extends string>(\n\t\ttable: AnySQLiteTable<{ name: TTableName }>,\n\t): SQLiteBoolean<MakeColumnConfig<T, TTableName>> {\n\t\treturn new SQLiteBoolean<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 SQLiteBoolean<T extends ColumnBaseConfig<'boolean', 'SQLiteBoolean'>>\n\textends SQLiteBaseInteger<T, { mode: 'boolean' }>\n{\n\tstatic readonly [entityKind]: string = 'SQLiteBoolean';\n\n\treadonly mode: 'boolean' = this.config.mode;\n\n\toverride mapFromDriverValue(value: number): boolean {\n\t\treturn Number(value) === 1;\n\t}\n\n\toverride mapToDriverValue(value: boolean): number {\n\t\treturn value ? 1 : 0;\n\t}\n}\n\nexport interface IntegerConfig<\n\tTMode extends 'number' | 'timestamp' | 'timestamp_ms' | 'boolean' =\n\t\t| 'number'\n\t\t| 'timestamp'\n\t\t| 'timestamp_ms'\n\t\t| 'boolean',\n> {\n\tmode: TMode;\n}\n\nexport function integer<TName extends string, TMode extends IntegerConfig['mode']>(\n\tname: TName,\n\tconfig?: IntegerConfig<TMode>,\n): Or<Equal<TMode, 'timestamp'>, Equal<TMode, 'timestamp_ms'>> extends true ? SQLiteTimestampBuilderInitial<TName>\n\t: Equal<TMode, 'boolean'> extends true ? SQLiteBooleanBuilderInitial<TName>\n\t: SQLiteIntegerBuilderInitial<TName>;\nexport function integer(name: string, config?: IntegerConfig) {\n\tif (config?.mode === 'timestamp' || config?.mode === 'timestamp_ms') {\n\t\treturn new SQLiteTimestampBuilder(name, config.mode);\n\t}\n\tif (config?.mode === 'boolean') {\n\t\treturn new SQLiteBooleanBuilder(name, config.mode);\n\t}\n\treturn new SQLiteIntegerBuilder(name);\n}\n\nexport const int = integer;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,oBAA2B;AAC3B,iBAAoB;AAIpB,oBAAkD;AAO3C,MAAe,iCAGZ,kCAKR;AAAA,EACD,QAAiB,wBAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB,UAAyB,YAA6B;AAClF,UAAM,MAAM,UAAU,UAAU;AAChC,SAAK,OAAO,gBAAgB;AAAA,EAC7B;AAAA,EAES,WAAW,QAAsD;AACzE,QAAI,QAAQ,eAAe;AAC1B,WAAK,OAAO,gBAAgB;AAAA,IAC7B;AACA,SAAK,OAAO,aAAa;AACzB,WAAO,MAAM,WAAW;AAAA,EACzB;AAMD;AAEO,MAAe,0BAGZ,2BAA6D;AAAA,EACtE,QAAiB,wBAAU,IAAY;AAAA,EAE9B,gBAAyB,KAAK,OAAO;AAAA,EAE9C,aAAqB;AACpB,WAAO;AAAA,EACR;AACD;AAYO,MAAM,6BACJ,yBACT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB;AAC5B,UAAM,MAAM,UAAU,eAAe;AAAA,EACtC;AAAA,EAEA,MACC,OACiD;AACjD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,sBAA6E,kBAAqB;AAAA,EAC9G,QAAiB,wBAAU,IAAY;AACxC;AAYO,MAAM,+BACJ,yBACT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB,MAAoC;AAChE,UAAM,MAAM,QAAQ,iBAAiB;AACrC,SAAK,OAAO,OAAO;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAA+B;AAC9B,WAAO,KAAK,QAAQ,0EAA+D;AAAA,EACpF;AAAA,EAEA,MACC,OACmD;AACnD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,wBACJ,kBACT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAE9B,OAAqC,KAAK,OAAO;AAAA,EAEjD,mBAAmB,OAAqB;AAChD,QAAI,KAAK,OAAO,SAAS,aAAa;AACrC,aAAO,IAAI,KAAK,QAAQ,GAAI;AAAA,IAC7B;AACA,WAAO,IAAI,KAAK,KAAK;AAAA,EACtB;AAAA,EAES,iBAAiB,OAAqB;AAC9C,UAAM,OAAO,MAAM,QAAQ;AAC3B,QAAI,KAAK,OAAO,SAAS,aAAa;AACrC,aAAO,KAAK,MAAM,OAAO,GAAI;AAAA,IAC9B;AACA,WAAO;AAAA,EACR;AACD;AAYO,MAAM,6BACJ,yBACT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB,MAAiB;AAC7C,UAAM,MAAM,WAAW,eAAe;AACtC,SAAK,OAAO,OAAO;AAAA,EACpB;AAAA,EAEA,MACC,OACiD;AACjD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,sBACJ,kBACT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAE9B,OAAkB,KAAK,OAAO;AAAA,EAE9B,mBAAmB,OAAwB;AACnD,WAAO,OAAO,KAAK,MAAM;AAAA,EAC1B;AAAA,EAES,iBAAiB,OAAwB;AACjD,WAAO,QAAQ,IAAI;AAAA,EACpB;AACD;AAkBO,SAAS,QAAQ,MAAc,QAAwB;AAC7D,MAAI,QAAQ,SAAS,eAAe,QAAQ,SAAS,gBAAgB;AACpE,WAAO,IAAI,uBAAuB,MAAM,OAAO,IAAI;AAAA,EACpD;AACA,MAAI,QAAQ,SAAS,WAAW;AAC/B,WAAO,IAAI,qBAAqB,MAAM,OAAO,IAAI;AAAA,EAClD;AACA,SAAO,IAAI,qBAAqB,IAAI;AACrC;AAEO,MAAM,MAAM;","names":[]}