@take-out/postgres 0.0.28

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 (186) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +242 -0
  3. package/cli.cjs +3 -0
  4. package/dist/cjs/build.cjs +26 -0
  5. package/dist/cjs/build.js +21 -0
  6. package/dist/cjs/build.js.map +6 -0
  7. package/dist/cjs/build.native.js +29 -0
  8. package/dist/cjs/build.native.js.map +1 -0
  9. package/dist/cjs/cli.cjs +156 -0
  10. package/dist/cjs/cli.js +128 -0
  11. package/dist/cjs/cli.js.map +6 -0
  12. package/dist/cjs/cli.native.js +164 -0
  13. package/dist/cjs/cli.native.js.map +1 -0
  14. package/dist/cjs/createServerHelpers.cjs +37 -0
  15. package/dist/cjs/createServerHelpers.js +28 -0
  16. package/dist/cjs/createServerHelpers.js.map +6 -0
  17. package/dist/cjs/createServerHelpers.native.js +43 -0
  18. package/dist/cjs/createServerHelpers.native.js.map +1 -0
  19. package/dist/cjs/helpers/chunkedQuery.cjs +60 -0
  20. package/dist/cjs/helpers/chunkedQuery.js +51 -0
  21. package/dist/cjs/helpers/chunkedQuery.js.map +6 -0
  22. package/dist/cjs/helpers/chunkedQuery.native.js +73 -0
  23. package/dist/cjs/helpers/chunkedQuery.native.js.map +1 -0
  24. package/dist/cjs/helpers/getDBClient.cjs +172 -0
  25. package/dist/cjs/helpers/getDBClient.js +179 -0
  26. package/dist/cjs/helpers/getDBClient.js.map +6 -0
  27. package/dist/cjs/helpers/getDBClient.native.js +189 -0
  28. package/dist/cjs/helpers/getDBClient.native.js.map +1 -0
  29. package/dist/cjs/index.cjs +59 -0
  30. package/dist/cjs/index.js +45 -0
  31. package/dist/cjs/index.js.map +6 -0
  32. package/dist/cjs/index.native.js +64 -0
  33. package/dist/cjs/index.native.js.map +1 -0
  34. package/dist/cjs/migrate.cjs +117 -0
  35. package/dist/cjs/migrate.js +106 -0
  36. package/dist/cjs/migrate.js.map +6 -0
  37. package/dist/cjs/migrate.native.js +185 -0
  38. package/dist/cjs/migrate.native.js.map +1 -0
  39. package/dist/cjs/scripts/build-migrations.cjs +81 -0
  40. package/dist/cjs/scripts/build-migrations.js +69 -0
  41. package/dist/cjs/scripts/build-migrations.js.map +6 -0
  42. package/dist/cjs/scripts/build-migrations.native.js +86 -0
  43. package/dist/cjs/scripts/build-migrations.native.js.map +1 -0
  44. package/dist/cjs/scripts/drizzle-migrations-sync.cjs +111 -0
  45. package/dist/cjs/scripts/drizzle-migrations-sync.js +101 -0
  46. package/dist/cjs/scripts/drizzle-migrations-sync.js.map +6 -0
  47. package/dist/cjs/scripts/drizzle-migrations-sync.native.js +209 -0
  48. package/dist/cjs/scripts/drizzle-migrations-sync.native.js.map +1 -0
  49. package/dist/cjs/scripts/migration-add.cjs +53 -0
  50. package/dist/cjs/scripts/migration-add.js +40 -0
  51. package/dist/cjs/scripts/migration-add.js.map +6 -0
  52. package/dist/cjs/scripts/migration-add.native.js +72 -0
  53. package/dist/cjs/scripts/migration-add.native.js.map +1 -0
  54. package/dist/cjs/scripts/pg_dump.cjs +49 -0
  55. package/dist/cjs/scripts/pg_dump.js +36 -0
  56. package/dist/cjs/scripts/pg_dump.js.map +6 -0
  57. package/dist/cjs/scripts/pg_dump.native.js +55 -0
  58. package/dist/cjs/scripts/pg_dump.native.js.map +1 -0
  59. package/dist/cjs/scripts/psql.cjs +50 -0
  60. package/dist/cjs/scripts/psql.js +37 -0
  61. package/dist/cjs/scripts/psql.js.map +6 -0
  62. package/dist/cjs/scripts/psql.native.js +56 -0
  63. package/dist/cjs/scripts/psql.native.js.map +1 -0
  64. package/dist/cjs/sql.cjs +40 -0
  65. package/dist/cjs/sql.js +35 -0
  66. package/dist/cjs/sql.js.map +6 -0
  67. package/dist/cjs/sql.native.js +49 -0
  68. package/dist/cjs/sql.native.js.map +1 -0
  69. package/dist/esm/build.js +5 -0
  70. package/dist/esm/build.js.map +6 -0
  71. package/dist/esm/build.mjs +3 -0
  72. package/dist/esm/build.mjs.map +1 -0
  73. package/dist/esm/build.native.js +3 -0
  74. package/dist/esm/build.native.js.map +1 -0
  75. package/dist/esm/cli.js +134 -0
  76. package/dist/esm/cli.js.map +6 -0
  77. package/dist/esm/cli.mjs +157 -0
  78. package/dist/esm/cli.mjs.map +1 -0
  79. package/dist/esm/cli.native.js +162 -0
  80. package/dist/esm/cli.native.js.map +1 -0
  81. package/dist/esm/createServerHelpers.js +13 -0
  82. package/dist/esm/createServerHelpers.js.map +6 -0
  83. package/dist/esm/createServerHelpers.mjs +14 -0
  84. package/dist/esm/createServerHelpers.mjs.map +1 -0
  85. package/dist/esm/createServerHelpers.native.js +17 -0
  86. package/dist/esm/createServerHelpers.native.js.map +1 -0
  87. package/dist/esm/helpers/chunkedQuery.js +35 -0
  88. package/dist/esm/helpers/chunkedQuery.js.map +6 -0
  89. package/dist/esm/helpers/chunkedQuery.mjs +36 -0
  90. package/dist/esm/helpers/chunkedQuery.mjs.map +1 -0
  91. package/dist/esm/helpers/chunkedQuery.native.js +46 -0
  92. package/dist/esm/helpers/chunkedQuery.native.js.map +1 -0
  93. package/dist/esm/helpers/getDBClient.js +155 -0
  94. package/dist/esm/helpers/getDBClient.js.map +6 -0
  95. package/dist/esm/helpers/getDBClient.mjs +136 -0
  96. package/dist/esm/helpers/getDBClient.mjs.map +1 -0
  97. package/dist/esm/helpers/getDBClient.native.js +150 -0
  98. package/dist/esm/helpers/getDBClient.native.js.map +1 -0
  99. package/dist/esm/index.js +29 -0
  100. package/dist/esm/index.js.map +6 -0
  101. package/dist/esm/index.mjs +18 -0
  102. package/dist/esm/index.mjs.map +1 -0
  103. package/dist/esm/index.native.js +20 -0
  104. package/dist/esm/index.native.js.map +1 -0
  105. package/dist/esm/migrate.js +91 -0
  106. package/dist/esm/migrate.js.map +6 -0
  107. package/dist/esm/migrate.mjs +94 -0
  108. package/dist/esm/migrate.mjs.map +1 -0
  109. package/dist/esm/migrate.native.js +159 -0
  110. package/dist/esm/migrate.native.js.map +1 -0
  111. package/dist/esm/scripts/build-migrations.js +46 -0
  112. package/dist/esm/scripts/build-migrations.js.map +6 -0
  113. package/dist/esm/scripts/build-migrations.mjs +47 -0
  114. package/dist/esm/scripts/build-migrations.mjs.map +1 -0
  115. package/dist/esm/scripts/build-migrations.native.js +49 -0
  116. package/dist/esm/scripts/build-migrations.native.js.map +1 -0
  117. package/dist/esm/scripts/drizzle-migrations-sync.js +87 -0
  118. package/dist/esm/scripts/drizzle-migrations-sync.js.map +6 -0
  119. package/dist/esm/scripts/drizzle-migrations-sync.mjs +88 -0
  120. package/dist/esm/scripts/drizzle-migrations-sync.mjs.map +1 -0
  121. package/dist/esm/scripts/drizzle-migrations-sync.native.js +183 -0
  122. package/dist/esm/scripts/drizzle-migrations-sync.native.js.map +1 -0
  123. package/dist/esm/scripts/migration-add.js +25 -0
  124. package/dist/esm/scripts/migration-add.js.map +6 -0
  125. package/dist/esm/scripts/migration-add.mjs +30 -0
  126. package/dist/esm/scripts/migration-add.mjs.map +1 -0
  127. package/dist/esm/scripts/migration-add.native.js +46 -0
  128. package/dist/esm/scripts/migration-add.native.js.map +1 -0
  129. package/dist/esm/scripts/pg_dump.js +20 -0
  130. package/dist/esm/scripts/pg_dump.js.map +6 -0
  131. package/dist/esm/scripts/pg_dump.mjs +26 -0
  132. package/dist/esm/scripts/pg_dump.mjs.map +1 -0
  133. package/dist/esm/scripts/pg_dump.native.js +29 -0
  134. package/dist/esm/scripts/pg_dump.native.js.map +1 -0
  135. package/dist/esm/scripts/psql.js +21 -0
  136. package/dist/esm/scripts/psql.js.map +6 -0
  137. package/dist/esm/scripts/psql.mjs +27 -0
  138. package/dist/esm/scripts/psql.mjs.map +1 -0
  139. package/dist/esm/scripts/psql.native.js +30 -0
  140. package/dist/esm/scripts/psql.native.js.map +1 -0
  141. package/dist/esm/sql.js +19 -0
  142. package/dist/esm/sql.js.map +6 -0
  143. package/dist/esm/sql.mjs +15 -0
  144. package/dist/esm/sql.mjs.map +1 -0
  145. package/dist/esm/sql.native.js +21 -0
  146. package/dist/esm/sql.native.js.map +1 -0
  147. package/package.json +67 -0
  148. package/src/build.ts +2 -0
  149. package/src/cli.ts +153 -0
  150. package/src/createServerHelpers.ts +20 -0
  151. package/src/helpers/chunkedQuery.ts +91 -0
  152. package/src/helpers/getDBClient.ts +264 -0
  153. package/src/index.ts +36 -0
  154. package/src/migrate.ts +192 -0
  155. package/src/scripts/build-migrations.ts +66 -0
  156. package/src/scripts/drizzle-migrations-sync.ts +179 -0
  157. package/src/scripts/migration-add.ts +54 -0
  158. package/src/scripts/pg_dump.ts +46 -0
  159. package/src/scripts/psql.ts +51 -0
  160. package/src/sql.ts +36 -0
  161. package/types/build.d.ts +2 -0
  162. package/types/build.d.ts.map +1 -0
  163. package/types/cli.d.ts +3 -0
  164. package/types/cli.d.ts.map +1 -0
  165. package/types/createServerHelpers.d.ts +9 -0
  166. package/types/createServerHelpers.d.ts.map +1 -0
  167. package/types/helpers/chunkedQuery.d.ts +17 -0
  168. package/types/helpers/chunkedQuery.d.ts.map +1 -0
  169. package/types/helpers/getDBClient.d.ts +11 -0
  170. package/types/helpers/getDBClient.d.ts.map +1 -0
  171. package/types/index.d.ts +10 -0
  172. package/types/index.d.ts.map +1 -0
  173. package/types/migrate.d.ts +25 -0
  174. package/types/migrate.d.ts.map +1 -0
  175. package/types/scripts/build-migrations.d.ts +8 -0
  176. package/types/scripts/build-migrations.d.ts.map +1 -0
  177. package/types/scripts/drizzle-migrations-sync.d.ts +11 -0
  178. package/types/scripts/drizzle-migrations-sync.d.ts.map +1 -0
  179. package/types/scripts/migration-add.d.ts +6 -0
  180. package/types/scripts/migration-add.d.ts.map +1 -0
  181. package/types/scripts/pg_dump.d.ts +11 -0
  182. package/types/scripts/pg_dump.d.ts.map +1 -0
  183. package/types/scripts/psql.d.ts +11 -0
  184. package/types/scripts/psql.d.ts.map +1 -0
  185. package/types/sql.d.ts +9 -0
  186. package/types/sql.d.ts.map +1 -0
@@ -0,0 +1,157 @@
1
+ #!/usr/bin/env node
2
+ import { defineCommand, runMain } from "citty";
3
+ import { join } from "node:path";
4
+ import { buildMigrations as buildMigrationsRun } from "./scripts/build-migrations.mjs";
5
+ import { syncDrizzleMigrations } from "./scripts/drizzle-migrations-sync.mjs";
6
+ import { addMigration } from "./scripts/migration-add.mjs";
7
+ import { runPgDump } from "./scripts/pg_dump.mjs";
8
+ import { runPsql } from "./scripts/psql.mjs";
9
+ const syncDrizzle = defineCommand({
10
+ meta: {
11
+ name: "sync-drizzle",
12
+ description: "Sync Drizzle SQL migrations to TypeScript wrappers"
13
+ },
14
+ args: {
15
+ dir: {
16
+ type: "string",
17
+ description: "Migrations directory",
18
+ required: !1,
19
+ default: "./src/database/migrations"
20
+ }
21
+ },
22
+ async run({
23
+ args
24
+ }) {
25
+ const migrationsDir = join(process.cwd(), args.dir);
26
+ console.info(`Syncing migrations in ${migrationsDir}`), await syncDrizzleMigrations({
27
+ migrationsDir
28
+ });
29
+ }
30
+ }),
31
+ buildMigrations = defineCommand({
32
+ meta: {
33
+ name: "build-migrations",
34
+ description: "Build migration bundle for deployment"
35
+ },
36
+ args: {
37
+ dir: {
38
+ type: "string",
39
+ description: "Migrations directory",
40
+ required: !1,
41
+ default: "./src/database/migrations"
42
+ },
43
+ out: {
44
+ type: "string",
45
+ description: "Output file name",
46
+ required: !1,
47
+ default: "migrate-dist.js"
48
+ }
49
+ },
50
+ async run({
51
+ args
52
+ }) {
53
+ const migrationsDir = join(process.cwd(), args.dir);
54
+ await buildMigrationsRun({
55
+ migrationsDir,
56
+ outFile: args.out
57
+ });
58
+ }
59
+ }),
60
+ migrationAdd = defineCommand({
61
+ meta: {
62
+ name: "migrate:add",
63
+ description: "Create a new custom TypeScript migration"
64
+ },
65
+ args: {
66
+ name: {
67
+ type: "positional",
68
+ description: "Migration name",
69
+ required: !1
70
+ },
71
+ dir: {
72
+ type: "string",
73
+ description: "Migrations directory",
74
+ required: !1,
75
+ default: "./src/database/migrations"
76
+ }
77
+ },
78
+ async run({
79
+ args
80
+ }) {
81
+ const migrationsDir = join(process.cwd(), args.dir);
82
+ addMigration({
83
+ migrationsDir,
84
+ name: args.name
85
+ });
86
+ }
87
+ }),
88
+ psql = defineCommand({
89
+ meta: {
90
+ name: "psql",
91
+ description: "Connect to PostgreSQL database with psql"
92
+ },
93
+ args: {
94
+ connectionString: {
95
+ type: "string",
96
+ description: "PostgreSQL connection string",
97
+ required: !1
98
+ },
99
+ query: {
100
+ type: "string",
101
+ description: "Query to execute",
102
+ required: !1
103
+ }
104
+ },
105
+ async run({
106
+ args
107
+ }) {
108
+ const connectionString = args.connectionString || process.env.ZERO_UPSTREAM_DB;
109
+ connectionString || (console.error("No connection string provided. Set ZERO_UPSTREAM_DB or pass --connectionString"), process.exit(1));
110
+ const exitCode = runPsql({
111
+ connectionString,
112
+ query: args.query
113
+ });
114
+ process.exit(exitCode || 0);
115
+ }
116
+ }),
117
+ pgDump = defineCommand({
118
+ meta: {
119
+ name: "pg_dump",
120
+ description: "Dump PostgreSQL database using pg_dump"
121
+ },
122
+ args: {
123
+ connectionString: {
124
+ type: "string",
125
+ description: "PostgreSQL connection string",
126
+ required: !1
127
+ }
128
+ },
129
+ async run({
130
+ args
131
+ }) {
132
+ const connectionString = args.connectionString || process.env.ZERO_UPSTREAM_DB;
133
+ connectionString || (console.error("No connection string provided. Set ZERO_UPSTREAM_DB or pass --connectionString"), process.exit(1));
134
+ const cliArgs = process.argv.slice(3),
135
+ exitCode = runPgDump({
136
+ connectionString,
137
+ args: cliArgs
138
+ });
139
+ process.exit(exitCode || 0);
140
+ }
141
+ }),
142
+ main = defineCommand({
143
+ meta: {
144
+ name: "postgres",
145
+ description: "PostgreSQL database utilities and migration tools",
146
+ version: "0.0.1"
147
+ },
148
+ subCommands: {
149
+ "sync-drizzle": syncDrizzle,
150
+ "build-migrations": buildMigrations,
151
+ "migrate:add": migrationAdd,
152
+ psql,
153
+ pg_dump: pgDump
154
+ }
155
+ });
156
+ runMain(main);
157
+ //# sourceMappingURL=cli.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["defineCommand","runMain","join","buildMigrations","buildMigrationsRun","syncDrizzleMigrations","addMigration","runPgDump","runPsql","syncDrizzle","meta","name","description","args","dir","type","required","default","run","migrationsDir","process","cwd","console","info","out","outFile","migrationAdd","psql","connectionString","query","env","ZERO_UPSTREAM_DB","error","exit","exitCode","pgDump","cliArgs","argv","slice","main","version","subCommands","pg_dump"],"sources":["../../src/cli.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,162 @@
1
+ #!/usr/bin/env node
2
+ import { defineCommand, runMain } from "citty";
3
+ import { join } from "path";
4
+ import { buildMigrations as buildMigrationsRun } from "./scripts/build-migrations.native.js";
5
+ import { syncDrizzleMigrations } from "./scripts/drizzle-migrations-sync.native.js";
6
+ import { addMigration } from "./scripts/migration-add.native.js";
7
+ import { runPgDump } from "./scripts/pg_dump.native.js";
8
+ import { runPsql } from "./scripts/psql.native.js";
9
+ var syncDrizzle = defineCommand({
10
+ meta: {
11
+ name: "sync-drizzle",
12
+ description: "Sync Drizzle SQL migrations to TypeScript wrappers"
13
+ },
14
+ args: {
15
+ dir: {
16
+ type: "string",
17
+ description: "Migrations directory",
18
+ required: !1,
19
+ default: "./src/database/migrations"
20
+ }
21
+ },
22
+ async run(param) {
23
+ var {
24
+ args
25
+ } = param,
26
+ migrationsDir = join(process.cwd(), args.dir);
27
+ console.info(`Syncing migrations in ${migrationsDir}`), await syncDrizzleMigrations({
28
+ migrationsDir
29
+ });
30
+ }
31
+ }),
32
+ buildMigrations = defineCommand({
33
+ meta: {
34
+ name: "build-migrations",
35
+ description: "Build migration bundle for deployment"
36
+ },
37
+ args: {
38
+ dir: {
39
+ type: "string",
40
+ description: "Migrations directory",
41
+ required: !1,
42
+ default: "./src/database/migrations"
43
+ },
44
+ out: {
45
+ type: "string",
46
+ description: "Output file name",
47
+ required: !1,
48
+ default: "migrate-dist.js"
49
+ }
50
+ },
51
+ async run(param) {
52
+ var {
53
+ args
54
+ } = param,
55
+ migrationsDir = join(process.cwd(), args.dir);
56
+ await buildMigrationsRun({
57
+ migrationsDir,
58
+ outFile: args.out
59
+ });
60
+ }
61
+ }),
62
+ migrationAdd = defineCommand({
63
+ meta: {
64
+ name: "migrate:add",
65
+ description: "Create a new custom TypeScript migration"
66
+ },
67
+ args: {
68
+ name: {
69
+ type: "positional",
70
+ description: "Migration name",
71
+ required: !1
72
+ },
73
+ dir: {
74
+ type: "string",
75
+ description: "Migrations directory",
76
+ required: !1,
77
+ default: "./src/database/migrations"
78
+ }
79
+ },
80
+ async run(param) {
81
+ var {
82
+ args
83
+ } = param,
84
+ migrationsDir = join(process.cwd(), args.dir);
85
+ addMigration({
86
+ migrationsDir,
87
+ name: args.name
88
+ });
89
+ }
90
+ }),
91
+ psql = defineCommand({
92
+ meta: {
93
+ name: "psql",
94
+ description: "Connect to PostgreSQL database with psql"
95
+ },
96
+ args: {
97
+ connectionString: {
98
+ type: "string",
99
+ description: "PostgreSQL connection string",
100
+ required: !1
101
+ },
102
+ query: {
103
+ type: "string",
104
+ description: "Query to execute",
105
+ required: !1
106
+ }
107
+ },
108
+ async run(param) {
109
+ var {
110
+ args
111
+ } = param,
112
+ connectionString = args.connectionString || process.env.ZERO_UPSTREAM_DB;
113
+ connectionString || (console.error("No connection string provided. Set ZERO_UPSTREAM_DB or pass --connectionString"), process.exit(1));
114
+ var exitCode = runPsql({
115
+ connectionString,
116
+ query: args.query
117
+ });
118
+ process.exit(exitCode || 0);
119
+ }
120
+ }),
121
+ pgDump = defineCommand({
122
+ meta: {
123
+ name: "pg_dump",
124
+ description: "Dump PostgreSQL database using pg_dump"
125
+ },
126
+ args: {
127
+ connectionString: {
128
+ type: "string",
129
+ description: "PostgreSQL connection string",
130
+ required: !1
131
+ }
132
+ },
133
+ async run(param) {
134
+ var {
135
+ args
136
+ } = param,
137
+ connectionString = args.connectionString || process.env.ZERO_UPSTREAM_DB;
138
+ connectionString || (console.error("No connection string provided. Set ZERO_UPSTREAM_DB or pass --connectionString"), process.exit(1));
139
+ var cliArgs = process.argv.slice(3),
140
+ exitCode = runPgDump({
141
+ connectionString,
142
+ args: cliArgs
143
+ });
144
+ process.exit(exitCode || 0);
145
+ }
146
+ }),
147
+ main = defineCommand({
148
+ meta: {
149
+ name: "postgres",
150
+ description: "PostgreSQL database utilities and migration tools",
151
+ version: "0.0.1"
152
+ },
153
+ subCommands: {
154
+ "sync-drizzle": syncDrizzle,
155
+ "build-migrations": buildMigrations,
156
+ "migrate:add": migrationAdd,
157
+ psql,
158
+ pg_dump: pgDump
159
+ }
160
+ });
161
+ runMain(main);
162
+ //# sourceMappingURL=cli.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["defineCommand","runMain","join","buildMigrations","buildMigrationsRun","syncDrizzleMigrations","addMigration","runPgDump","runPsql","syncDrizzle","meta","name","description","args","dir","type","required","default","run","param","migrationsDir","process","cwd","console","info","out","outFile","migrationAdd","psql","connectionString","query","env","ZERO_UPSTREAM_DB","error","exit","exitCode","pgDump","cliArgs","argv","slice","main","version","subCommands"],"sources":["../../src/cli.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ import { createSql, setDefaultPool } from "./sql";
2
+ import { getDBClient } from "./helpers/getDBClient";
3
+ function createServerHelpers(pool) {
4
+ const sql = createSql(pool);
5
+ return setDefaultPool(pool), {
6
+ sql,
7
+ getDBClient: (options = {}) => getDBClient({ pool, ...options })
8
+ };
9
+ }
10
+ export {
11
+ createServerHelpers
12
+ };
13
+ //# sourceMappingURL=createServerHelpers.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/createServerHelpers.ts"],
4
+ "mappings": "AACA,SAAS,WAAW,sBAAsB;AAC1C,SAAS,mBAA4C;AAS9C,SAAS,oBAAoB,MAA2B;AAC7D,QAAM,MAAM,UAAU,IAAI;AAC1B,wBAAe,IAAI,GAEZ;AAAA,IACL;AAAA,IACA,aAAa,CAAC,UAAU,CAAC,MAAM,YAAY,EAAE,MAAM,GAAG,QAAQ,CAAC;AAAA,EACjE;AACF;",
5
+ "names": []
6
+ }
@@ -0,0 +1,14 @@
1
+ import { createSql, setDefaultPool } from "./sql.mjs";
2
+ import { getDBClient } from "./helpers/getDBClient.mjs";
3
+ function createServerHelpers(pool) {
4
+ const sql = createSql(pool);
5
+ return setDefaultPool(pool), {
6
+ sql,
7
+ getDBClient: (options = {}) => getDBClient({
8
+ pool,
9
+ ...options
10
+ })
11
+ };
12
+ }
13
+ export { createServerHelpers };
14
+ //# sourceMappingURL=createServerHelpers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createSql","setDefaultPool","getDBClient","createServerHelpers","pool","sql","options"],"sources":["../../src/createServerHelpers.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,SAAA,EAAWC,cAAA,QAAsB;AAC1C,SAASC,WAAA,QAA4C;AAS9C,SAASC,oBAAoBC,IAAA,EAA2B;EAC7D,MAAMC,GAAA,GAAML,SAAA,CAAUI,IAAI;EAC1B,OAAAH,cAAA,CAAeG,IAAI,GAEZ;IACLC,GAAA;IACAH,WAAA,EAAaA,CAACI,OAAA,GAAU,CAAC,MAAMJ,WAAA,CAAY;MAAEE,IAAA;MAAM,GAAGE;IAAQ,CAAC;EACjE;AACF","ignoreList":[]}
@@ -0,0 +1,17 @@
1
+ import { createSql, setDefaultPool } from "./sql.native.js";
2
+ import { getDBClient } from "./helpers/getDBClient.native.js";
3
+ function createServerHelpers(pool) {
4
+ var sql = createSql(pool);
5
+ return setDefaultPool(pool), {
6
+ sql,
7
+ getDBClient: function () {
8
+ var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
9
+ return getDBClient({
10
+ pool,
11
+ ...options
12
+ });
13
+ }
14
+ };
15
+ }
16
+ export { createServerHelpers };
17
+ //# sourceMappingURL=createServerHelpers.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createSql","setDefaultPool","getDBClient","createServerHelpers","pool","sql","options","arguments","length"],"sources":["../../src/createServerHelpers.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,SAAA,EAAWC,cAAA,QAAsB;AAC1C,SAASC,WAAA,QAA4C;AAS9C,SAASC,oBAAoBC,IAAA,EAA2B;EAC7D,IAAAC,GAAM,GAAAL,SAAM,CAAAI,IAAU;EACtB,OAAAH,cAAA,CAAeG,IAAI,GAEZ;IACLC,GAAA;IACAH,WAAA,EAAa,SAAAA,CAAA,EAAW;MAC1B,IAAAI,OAAA,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;MACF,OAAAL,WAAA","ignoreList":[]}
@@ -0,0 +1,35 @@
1
+ async function processInChunks(client, query, processor, options = {}) {
2
+ const { chunkSize = 1e3, onProgress } = options;
3
+ let offset = 0, hasMore = !0, totalProcessed = 0;
4
+ const countQuery = query.replace(/SELECT .+ FROM/, "SELECT COUNT(*) FROM").replace(/ORDER BY .+/, ""), countResult = await client.query(countQuery), totalCount = Number.parseInt(countResult.rows[0].count, 10);
5
+ for (; hasMore; ) {
6
+ const paginatedQuery = `${query} LIMIT ${chunkSize} OFFSET ${offset}`, result = await client.query(paginatedQuery);
7
+ if (result.rows.length === 0) {
8
+ hasMore = !1;
9
+ break;
10
+ }
11
+ await processor(result.rows), totalProcessed += result.rows.length, offset += chunkSize, onProgress && onProgress(totalProcessed, totalCount), result.rows.length < chunkSize && (hasMore = !1);
12
+ }
13
+ }
14
+ async function updateInChunks(client, tableName, selectQuery, transformer, options = {}) {
15
+ let totalUpdated = 0;
16
+ return await processInChunks(
17
+ client,
18
+ selectQuery,
19
+ async (rows) => {
20
+ for (const row of rows) {
21
+ const updates = await transformer(row);
22
+ if (updates && Object.keys(updates).length > 0) {
23
+ const setClause = Object.keys(updates).map((key, index) => `${key} = $${index + 2}`).join(", "), values = [row.id, ...Object.values(updates)];
24
+ await client.query(`UPDATE ${tableName} SET ${setClause} WHERE id = $1`, values), totalUpdated++;
25
+ }
26
+ }
27
+ },
28
+ options
29
+ ), totalUpdated;
30
+ }
31
+ export {
32
+ processInChunks,
33
+ updateInChunks
34
+ };
35
+ //# sourceMappingURL=chunkedQuery.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/helpers/chunkedQuery.ts"],
4
+ "mappings": "AAUA,eAAsB,gBACpB,QACA,OACA,WACA,UAA+B,CAAC,GACjB;AACf,QAAM,EAAE,YAAY,KAAM,WAAW,IAAI;AACzC,MAAI,SAAS,GACT,UAAU,IACV,iBAAiB;AAGrB,QAAM,aAAa,MAChB,QAAQ,kBAAkB,sBAAsB,EAChD,QAAQ,eAAe,EAAE,GACtB,cAAc,MAAM,OAAO,MAAM,UAAU,GAC3C,aAAa,OAAO,SAAS,YAAY,KAAK,CAAC,EAAE,OAAO,EAAE;AAEhE,SAAO,WAAS;AACd,UAAM,iBAAiB,GAAG,KAAK,UAAU,SAAS,WAAW,MAAM,IAC7D,SAAS,MAAM,OAAO,MAAS,cAAc;AAEnD,QAAI,OAAO,KAAK,WAAW,GAAG;AAC5B,gBAAU;AACV;AAAA,IACF;AAEA,UAAM,UAAU,OAAO,IAAI,GAE3B,kBAAkB,OAAO,KAAK,QAC9B,UAAU,WAEN,cACF,WAAW,gBAAgB,UAAU,GAInC,OAAO,KAAK,SAAS,cACvB,UAAU;AAAA,EAEd;AACF;AAKA,eAAsB,eACpB,QACA,WACA,aACA,aACA,UAA+B,CAAC,GACf;AACjB,MAAI,eAAe;AAEnB,eAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,OAAO,SAAS;AACd,iBAAW,OAAO,MAAM;AACtB,cAAM,UAAU,MAAM,YAAY,GAAG;AAErC,YAAI,WAAW,OAAO,KAAK,OAAO,EAAE,SAAS,GAAG;AAE9C,gBAAM,YAAY,OAAO,KAAK,OAAO,EAClC,IAAI,CAAC,KAAK,UAAU,GAAG,GAAG,OAAO,QAAQ,CAAC,EAAE,EAC5C,KAAK,IAAI,GAEN,SAAS,CAAC,IAAI,IAAI,GAAG,OAAO,OAAO,OAAO,CAAC;AAEjD,gBAAM,OAAO,MAAM,UAAU,SAAS,QAAQ,SAAS,kBAAkB,MAAM,GAE/E;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,EACF,GAEO;AACT;",
5
+ "names": []
6
+ }
@@ -0,0 +1,36 @@
1
+ async function processInChunks(client, query, processor, options = {}) {
2
+ const {
3
+ chunkSize = 1e3,
4
+ onProgress
5
+ } = options;
6
+ let offset = 0,
7
+ hasMore = !0,
8
+ totalProcessed = 0;
9
+ const countQuery = query.replace(/SELECT .+ FROM/, "SELECT COUNT(*) FROM").replace(/ORDER BY .+/, ""),
10
+ countResult = await client.query(countQuery),
11
+ totalCount = Number.parseInt(countResult.rows[0].count, 10);
12
+ for (; hasMore;) {
13
+ const paginatedQuery = `${query} LIMIT ${chunkSize} OFFSET ${offset}`,
14
+ result = await client.query(paginatedQuery);
15
+ if (result.rows.length === 0) {
16
+ hasMore = !1;
17
+ break;
18
+ }
19
+ await processor(result.rows), totalProcessed += result.rows.length, offset += chunkSize, onProgress && onProgress(totalProcessed, totalCount), result.rows.length < chunkSize && (hasMore = !1);
20
+ }
21
+ }
22
+ async function updateInChunks(client, tableName, selectQuery, transformer, options = {}) {
23
+ let totalUpdated = 0;
24
+ return await processInChunks(client, selectQuery, async rows => {
25
+ for (const row of rows) {
26
+ const updates = await transformer(row);
27
+ if (updates && Object.keys(updates).length > 0) {
28
+ const setClause = Object.keys(updates).map((key, index) => `${key} = $${index + 2}`).join(", "),
29
+ values = [row.id, ...Object.values(updates)];
30
+ await client.query(`UPDATE ${tableName} SET ${setClause} WHERE id = $1`, values), totalUpdated++;
31
+ }
32
+ }
33
+ }, options), totalUpdated;
34
+ }
35
+ export { processInChunks, updateInChunks };
36
+ //# sourceMappingURL=chunkedQuery.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["processInChunks","client","query","processor","options","chunkSize","onProgress","offset","hasMore","totalProcessed","countQuery","replace","countResult","totalCount","Number","parseInt","rows","count","paginatedQuery","result","length","updateInChunks","tableName","selectQuery","transformer","totalUpdated","row","updates","Object","keys","setClause","map","key","index","join","values","id"],"sources":["../../../src/helpers/chunkedQuery.ts"],"sourcesContent":[null],"mappings":"AAUA,eAAsBA,gBACpBC,MAAA,EACAC,KAAA,EACAC,SAAA,EACAC,OAAA,GAA+B,CAAC,GACjB;EACf,MAAM;IAAEC,SAAA,GAAY;IAAMC;EAAW,IAAIF,OAAA;EACzC,IAAIG,MAAA,GAAS;IACTC,OAAA,GAAU;IACVC,cAAA,GAAiB;EAGrB,MAAMC,UAAA,GAAaR,KAAA,CAChBS,OAAA,CAAQ,kBAAkB,sBAAsB,EAChDA,OAAA,CAAQ,eAAe,EAAE;IACtBC,WAAA,GAAc,MAAMX,MAAA,CAAOC,KAAA,CAAMQ,UAAU;IAC3CG,UAAA,GAAaC,MAAA,CAAOC,QAAA,CAASH,WAAA,CAAYI,IAAA,CAAK,CAAC,EAAEC,KAAA,EAAO,EAAE;EAEhE,OAAOT,OAAA,GAAS;IACd,MAAMU,cAAA,GAAiB,GAAGhB,KAAK,UAAUG,SAAS,WAAWE,MAAM;MAC7DY,MAAA,GAAS,MAAMlB,MAAA,CAAOC,KAAA,CAASgB,cAAc;IAEnD,IAAIC,MAAA,CAAOH,IAAA,CAAKI,MAAA,KAAW,GAAG;MAC5BZ,OAAA,GAAU;MACV;IACF;IAEA,MAAML,SAAA,CAAUgB,MAAA,CAAOH,IAAI,GAE3BP,cAAA,IAAkBU,MAAA,CAAOH,IAAA,CAAKI,MAAA,EAC9Bb,MAAA,IAAUF,SAAA,EAENC,UAAA,IACFA,UAAA,CAAWG,cAAA,EAAgBI,UAAU,GAInCM,MAAA,CAAOH,IAAA,CAAKI,MAAA,GAASf,SAAA,KACvBG,OAAA,GAAU;EAEd;AACF;AAKA,eAAsBa,eACpBpB,MAAA,EACAqB,SAAA,EACAC,WAAA,EACAC,WAAA,EACApB,OAAA,GAA+B,CAAC,GACf;EACjB,IAAIqB,YAAA,GAAe;EAEnB,aAAMzB,eAAA,CACJC,MAAA,EACAsB,WAAA,EACA,MAAOP,IAAA,IAAS;IACd,WAAWU,GAAA,IAAOV,IAAA,EAAM;MACtB,MAAMW,OAAA,GAAU,MAAMH,WAAA,CAAYE,GAAG;MAErC,IAAIC,OAAA,IAAWC,MAAA,CAAOC,IAAA,CAAKF,OAAO,EAAEP,MAAA,GAAS,GAAG;QAE9C,MAAMU,SAAA,GAAYF,MAAA,CAAOC,IAAA,CAAKF,OAAO,EAClCI,GAAA,CAAI,CAACC,GAAA,EAAKC,KAAA,KAAU,GAAGD,GAAG,OAAOC,KAAA,GAAQ,CAAC,EAAE,EAC5CC,IAAA,CAAK,IAAI;UAENC,MAAA,GAAS,CAACT,GAAA,CAAIU,EAAA,EAAI,GAAGR,MAAA,CAAOO,MAAA,CAAOR,OAAO,CAAC;QAEjD,MAAM1B,MAAA,CAAOC,KAAA,CAAM,UAAUoB,SAAS,QAAQQ,SAAS,kBAAkBK,MAAM,GAE/EV,YAAA;MACF;IACF;EACF,GACArB,OACF,GAEOqB,YAAA;AACT","ignoreList":[]}
@@ -0,0 +1,46 @@
1
+ async function processInChunks(client, query, processor) {
2
+ for (var options = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {}, {
3
+ chunkSize = 1e3,
4
+ onProgress
5
+ } = options, offset = 0, hasMore = !0, totalProcessed = 0, countQuery = query.replace(/SELECT .+ FROM/, "SELECT COUNT(*) FROM").replace(/ORDER BY .+/, ""), countResult = await client.query(countQuery), totalCount = Number.parseInt(countResult.rows[0].count, 10); hasMore;) {
6
+ var paginatedQuery = `${query} LIMIT ${chunkSize} OFFSET ${offset}`,
7
+ result = await client.query(paginatedQuery);
8
+ if (result.rows.length === 0) {
9
+ hasMore = !1;
10
+ break;
11
+ }
12
+ await processor(result.rows), totalProcessed += result.rows.length, offset += chunkSize, onProgress && onProgress(totalProcessed, totalCount), result.rows.length < chunkSize && (hasMore = !1);
13
+ }
14
+ }
15
+ async function updateInChunks(client, tableName, selectQuery, transformer) {
16
+ var options = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : {},
17
+ totalUpdated = 0;
18
+ return await processInChunks(client, selectQuery, async function (rows) {
19
+ var _iteratorNormalCompletion = !0,
20
+ _didIteratorError = !1,
21
+ _iteratorError = void 0;
22
+ try {
23
+ for (var _iterator = rows[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
24
+ var row = _step.value,
25
+ updates = await transformer(row);
26
+ if (updates && Object.keys(updates).length > 0) {
27
+ var setClause = Object.keys(updates).map(function (key, index) {
28
+ return `${key} = $${index + 2}`;
29
+ }).join(", "),
30
+ values = [row.id, ...Object.values(updates)];
31
+ await client.query(`UPDATE ${tableName} SET ${setClause} WHERE id = $1`, values), totalUpdated++;
32
+ }
33
+ }
34
+ } catch (err) {
35
+ _didIteratorError = !0, _iteratorError = err;
36
+ } finally {
37
+ try {
38
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
39
+ } finally {
40
+ if (_didIteratorError) throw _iteratorError;
41
+ }
42
+ }
43
+ }, options), totalUpdated;
44
+ }
45
+ export { processInChunks, updateInChunks };
46
+ //# sourceMappingURL=chunkedQuery.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["processInChunks","client","query","processor","options","arguments","length","chunkSize","onProgress","offset","hasMore","totalProcessed","countQuery","replace","countResult","totalCount","Number","parseInt","rows","count","paginatedQuery","result","updateInChunks","tableName","selectQuery","transformer","totalUpdated","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","row","value","updates","Object","keys","setClause","map","key","index","join","values","id","err"],"sources":["../../../src/helpers/chunkedQuery.ts"],"sourcesContent":[null],"mappings":"AAUA,eAAsBA,gBACpBC,MAAA,EACAC,KAAA,EACAC,SAAA,EACA;EAEA,SAAQC,OAAA,GAAAC,SAAkB,CAAAC,MAAA,GAAW,KAAID,SAAA,iBAAAA,SAAA;MAAAE,SAAA;MAAAC;IAAA,IAAAJ,OAAA,EAAAK,MAAA,MAAAC,OAAA,OAAAC,cAAA,MAAAC,UAAA,GAAAV,KAAA,CAAAW,OAAA,2CAAAA,OAAA,qBAAAC,WAAA,SAAAb,MAAA,CAAAC,KAAA,CAAAU,UAAA,GAAAG,UAAA,GAAAC,MAAA,CAAAC,QAAA,CAAAH,WAAA,CAAAI,IAAA,IAAAC,KAAA,OAAAT,OAAA;IACzC,IAAIU,cACA,MAAUlB,KACV,UAAAK,SAAiB,WAAAE,MAAA;MAAAY,MAAA,SAAApB,MAAA,CAAAC,KAAA,CAAAkB,cAAA;IAGrB,IAAMC,MAAA,CAAAH,IAAA,CAAAZ,MAAa,KAChB;MAKHI,OAAO;MACL;IAGA;IACE,MAAAP,SAAU,CAAAkB,MAAA,CAAAH,IAAA,GAAAP,cAAA,IAAAU,MAAA,CAAAH,IAAA,CAAAZ,MAAA,EAAAG,MAAA,IAAAF,SAAA,EAAAC,UAAA,IAAAA,UAAA,CAAAG,cAAA,EAAAI,UAAA,GAAAM,MAAA,CAAAH,IAAA,CAAAZ,MAAA,GAAAC,SAAA,KAAAG,OAAA;EACV;AAAA;AAGF,eAAMY,cAAiBA,CAAArB,MAEvB,EAAAsB,SAAA,EAAAC,WAAyB,EAAAC,WACzB;EAUF,IAAArB,OAAA,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;IAAAqB,YAAA;EACF,aAAA1B,eAAA,CAAAC,MAAA,EAAAuB,WAAA,kBAAAN,IAAA;IAKA,IAAAS,yBACE,KACA;MAAAC,iBACA,KACA;MAAAC,cACA,QAAgC;IAEhC,IAAI;MAEJ,SAAMC,SAAA,GAAAZ,IAAA,CAAAa,MAAA,CAAAC,QAAA,KAAAC,KAAA,IAAAN,yBAAA,IAAAM,KAAA,GAAAH,SAAA,CAAAI,IAAA,IAAAC,IAAA,GAAAR,yBAAA;QACJ,IAAAS,GAAA,GAAAH,KAAA,CAAAI,KAAA;UAAAC,OAAA,SAAAb,WAAA,CAAAW,GAAA;QACA,IAAAE,OAAA,IAAAC,MAAA,CAAAC,IAAA,CAAAF,OAAA,EAAAhC,MAAA;UACA,IAAOmC,SAAS,GAAAF,MAAA,CAAAC,IAAA,CAAAF,OAAA,EAAAI,GAAA,WAAAC,GAAA,EAAAC,KAAA;cACd,OAAW,GAAAD,GAAO,OAAMC,KAAA;YACtB,GAAAC,IAAM;YAAUC,MAAM,IAElBV,GAAA,CAAAW,EAAA,EAEF,GAAAR,MAAM,CAAAO,MAAY,CAAAR,OAAO,EAMzB;UAGF,MAAArC,MAAA,CAAAC,KAAA,WAAAqB,SAAA,QAAAkB,SAAA,kBAAAK,MAAA,GAAApB,YAAA;QACF;MACF;IACA,SAAAsB,GAAA;MAGKpB,iBAAA,OAAAC,cAAA,GAAAmB,GAAA;IACT","ignoreList":[]}