relq 1.0.0

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 (305) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +862 -0
  3. package/dist/addons/buffer.js +1869 -0
  4. package/dist/addons/pg-cursor.js +1425 -0
  5. package/dist/addons/pg-format.js +2248 -0
  6. package/dist/addons/pg.js +4790 -0
  7. package/dist/bin/relq.js +2 -0
  8. package/dist/cjs/cache/index.cjs +9 -0
  9. package/dist/cjs/cache/query-cache.cjs +311 -0
  10. package/dist/cjs/cli/commands/add.cjs +82 -0
  11. package/dist/cjs/cli/commands/commit.cjs +145 -0
  12. package/dist/cjs/cli/commands/diff.cjs +84 -0
  13. package/dist/cjs/cli/commands/export.cjs +333 -0
  14. package/dist/cjs/cli/commands/fetch.cjs +59 -0
  15. package/dist/cjs/cli/commands/generate.cjs +242 -0
  16. package/dist/cjs/cli/commands/history.cjs +165 -0
  17. package/dist/cjs/cli/commands/import.cjs +524 -0
  18. package/dist/cjs/cli/commands/init.cjs +437 -0
  19. package/dist/cjs/cli/commands/introspect.cjs +142 -0
  20. package/dist/cjs/cli/commands/log.cjs +62 -0
  21. package/dist/cjs/cli/commands/migrate.cjs +167 -0
  22. package/dist/cjs/cli/commands/pull.cjs +410 -0
  23. package/dist/cjs/cli/commands/push.cjs +165 -0
  24. package/dist/cjs/cli/commands/rollback.cjs +169 -0
  25. package/dist/cjs/cli/commands/status.cjs +110 -0
  26. package/dist/cjs/cli/commands/sync.cjs +79 -0
  27. package/dist/cjs/cli/index.cjs +275 -0
  28. package/dist/cjs/cli/utils/change-tracker.cjs +446 -0
  29. package/dist/cjs/cli/utils/commit-manager.cjs +239 -0
  30. package/dist/cjs/cli/utils/config-loader.cjs +127 -0
  31. package/dist/cjs/cli/utils/env-loader.cjs +62 -0
  32. package/dist/cjs/cli/utils/fast-introspect.cjs +398 -0
  33. package/dist/cjs/cli/utils/git-utils.cjs +404 -0
  34. package/dist/cjs/cli/utils/migration-generator.cjs +269 -0
  35. package/dist/cjs/cli/utils/relqignore.cjs +114 -0
  36. package/dist/cjs/cli/utils/repo-manager.cjs +515 -0
  37. package/dist/cjs/cli/utils/schema-comparator.cjs +313 -0
  38. package/dist/cjs/cli/utils/schema-diff.cjs +284 -0
  39. package/dist/cjs/cli/utils/schema-hash.cjs +108 -0
  40. package/dist/cjs/cli/utils/schema-introspect.cjs +455 -0
  41. package/dist/cjs/cli/utils/snapshot-manager.cjs +223 -0
  42. package/dist/cjs/cli/utils/spinner.cjs +108 -0
  43. package/dist/cjs/cli/utils/sql-generator.cjs +520 -0
  44. package/dist/cjs/cli/utils/sql-parser.cjs +999 -0
  45. package/dist/cjs/cli/utils/type-generator.cjs +2061 -0
  46. package/dist/cjs/condition/array-condition-builder.cjs +503 -0
  47. package/dist/cjs/condition/array-numeric-condition-builder.cjs +186 -0
  48. package/dist/cjs/condition/array-specialized-condition-builder.cjs +206 -0
  49. package/dist/cjs/condition/array-string-condition-builder.cjs +146 -0
  50. package/dist/cjs/condition/base-condition-builder.cjs +2 -0
  51. package/dist/cjs/condition/condition-collector.cjs +284 -0
  52. package/dist/cjs/condition/fulltext-condition-builder.cjs +61 -0
  53. package/dist/cjs/condition/geometric-condition-builder.cjs +208 -0
  54. package/dist/cjs/condition/index.cjs +25 -0
  55. package/dist/cjs/condition/jsonb-condition-builder.cjs +160 -0
  56. package/dist/cjs/condition/network-condition-builder.cjs +230 -0
  57. package/dist/cjs/condition/range-condition-builder.cjs +82 -0
  58. package/dist/cjs/config/config.cjs +190 -0
  59. package/dist/cjs/config/index.cjs +9 -0
  60. package/dist/cjs/constants/pg-values.cjs +68 -0
  61. package/dist/cjs/copy/copy-builder.cjs +316 -0
  62. package/dist/cjs/copy/index.cjs +6 -0
  63. package/dist/cjs/core/query-builder.cjs +440 -0
  64. package/dist/cjs/core/relq-client.cjs +1831 -0
  65. package/dist/cjs/core/typed-kuery-client.cjs +2 -0
  66. package/dist/cjs/count/count-builder.cjs +88 -0
  67. package/dist/cjs/count/index.cjs +5 -0
  68. package/dist/cjs/cte/cte-builder.cjs +89 -0
  69. package/dist/cjs/cte/index.cjs +5 -0
  70. package/dist/cjs/ddl/function.cjs +48 -0
  71. package/dist/cjs/ddl/index.cjs +7 -0
  72. package/dist/cjs/ddl/sql.cjs +54 -0
  73. package/dist/cjs/delete/delete-builder.cjs +135 -0
  74. package/dist/cjs/delete/index.cjs +5 -0
  75. package/dist/cjs/errors/relq-errors.cjs +329 -0
  76. package/dist/cjs/examples/fulltext-search-test.cjs +122 -0
  77. package/dist/cjs/explain/explain-builder.cjs +99 -0
  78. package/dist/cjs/explain/index.cjs +5 -0
  79. package/dist/cjs/function/create-function-builder.cjs +196 -0
  80. package/dist/cjs/function/index.cjs +6 -0
  81. package/dist/cjs/functions/advanced-functions.cjs +241 -0
  82. package/dist/cjs/functions/case-builder.cjs +66 -0
  83. package/dist/cjs/functions/geometric-functions.cjs +104 -0
  84. package/dist/cjs/functions/index.cjs +184 -0
  85. package/dist/cjs/functions/network-functions.cjs +86 -0
  86. package/dist/cjs/functions/sql-functions.cjs +431 -0
  87. package/dist/cjs/index.cjs +164 -0
  88. package/dist/cjs/indexing/create-index-builder.cjs +187 -0
  89. package/dist/cjs/indexing/drop-index-builder.cjs +89 -0
  90. package/dist/cjs/indexing/index-types.cjs +2 -0
  91. package/dist/cjs/indexing/index.cjs +8 -0
  92. package/dist/cjs/insert/conflict-builder.cjs +173 -0
  93. package/dist/cjs/insert/index.cjs +5 -0
  94. package/dist/cjs/insert/insert-builder.cjs +254 -0
  95. package/dist/cjs/introspect/index.cjs +229 -0
  96. package/dist/cjs/maintenance/index.cjs +6 -0
  97. package/dist/cjs/maintenance/vacuum-builder.cjs +166 -0
  98. package/dist/cjs/pubsub/index.cjs +7 -0
  99. package/dist/cjs/pubsub/listen-notify-builder.cjs +57 -0
  100. package/dist/cjs/pubsub/listener-connection.cjs +180 -0
  101. package/dist/cjs/raw/index.cjs +5 -0
  102. package/dist/cjs/raw/raw-query-builder.cjs +27 -0
  103. package/dist/cjs/schema/index.cjs +15 -0
  104. package/dist/cjs/schema/schema-builder.cjs +1167 -0
  105. package/dist/cjs/schema-builder.cjs +21 -0
  106. package/dist/cjs/schema-definition/column-types.cjs +829 -0
  107. package/dist/cjs/schema-definition/index.cjs +62 -0
  108. package/dist/cjs/schema-definition/introspection.cjs +620 -0
  109. package/dist/cjs/schema-definition/partitions.cjs +129 -0
  110. package/dist/cjs/schema-definition/pg-enum.cjs +76 -0
  111. package/dist/cjs/schema-definition/pg-function.cjs +91 -0
  112. package/dist/cjs/schema-definition/pg-sequence.cjs +56 -0
  113. package/dist/cjs/schema-definition/pg-trigger.cjs +108 -0
  114. package/dist/cjs/schema-definition/relations.cjs +98 -0
  115. package/dist/cjs/schema-definition/sql-expressions.cjs +202 -0
  116. package/dist/cjs/schema-definition/table-definition.cjs +636 -0
  117. package/dist/cjs/select/aggregate-builder.cjs +179 -0
  118. package/dist/cjs/select/index.cjs +5 -0
  119. package/dist/cjs/select/select-builder.cjs +233 -0
  120. package/dist/cjs/sequence/index.cjs +7 -0
  121. package/dist/cjs/sequence/sequence-builder.cjs +264 -0
  122. package/dist/cjs/table/alter-table-builder.cjs +146 -0
  123. package/dist/cjs/table/constraint-builder.cjs +102 -0
  124. package/dist/cjs/table/create-table-builder.cjs +248 -0
  125. package/dist/cjs/table/index.cjs +17 -0
  126. package/dist/cjs/table/partition-builder.cjs +131 -0
  127. package/dist/cjs/table/truncate-builder.cjs +70 -0
  128. package/dist/cjs/transaction/index.cjs +6 -0
  129. package/dist/cjs/transaction/transaction-builder.cjs +78 -0
  130. package/dist/cjs/trigger/create-trigger-builder.cjs +174 -0
  131. package/dist/cjs/trigger/index.cjs +6 -0
  132. package/dist/cjs/types/aggregate-types.cjs +2 -0
  133. package/dist/cjs/types/config-types.cjs +40 -0
  134. package/dist/cjs/types/inference-types.cjs +18 -0
  135. package/dist/cjs/types/pagination-types.cjs +7 -0
  136. package/dist/cjs/types/result-types.cjs +2 -0
  137. package/dist/cjs/types/schema-types.cjs +2 -0
  138. package/dist/cjs/types/subscription-types.cjs +2 -0
  139. package/dist/cjs/types.cjs +2 -0
  140. package/dist/cjs/update/array-update-builder.cjs +205 -0
  141. package/dist/cjs/update/index.cjs +13 -0
  142. package/dist/cjs/update/update-builder.cjs +195 -0
  143. package/dist/cjs/utils/case-converter.cjs +58 -0
  144. package/dist/cjs/utils/environment-detection.cjs +120 -0
  145. package/dist/cjs/utils/index.cjs +10 -0
  146. package/dist/cjs/utils/pool-defaults.cjs +106 -0
  147. package/dist/cjs/utils/type-coercion.cjs +118 -0
  148. package/dist/cjs/view/create-view-builder.cjs +180 -0
  149. package/dist/cjs/view/index.cjs +7 -0
  150. package/dist/cjs/window/index.cjs +5 -0
  151. package/dist/cjs/window/window-builder.cjs +80 -0
  152. package/dist/config.cjs +1 -0
  153. package/dist/config.d.ts +655 -0
  154. package/dist/config.js +1 -0
  155. package/dist/esm/cache/index.js +1 -0
  156. package/dist/esm/cache/query-cache.js +303 -0
  157. package/dist/esm/cli/commands/add.js +78 -0
  158. package/dist/esm/cli/commands/commit.js +109 -0
  159. package/dist/esm/cli/commands/diff.js +81 -0
  160. package/dist/esm/cli/commands/export.js +297 -0
  161. package/dist/esm/cli/commands/fetch.js +56 -0
  162. package/dist/esm/cli/commands/generate.js +206 -0
  163. package/dist/esm/cli/commands/history.js +129 -0
  164. package/dist/esm/cli/commands/import.js +488 -0
  165. package/dist/esm/cli/commands/init.js +401 -0
  166. package/dist/esm/cli/commands/introspect.js +106 -0
  167. package/dist/esm/cli/commands/log.js +59 -0
  168. package/dist/esm/cli/commands/migrate.js +131 -0
  169. package/dist/esm/cli/commands/pull.js +374 -0
  170. package/dist/esm/cli/commands/push.js +129 -0
  171. package/dist/esm/cli/commands/rollback.js +133 -0
  172. package/dist/esm/cli/commands/status.js +107 -0
  173. package/dist/esm/cli/commands/sync.js +76 -0
  174. package/dist/esm/cli/index.js +240 -0
  175. package/dist/esm/cli/utils/change-tracker.js +405 -0
  176. package/dist/esm/cli/utils/commit-manager.js +191 -0
  177. package/dist/esm/cli/utils/config-loader.js +86 -0
  178. package/dist/esm/cli/utils/env-loader.js +57 -0
  179. package/dist/esm/cli/utils/fast-introspect.js +362 -0
  180. package/dist/esm/cli/utils/git-utils.js +347 -0
  181. package/dist/esm/cli/utils/migration-generator.js +263 -0
  182. package/dist/esm/cli/utils/relqignore.js +74 -0
  183. package/dist/esm/cli/utils/repo-manager.js +444 -0
  184. package/dist/esm/cli/utils/schema-comparator.js +307 -0
  185. package/dist/esm/cli/utils/schema-diff.js +276 -0
  186. package/dist/esm/cli/utils/schema-hash.js +69 -0
  187. package/dist/esm/cli/utils/schema-introspect.js +418 -0
  188. package/dist/esm/cli/utils/snapshot-manager.js +179 -0
  189. package/dist/esm/cli/utils/spinner.js +101 -0
  190. package/dist/esm/cli/utils/sql-generator.js +504 -0
  191. package/dist/esm/cli/utils/sql-parser.js +992 -0
  192. package/dist/esm/cli/utils/type-generator.js +2058 -0
  193. package/dist/esm/condition/array-condition-builder.js +495 -0
  194. package/dist/esm/condition/array-numeric-condition-builder.js +182 -0
  195. package/dist/esm/condition/array-specialized-condition-builder.js +200 -0
  196. package/dist/esm/condition/array-string-condition-builder.js +142 -0
  197. package/dist/esm/condition/base-condition-builder.js +1 -0
  198. package/dist/esm/condition/condition-collector.js +275 -0
  199. package/dist/esm/condition/fulltext-condition-builder.js +53 -0
  200. package/dist/esm/condition/geometric-condition-builder.js +200 -0
  201. package/dist/esm/condition/index.js +7 -0
  202. package/dist/esm/condition/jsonb-condition-builder.js +152 -0
  203. package/dist/esm/condition/network-condition-builder.js +222 -0
  204. package/dist/esm/condition/range-condition-builder.js +74 -0
  205. package/dist/esm/config/config.js +150 -0
  206. package/dist/esm/config/index.js +1 -0
  207. package/dist/esm/constants/pg-values.js +63 -0
  208. package/dist/esm/copy/copy-builder.js +308 -0
  209. package/dist/esm/copy/index.js +1 -0
  210. package/dist/esm/core/query-builder.js +426 -0
  211. package/dist/esm/core/relq-client.js +1791 -0
  212. package/dist/esm/core/typed-kuery-client.js +1 -0
  213. package/dist/esm/count/count-builder.js +81 -0
  214. package/dist/esm/count/index.js +1 -0
  215. package/dist/esm/cte/cte-builder.js +82 -0
  216. package/dist/esm/cte/index.js +1 -0
  217. package/dist/esm/ddl/function.js +45 -0
  218. package/dist/esm/ddl/index.js +2 -0
  219. package/dist/esm/ddl/sql.js +51 -0
  220. package/dist/esm/delete/delete-builder.js +128 -0
  221. package/dist/esm/delete/index.js +1 -0
  222. package/dist/esm/errors/relq-errors.js +310 -0
  223. package/dist/esm/examples/fulltext-search-test.js +117 -0
  224. package/dist/esm/explain/explain-builder.js +95 -0
  225. package/dist/esm/explain/index.js +1 -0
  226. package/dist/esm/function/create-function-builder.js +188 -0
  227. package/dist/esm/function/index.js +1 -0
  228. package/dist/esm/functions/advanced-functions.js +231 -0
  229. package/dist/esm/functions/case-builder.js +58 -0
  230. package/dist/esm/functions/geometric-functions.js +97 -0
  231. package/dist/esm/functions/index.js +171 -0
  232. package/dist/esm/functions/network-functions.js +79 -0
  233. package/dist/esm/functions/sql-functions.js +421 -0
  234. package/dist/esm/index.js +34 -0
  235. package/dist/esm/indexing/create-index-builder.js +180 -0
  236. package/dist/esm/indexing/drop-index-builder.js +81 -0
  237. package/dist/esm/indexing/index-types.js +1 -0
  238. package/dist/esm/indexing/index.js +2 -0
  239. package/dist/esm/insert/conflict-builder.js +162 -0
  240. package/dist/esm/insert/index.js +1 -0
  241. package/dist/esm/insert/insert-builder.js +247 -0
  242. package/dist/esm/introspect/index.js +224 -0
  243. package/dist/esm/maintenance/index.js +1 -0
  244. package/dist/esm/maintenance/vacuum-builder.js +158 -0
  245. package/dist/esm/pubsub/index.js +1 -0
  246. package/dist/esm/pubsub/listen-notify-builder.js +48 -0
  247. package/dist/esm/pubsub/listener-connection.js +173 -0
  248. package/dist/esm/raw/index.js +1 -0
  249. package/dist/esm/raw/raw-query-builder.js +20 -0
  250. package/dist/esm/schema/index.js +1 -0
  251. package/dist/esm/schema/schema-builder.js +1150 -0
  252. package/dist/esm/schema-builder.js +2 -0
  253. package/dist/esm/schema-definition/column-types.js +738 -0
  254. package/dist/esm/schema-definition/index.js +10 -0
  255. package/dist/esm/schema-definition/introspection.js +614 -0
  256. package/dist/esm/schema-definition/partitions.js +123 -0
  257. package/dist/esm/schema-definition/pg-enum.js +70 -0
  258. package/dist/esm/schema-definition/pg-function.js +85 -0
  259. package/dist/esm/schema-definition/pg-sequence.js +50 -0
  260. package/dist/esm/schema-definition/pg-trigger.js +102 -0
  261. package/dist/esm/schema-definition/relations.js +90 -0
  262. package/dist/esm/schema-definition/sql-expressions.js +193 -0
  263. package/dist/esm/schema-definition/table-definition.js +630 -0
  264. package/dist/esm/select/aggregate-builder.js +172 -0
  265. package/dist/esm/select/index.js +1 -0
  266. package/dist/esm/select/select-builder.js +226 -0
  267. package/dist/esm/sequence/index.js +1 -0
  268. package/dist/esm/sequence/sequence-builder.js +255 -0
  269. package/dist/esm/table/alter-table-builder.js +138 -0
  270. package/dist/esm/table/constraint-builder.js +95 -0
  271. package/dist/esm/table/create-table-builder.js +241 -0
  272. package/dist/esm/table/index.js +5 -0
  273. package/dist/esm/table/partition-builder.js +121 -0
  274. package/dist/esm/table/truncate-builder.js +63 -0
  275. package/dist/esm/transaction/index.js +1 -0
  276. package/dist/esm/transaction/transaction-builder.js +70 -0
  277. package/dist/esm/trigger/create-trigger-builder.js +166 -0
  278. package/dist/esm/trigger/index.js +1 -0
  279. package/dist/esm/types/aggregate-types.js +1 -0
  280. package/dist/esm/types/config-types.js +36 -0
  281. package/dist/esm/types/inference-types.js +12 -0
  282. package/dist/esm/types/pagination-types.js +4 -0
  283. package/dist/esm/types/result-types.js +1 -0
  284. package/dist/esm/types/schema-types.js +1 -0
  285. package/dist/esm/types/subscription-types.js +1 -0
  286. package/dist/esm/types.js +1 -0
  287. package/dist/esm/update/array-update-builder.js +192 -0
  288. package/dist/esm/update/index.js +2 -0
  289. package/dist/esm/update/update-builder.js +188 -0
  290. package/dist/esm/utils/case-converter.js +55 -0
  291. package/dist/esm/utils/environment-detection.js +113 -0
  292. package/dist/esm/utils/index.js +2 -0
  293. package/dist/esm/utils/pool-defaults.js +100 -0
  294. package/dist/esm/utils/type-coercion.js +110 -0
  295. package/dist/esm/view/create-view-builder.js +171 -0
  296. package/dist/esm/view/index.js +1 -0
  297. package/dist/esm/window/index.js +1 -0
  298. package/dist/esm/window/window-builder.js +73 -0
  299. package/dist/index.cjs +1 -0
  300. package/dist/index.d.ts +10341 -0
  301. package/dist/index.js +1 -0
  302. package/dist/schema-builder.cjs +1 -0
  303. package/dist/schema-builder.d.ts +2272 -0
  304. package/dist/schema-builder.js +1 -0
  305. package/package.json +55 -0
@@ -0,0 +1,231 @@
1
+ import format from "../../addons/pg-format.js";
2
+ import { SqlFunction } from "./sql-functions.js";
3
+ export class ArrayFunctions {
4
+ static array_length(array, dimension = 1) {
5
+ return new SqlFunction(format('array_length(%I, %s)', array, dimension));
6
+ }
7
+ static array_append(array, element) {
8
+ return new SqlFunction(format('array_append(%I, %L)', array, element));
9
+ }
10
+ static array_prepend(element, array) {
11
+ return new SqlFunction(format('array_prepend(%L, %I)', element, array));
12
+ }
13
+ static array_cat(array1, array2) {
14
+ return new SqlFunction(format('array_cat(%I, %I)', array1, array2));
15
+ }
16
+ static array_remove(array, element) {
17
+ return new SqlFunction(format('array_remove(%I, %L)', array, element));
18
+ }
19
+ static array_replace(array, from, to) {
20
+ return new SqlFunction(format('array_replace(%I, %L, %L)', array, from, to));
21
+ }
22
+ static array_position(array, element) {
23
+ return new SqlFunction(format('array_position(%I, %L)', array, element));
24
+ }
25
+ static array_positions(array, element) {
26
+ return new SqlFunction(format('array_positions(%I, %L)', array, element));
27
+ }
28
+ static array_dims(array) {
29
+ return new SqlFunction(format('array_dims(%I)', array));
30
+ }
31
+ static array_lower(array, dimension) {
32
+ return new SqlFunction(format('array_lower(%I, %s)', array, dimension));
33
+ }
34
+ static array_upper(array, dimension) {
35
+ return new SqlFunction(format('array_upper(%I, %s)', array, dimension));
36
+ }
37
+ static cardinality(array) {
38
+ return new SqlFunction(format('cardinality(%I)', array));
39
+ }
40
+ static array_to_string(array, delimiter, nullString) {
41
+ if (nullString !== undefined) {
42
+ return new SqlFunction(format('array_to_string(%I, %L, %L)', array, delimiter, nullString));
43
+ }
44
+ return new SqlFunction(format('array_to_string(%I, %L)', array, delimiter));
45
+ }
46
+ static string_to_array(str, delimiter, nullString) {
47
+ if (nullString !== undefined) {
48
+ return new SqlFunction(format('string_to_array(%I, %L, %L)', str, delimiter, nullString));
49
+ }
50
+ return new SqlFunction(format('string_to_array(%I, %L)', str, delimiter));
51
+ }
52
+ static unnest(array) {
53
+ return new SqlFunction(format('unnest(%I)', array));
54
+ }
55
+ static array_fill(value, dimensions) {
56
+ const dims = format('%L', dimensions);
57
+ return new SqlFunction(format('array_fill(%L, %s)', value, dims));
58
+ }
59
+ static array_agg(expression) {
60
+ return new SqlFunction(format('array_agg(%I)', expression));
61
+ }
62
+ static array_agg_order(expression, orderBy, direction = 'ASC') {
63
+ return new SqlFunction(format('array_agg(%I ORDER BY %I %s)', expression, orderBy, direction));
64
+ }
65
+ }
66
+ export class JsonbFunctions {
67
+ static jsonb_array_length(jsonb) {
68
+ return new SqlFunction(format('jsonb_array_length(%I)', jsonb));
69
+ }
70
+ static jsonb_each(jsonb) {
71
+ return new SqlFunction(format('jsonb_each(%I)', jsonb));
72
+ }
73
+ static jsonb_each_text(jsonb) {
74
+ return new SqlFunction(format('jsonb_each_text(%I)', jsonb));
75
+ }
76
+ static jsonb_object_keys(jsonb) {
77
+ return new SqlFunction(format('jsonb_object_keys(%I)', jsonb));
78
+ }
79
+ static jsonb_array_elements(jsonb) {
80
+ return new SqlFunction(format('jsonb_array_elements(%I)', jsonb));
81
+ }
82
+ static jsonb_array_elements_text(jsonb) {
83
+ return new SqlFunction(format('jsonb_array_elements_text(%I)', jsonb));
84
+ }
85
+ static jsonb_typeof(jsonb) {
86
+ return new SqlFunction(format('jsonb_typeof(%I)', jsonb));
87
+ }
88
+ static jsonb_strip_nulls(jsonb) {
89
+ return new SqlFunction(format('jsonb_strip_nulls(%I)', jsonb));
90
+ }
91
+ static jsonb_pretty(jsonb) {
92
+ return new SqlFunction(format('jsonb_pretty(%I)', jsonb));
93
+ }
94
+ static jsonb_set(target, path, newValue, createMissing = true) {
95
+ const pathStr = format('%L', `{${path.join(',')}}`);
96
+ const valueStr = format('%L', JSON.stringify(newValue));
97
+ return new SqlFunction(format('jsonb_set(%I, %s, %s, %s)', target, pathStr, valueStr, createMissing));
98
+ }
99
+ static jsonb_insert(target, path, newValue, insertAfter = false) {
100
+ const pathStr = format('%L', `{${path.join(',')}}`);
101
+ const valueStr = format('%L', JSON.stringify(newValue));
102
+ return new SqlFunction(format('jsonb_insert(%I, %s, %s, %s)', target, pathStr, valueStr, insertAfter));
103
+ }
104
+ static jsonb_build_object(...keyValuePairs) {
105
+ const args = keyValuePairs.map((v, idx) => idx % 2 === 0
106
+ ? format('%L', v)
107
+ : (typeof v === 'string' && /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(v))
108
+ ? format.ident(v)
109
+ : format('%L', v)).join(', ');
110
+ return new SqlFunction(`jsonb_build_object(${args})`);
111
+ }
112
+ static jsonb_build_array(...values) {
113
+ const args = values.map(v => typeof v === 'string' && /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(v)
114
+ ? format.ident(v)
115
+ : format('%L', v)).join(', ');
116
+ return new SqlFunction(`jsonb_build_array(${args})`);
117
+ }
118
+ static jsonb_to_text(jsonb) {
119
+ return new SqlFunction(format('%I::text', jsonb));
120
+ }
121
+ static text_to_jsonb(text) {
122
+ return new SqlFunction(format('%I::jsonb', text));
123
+ }
124
+ static jsonb_agg(expression) {
125
+ return new SqlFunction(format('jsonb_agg(%I)', expression));
126
+ }
127
+ static jsonb_object_agg(keys, values) {
128
+ return new SqlFunction(format('jsonb_object_agg(%I, %I)', keys, values));
129
+ }
130
+ }
131
+ export class AggregateFunctions {
132
+ static count(expression = '*') {
133
+ if (expression === '*') {
134
+ return new SqlFunction('COUNT(*)');
135
+ }
136
+ return new SqlFunction(format('COUNT(%I)', expression));
137
+ }
138
+ static count_distinct(expression) {
139
+ return new SqlFunction(format('COUNT(DISTINCT %I)', expression));
140
+ }
141
+ static sum(expression) {
142
+ return new SqlFunction(format('SUM(%I)', expression));
143
+ }
144
+ static avg(expression) {
145
+ return new SqlFunction(format('AVG(%I)', expression));
146
+ }
147
+ static min(expression) {
148
+ return new SqlFunction(format('MIN(%I)', expression));
149
+ }
150
+ static max(expression) {
151
+ return new SqlFunction(format('MAX(%I)', expression));
152
+ }
153
+ static string_agg(expression, delimiter) {
154
+ return new SqlFunction(format('string_agg(%I, %L)', expression, delimiter));
155
+ }
156
+ static string_agg_order(expression, delimiter, orderBy, direction = 'ASC') {
157
+ return new SqlFunction(format('string_agg(%I, %L ORDER BY %I %s)', expression, delimiter, orderBy, direction));
158
+ }
159
+ static bool_and(expression) {
160
+ return new SqlFunction(format('bool_and(%I)', expression));
161
+ }
162
+ static bool_or(expression) {
163
+ return new SqlFunction(format('bool_or(%I)', expression));
164
+ }
165
+ static every(expression) {
166
+ return new SqlFunction(format('every(%I)', expression));
167
+ }
168
+ static bit_and(expression) {
169
+ return new SqlFunction(format('bit_and(%I)', expression));
170
+ }
171
+ static bit_or(expression) {
172
+ return new SqlFunction(format('bit_or(%I)', expression));
173
+ }
174
+ static stddev_pop(expression) {
175
+ return new SqlFunction(format('stddev_pop(%I)', expression));
176
+ }
177
+ static stddev_samp(expression) {
178
+ return new SqlFunction(format('stddev_samp(%I)', expression));
179
+ }
180
+ static stddev(expression) {
181
+ return this.stddev_samp(expression);
182
+ }
183
+ static var_pop(expression) {
184
+ return new SqlFunction(format('var_pop(%I)', expression));
185
+ }
186
+ static var_samp(expression) {
187
+ return new SqlFunction(format('var_samp(%I)', expression));
188
+ }
189
+ static variance(expression) {
190
+ return this.var_samp(expression);
191
+ }
192
+ static corr(y, x) {
193
+ return new SqlFunction(format('corr(%I, %I)', y, x));
194
+ }
195
+ static covar_pop(y, x) {
196
+ return new SqlFunction(format('covar_pop(%I, %I)', y, x));
197
+ }
198
+ static covar_samp(y, x) {
199
+ return new SqlFunction(format('covar_samp(%I, %I)', y, x));
200
+ }
201
+ static percentile_cont(percentile, expression) {
202
+ return new SqlFunction(format('percentile_cont(%s) WITHIN GROUP (ORDER BY %I)', percentile, expression));
203
+ }
204
+ static percentile_disc(percentile, expression) {
205
+ return new SqlFunction(format('percentile_disc(%s) WITHIN GROUP (ORDER BY %I)', percentile, expression));
206
+ }
207
+ static mode(expression) {
208
+ return new SqlFunction(format('mode() WITHIN GROUP (ORDER BY %I)', expression));
209
+ }
210
+ }
211
+ export class ConditionalFunctions {
212
+ static coalesce(...values) {
213
+ const args = values.map(v => typeof v === 'string' && /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(v)
214
+ ? format.ident(v)
215
+ : format('%L', v)).join(', ');
216
+ return new SqlFunction(`COALESCE(${args})`);
217
+ }
218
+ static nullif(value1, value2) {
219
+ const arg1 = typeof value1 === 'string' && /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(value1)
220
+ ? format.ident(value1)
221
+ : format('%L', value1);
222
+ const arg2 = typeof value2 === 'string' && /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(value2)
223
+ ? format.ident(value2)
224
+ : format('%L', value2);
225
+ return new SqlFunction(`NULLIF(${arg1}, ${arg2})`);
226
+ }
227
+ }
228
+ export { ArrayFunctions as Array };
229
+ export { JsonbFunctions as Jsonb };
230
+ export { AggregateFunctions as Aggregate };
231
+ export { ConditionalFunctions as Conditional };
@@ -0,0 +1,58 @@
1
+ import format from "../../addons/pg-format.js";
2
+ export class CaseBuilder {
3
+ expression;
4
+ whenClauses = [];
5
+ elseResult;
6
+ constructor(expression) {
7
+ this.expression = expression;
8
+ }
9
+ when(condition, result) {
10
+ this.whenClauses.push({
11
+ condition: String(condition),
12
+ result
13
+ });
14
+ return this;
15
+ }
16
+ else(result) {
17
+ this.elseResult = result;
18
+ return this;
19
+ }
20
+ build() {
21
+ let sql = 'CASE';
22
+ if (this.expression) {
23
+ sql += ` ${format.ident(this.expression)}`;
24
+ }
25
+ for (const clause of this.whenClauses) {
26
+ if (this.expression) {
27
+ sql += ` WHEN ${format('%L', clause.condition)} THEN ${this.formatValue(clause.result)}`;
28
+ }
29
+ else {
30
+ sql += ` WHEN ${clause.condition} THEN ${this.formatValue(clause.result)}`;
31
+ }
32
+ }
33
+ if (this.elseResult !== undefined) {
34
+ sql += ` ELSE ${this.formatValue(this.elseResult)}`;
35
+ }
36
+ sql += ' END';
37
+ return sql;
38
+ }
39
+ as(alias) {
40
+ return `${this.build()} AS ${format.ident(alias)}`;
41
+ }
42
+ toString() {
43
+ return this.build();
44
+ }
45
+ formatValue(value) {
46
+ if (value === null) {
47
+ return 'NULL';
48
+ }
49
+ if (typeof value === 'string' && /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(value)) {
50
+ return format.ident(value);
51
+ }
52
+ return format('%L', value);
53
+ }
54
+ }
55
+ export function Case(expression) {
56
+ return new CaseBuilder(expression);
57
+ }
58
+ export default Case;
@@ -0,0 +1,97 @@
1
+ import format from "../../addons/pg-format.js";
2
+ import { SqlFunction } from "./sql-functions.js";
3
+ export class GeometricFunctions {
4
+ static area(column) {
5
+ return new SqlFunction(format('area(%I)', column));
6
+ }
7
+ static center(column) {
8
+ return new SqlFunction(format('center(%I)', column));
9
+ }
10
+ static diameter(column) {
11
+ return new SqlFunction(format('diameter(%I)', column));
12
+ }
13
+ static height(column) {
14
+ return new SqlFunction(format('height(%I)', column));
15
+ }
16
+ static width(column) {
17
+ return new SqlFunction(format('width(%I)', column));
18
+ }
19
+ static geoLength(column) {
20
+ return new SqlFunction(format('length(%I)', column));
21
+ }
22
+ static npoints(column) {
23
+ return new SqlFunction(format('npoints(%I)', column));
24
+ }
25
+ static isclosed(column) {
26
+ return new SqlFunction(format('isclosed(%I)', column));
27
+ }
28
+ static isopen(column) {
29
+ return new SqlFunction(format('isopen(%I)', column));
30
+ }
31
+ static pclose(column) {
32
+ return new SqlFunction(format('pclose(%I)', column));
33
+ }
34
+ static popen(column) {
35
+ return new SqlFunction(format('popen(%I)', column));
36
+ }
37
+ static radius(column) {
38
+ return new SqlFunction(format('radius(%I)', column));
39
+ }
40
+ static slope(point1, point2) {
41
+ return new SqlFunction(format('slope(%I, %I)', point1, point2));
42
+ }
43
+ static distance(column, value) {
44
+ return new SqlFunction(format('%I <-> %L', column, value));
45
+ }
46
+ static toBox(column) {
47
+ return new SqlFunction(format('box(%I)', column));
48
+ }
49
+ static toCircle(column) {
50
+ return new SqlFunction(format('circle(%I)', column));
51
+ }
52
+ static toLine(point1, point2) {
53
+ return new SqlFunction(format('line(%I, %I)', point1, point2));
54
+ }
55
+ static toLseg(point1, point2) {
56
+ return new SqlFunction(format('lseg(%I, %I)', point1, point2));
57
+ }
58
+ static toPath(column) {
59
+ return new SqlFunction(format('path(%I)', column));
60
+ }
61
+ static toPoint(column) {
62
+ return new SqlFunction(format('point(%I)', column));
63
+ }
64
+ static toPolygon(column) {
65
+ return new SqlFunction(format('polygon(%I)', column));
66
+ }
67
+ static point(x, y) {
68
+ if (typeof x === 'string' && typeof y === 'string') {
69
+ return new SqlFunction(format('point(%I, %I)', x, y));
70
+ }
71
+ return new SqlFunction(format('point(%s, %s)', x, y));
72
+ }
73
+ static box(point1, point2) {
74
+ return new SqlFunction(format('box(%I, %I)', point1, point2));
75
+ }
76
+ static circle(center, radius) {
77
+ return new SqlFunction(format('circle(%I, %s)', center, radius));
78
+ }
79
+ static translate(column, offset) {
80
+ return new SqlFunction(format('%I + point %L', column, offset));
81
+ }
82
+ static scale(column, factor) {
83
+ return new SqlFunction(format('%I * point %L', column, factor));
84
+ }
85
+ static rotate(column, rotation) {
86
+ return new SqlFunction(format('%I / point %L', column, rotation));
87
+ }
88
+ static intersection(line1, line2) {
89
+ return new SqlFunction(format('%I # %I', line1, line2));
90
+ }
91
+ static closestPoint(lseg, point) {
92
+ return new SqlFunction(format('%I ## %I', lseg, point));
93
+ }
94
+ static boundingBox(column) {
95
+ return new SqlFunction(format('box(%I)', column));
96
+ }
97
+ }
@@ -0,0 +1,171 @@
1
+ export { SqlFunction } from "./sql-functions.js";
2
+ import { StringFunctions, DateTimeFunctions, MathFunctions } from "./sql-functions.js";
3
+ import { ArrayFunctions, JsonbFunctions, AggregateFunctions, ConditionalFunctions } from "./advanced-functions.js";
4
+ import { GeometricFunctions } from "./geometric-functions.js";
5
+ import { NetworkFunctions } from "./network-functions.js";
6
+ export class F {
7
+ static concat = StringFunctions.concat;
8
+ static concat_ws = StringFunctions.concat_ws;
9
+ static lower = StringFunctions.lower;
10
+ static upper = StringFunctions.upper;
11
+ static initcap = StringFunctions.initcap;
12
+ static substring = StringFunctions.substring;
13
+ static substr = StringFunctions.substr;
14
+ static strLength = StringFunctions.length;
15
+ static char_length = StringFunctions.char_length;
16
+ static octet_length = StringFunctions.octet_length;
17
+ static bit_length = StringFunctions.bit_length;
18
+ static trim = StringFunctions.trim;
19
+ static ltrim = StringFunctions.ltrim;
20
+ static rtrim = StringFunctions.rtrim;
21
+ static btrim = StringFunctions.btrim;
22
+ static position = StringFunctions.position;
23
+ static strpos = StringFunctions.strpos;
24
+ static replace = StringFunctions.replace;
25
+ static translate = StringFunctions.translate;
26
+ static repeat = StringFunctions.repeat;
27
+ static lpad = StringFunctions.lpad;
28
+ static rpad = StringFunctions.rpad;
29
+ static reverse = StringFunctions.reverse;
30
+ static split_part = StringFunctions.split_part;
31
+ static regexp_match = StringFunctions.regexp_match;
32
+ static regexp_matches = StringFunctions.regexp_matches;
33
+ static regexp_replace = StringFunctions.regexp_replace;
34
+ static regexp_split_to_array = StringFunctions.regexp_split_to_array;
35
+ static regexp_split_to_table = StringFunctions.regexp_split_to_table;
36
+ static encode = StringFunctions.encode;
37
+ static decode = StringFunctions.decode;
38
+ static md5 = StringFunctions.md5;
39
+ static ascii = StringFunctions.ascii;
40
+ static chr = StringFunctions.chr;
41
+ static to_hex = StringFunctions.to_hex;
42
+ static lpad_zero = StringFunctions.lpad_zero;
43
+ static format = StringFunctions.format;
44
+ static quote_ident = StringFunctions.quote_ident;
45
+ static quote_literal = StringFunctions.quote_literal;
46
+ static quote_nullable = StringFunctions.quote_nullable;
47
+ static now = DateTimeFunctions.now;
48
+ static current_date = DateTimeFunctions.current_date;
49
+ static current_time = DateTimeFunctions.current_time;
50
+ static current_timestamp = DateTimeFunctions.current_timestamp;
51
+ static transaction_timestamp = DateTimeFunctions.transaction_timestamp;
52
+ static statement_timestamp = DateTimeFunctions.statement_timestamp;
53
+ static clock_timestamp = DateTimeFunctions.clock_timestamp;
54
+ static localtimestamp = DateTimeFunctions.localtimestamp;
55
+ static date_trunc = DateTimeFunctions.date_trunc;
56
+ static extract = DateTimeFunctions.extract;
57
+ static date_part = DateTimeFunctions.date_part;
58
+ static age = DateTimeFunctions.age;
59
+ static make_date = DateTimeFunctions.make_date;
60
+ static make_time = DateTimeFunctions.make_time;
61
+ static make_timestamp = DateTimeFunctions.make_timestamp;
62
+ static make_interval = DateTimeFunctions.make_interval;
63
+ static to_timestamp = DateTimeFunctions.to_timestamp;
64
+ static to_timestamp_format = DateTimeFunctions.to_timestamp_format;
65
+ static to_date = DateTimeFunctions.to_date;
66
+ static to_char = DateTimeFunctions.to_char;
67
+ static timezone = DateTimeFunctions.timezone;
68
+ static justify_days = DateTimeFunctions.justify_days;
69
+ static justify_hours = DateTimeFunctions.justify_hours;
70
+ static justify_interval = DateTimeFunctions.justify_interval;
71
+ static isfinite = DateTimeFunctions.isfinite;
72
+ static abs = MathFunctions.abs;
73
+ static sign = MathFunctions.sign;
74
+ static ceil = MathFunctions.ceil;
75
+ static ceiling = MathFunctions.ceiling;
76
+ static floor = MathFunctions.floor;
77
+ static round = MathFunctions.round;
78
+ static trunc = MathFunctions.trunc;
79
+ static mod = MathFunctions.mod;
80
+ static div = MathFunctions.div;
81
+ static power = MathFunctions.power;
82
+ static sqrt = MathFunctions.sqrt;
83
+ static cbrt = MathFunctions.cbrt;
84
+ static exp = MathFunctions.exp;
85
+ static ln = MathFunctions.ln;
86
+ static log10 = MathFunctions.log10;
87
+ static log = MathFunctions.log;
88
+ static pi = MathFunctions.pi;
89
+ static degrees = MathFunctions.degrees;
90
+ static radians = MathFunctions.radians;
91
+ static sin = MathFunctions.sin;
92
+ static cos = MathFunctions.cos;
93
+ static tan = MathFunctions.tan;
94
+ static asin = MathFunctions.asin;
95
+ static acos = MathFunctions.acos;
96
+ static atan = MathFunctions.atan;
97
+ static atan2 = MathFunctions.atan2;
98
+ static random = MathFunctions.random;
99
+ static setseed = MathFunctions.setseed;
100
+ static gcd = MathFunctions.gcd;
101
+ static lcm = MathFunctions.lcm;
102
+ static factorial = MathFunctions.factorial;
103
+ static greatest = MathFunctions.greatest;
104
+ static least = MathFunctions.least;
105
+ static width_bucket = MathFunctions.width_bucket;
106
+ static array_length = ArrayFunctions.array_length;
107
+ static array_append = ArrayFunctions.array_append;
108
+ static array_prepend = ArrayFunctions.array_prepend;
109
+ static array_cat = ArrayFunctions.array_cat;
110
+ static array_remove = ArrayFunctions.array_remove;
111
+ static array_replace = ArrayFunctions.array_replace;
112
+ static array_position = ArrayFunctions.array_position;
113
+ static array_positions = ArrayFunctions.array_positions;
114
+ static array_dims = ArrayFunctions.array_dims;
115
+ static array_lower = ArrayFunctions.array_lower;
116
+ static array_upper = ArrayFunctions.array_upper;
117
+ static cardinality = ArrayFunctions.cardinality;
118
+ static array_to_string = ArrayFunctions.array_to_string;
119
+ static string_to_array = ArrayFunctions.string_to_array;
120
+ static unnest = ArrayFunctions.unnest;
121
+ static array_fill = ArrayFunctions.array_fill;
122
+ static array_agg = ArrayFunctions.array_agg;
123
+ static array_agg_order = ArrayFunctions.array_agg_order;
124
+ static jsonb_array_length = JsonbFunctions.jsonb_array_length;
125
+ static jsonb_each = JsonbFunctions.jsonb_each;
126
+ static jsonb_each_text = JsonbFunctions.jsonb_each_text;
127
+ static jsonb_object_keys = JsonbFunctions.jsonb_object_keys;
128
+ static jsonb_array_elements = JsonbFunctions.jsonb_array_elements;
129
+ static jsonb_array_elements_text = JsonbFunctions.jsonb_array_elements_text;
130
+ static jsonb_typeof = JsonbFunctions.jsonb_typeof;
131
+ static jsonb_strip_nulls = JsonbFunctions.jsonb_strip_nulls;
132
+ static jsonb_pretty = JsonbFunctions.jsonb_pretty;
133
+ static jsonb_set = JsonbFunctions.jsonb_set;
134
+ static jsonb_insert = JsonbFunctions.jsonb_insert;
135
+ static jsonb_build_object = JsonbFunctions.jsonb_build_object;
136
+ static jsonb_build_array = JsonbFunctions.jsonb_build_array;
137
+ static jsonb_to_text = JsonbFunctions.jsonb_to_text;
138
+ static text_to_jsonb = JsonbFunctions.text_to_jsonb;
139
+ static jsonb_agg = JsonbFunctions.jsonb_agg;
140
+ static jsonb_object_agg = JsonbFunctions.jsonb_object_agg;
141
+ static count = AggregateFunctions.count;
142
+ static count_distinct = AggregateFunctions.count_distinct;
143
+ static sum = AggregateFunctions.sum;
144
+ static avg = AggregateFunctions.avg;
145
+ static min = AggregateFunctions.min;
146
+ static max = AggregateFunctions.max;
147
+ static string_agg = AggregateFunctions.string_agg;
148
+ static string_agg_order = AggregateFunctions.string_agg_order;
149
+ static bool_and = AggregateFunctions.bool_and;
150
+ static bool_or = AggregateFunctions.bool_or;
151
+ static every = AggregateFunctions.every;
152
+ static bit_and = AggregateFunctions.bit_and;
153
+ static bit_or = AggregateFunctions.bit_or;
154
+ static stddev_pop = AggregateFunctions.stddev_pop;
155
+ static stddev_samp = AggregateFunctions.stddev_samp;
156
+ static stddev = AggregateFunctions.stddev;
157
+ static var_pop = AggregateFunctions.var_pop;
158
+ static var_samp = AggregateFunctions.var_samp;
159
+ static variance = AggregateFunctions.variance;
160
+ static corr = AggregateFunctions.corr;
161
+ static covar_pop = AggregateFunctions.covar_pop;
162
+ static covar_samp = AggregateFunctions.covar_samp;
163
+ static percentile_cont = AggregateFunctions.percentile_cont;
164
+ static percentile_disc = AggregateFunctions.percentile_disc;
165
+ static mode = AggregateFunctions.mode;
166
+ static coalesce = ConditionalFunctions.coalesce;
167
+ static nullif = ConditionalFunctions.nullif;
168
+ static geometric = GeometricFunctions;
169
+ static network = NetworkFunctions;
170
+ }
171
+ export { StringFunctions, DateTimeFunctions, MathFunctions, ArrayFunctions, JsonbFunctions, AggregateFunctions, ConditionalFunctions, GeometricFunctions, NetworkFunctions };
@@ -0,0 +1,79 @@
1
+ import format from "../../addons/pg-format.js";
2
+ import { SqlFunction } from "./sql-functions.js";
3
+ export class NetworkFunctions {
4
+ static abbrev(column) {
5
+ return new SqlFunction(format('abbrev(%I)', column));
6
+ }
7
+ static broadcast(column) {
8
+ return new SqlFunction(format('broadcast(%I)', column));
9
+ }
10
+ static family(column) {
11
+ return new SqlFunction(format('family(%I)', column));
12
+ }
13
+ static host(column) {
14
+ return new SqlFunction(format('host(%I)', column));
15
+ }
16
+ static hostmask(column) {
17
+ return new SqlFunction(format('hostmask(%I)', column));
18
+ }
19
+ static inetMerge(column1, column2) {
20
+ return new SqlFunction(format('inet_merge(%I, %I)', column1, column2));
21
+ }
22
+ static inetMergeValue(column, value) {
23
+ return new SqlFunction(format('inet_merge(%I, inet %L)', column, value));
24
+ }
25
+ static inetSameFamily(column1, column2) {
26
+ return new SqlFunction(format('inet_same_family(%I, %I)', column1, column2));
27
+ }
28
+ static masklen(column) {
29
+ return new SqlFunction(format('masklen(%I)', column));
30
+ }
31
+ static netmask(column) {
32
+ return new SqlFunction(format('netmask(%I)', column));
33
+ }
34
+ static network(column) {
35
+ return new SqlFunction(format('network(%I)', column));
36
+ }
37
+ static setMasklen(column, length) {
38
+ return new SqlFunction(format('set_masklen(%I, %s)', column, length));
39
+ }
40
+ static setCidrMasklen(column, length) {
41
+ return new SqlFunction(format('set_masklen(%I, %s)', column, length));
42
+ }
43
+ static text(column) {
44
+ return new SqlFunction(format('text(%I)', column));
45
+ }
46
+ static trunc(column) {
47
+ return new SqlFunction(format('trunc(%I)', column));
48
+ }
49
+ static macaddr8(column) {
50
+ return new SqlFunction(format('macaddr8(%I)', column));
51
+ }
52
+ static bitwiseNot(column) {
53
+ return new SqlFunction(format('~ %I', column));
54
+ }
55
+ static bitwiseAnd(column, value) {
56
+ return new SqlFunction(format('%I & inet %L', column, value));
57
+ }
58
+ static bitwiseOr(column, value) {
59
+ return new SqlFunction(format('%I | inet %L', column, value));
60
+ }
61
+ static add(column, offset) {
62
+ return new SqlFunction(format('%I + %s', column, offset));
63
+ }
64
+ static subtract(column, offset) {
65
+ return new SqlFunction(format('%I - %s', column, offset));
66
+ }
67
+ static difference(column1, column2) {
68
+ return new SqlFunction(format('%I - %I', column1, column2));
69
+ }
70
+ static inet(value) {
71
+ return new SqlFunction(format('inet %L', value));
72
+ }
73
+ static cidr(value) {
74
+ return new SqlFunction(format('cidr %L', value));
75
+ }
76
+ static macaddr(value) {
77
+ return new SqlFunction(format('macaddr %L', value));
78
+ }
79
+ }