@anthonyalayo/drizzle-kit 1.0.1

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 (161) hide show
  1. package/.gitignore +25 -0
  2. package/README.md +79 -0
  3. package/build.dev.ts +51 -0
  4. package/build.ts +112 -0
  5. package/imports-checker/analyze.ts +78 -0
  6. package/imports-checker/checker.ts +296 -0
  7. package/imports-checker/grammar/grammar.ohm +121 -0
  8. package/imports-checker/grammar/grammar.ohm-bundle.d.ts +164 -0
  9. package/imports-checker/grammar/grammar.ohm-bundle.js +753 -0
  10. package/imports-checker/index.ts +48 -0
  11. package/package.json +142 -0
  12. package/patches/difflib@0.2.4.patch +31 -0
  13. package/src/@types/utils.ts +58 -0
  14. package/src/api.ts +504 -0
  15. package/src/cli/commands/_es5.ts +2 -0
  16. package/src/cli/commands/check.ts +52 -0
  17. package/src/cli/commands/drop.ts +60 -0
  18. package/src/cli/commands/introspect.ts +772 -0
  19. package/src/cli/commands/libSqlPushUtils.ts +355 -0
  20. package/src/cli/commands/migrate.ts +1526 -0
  21. package/src/cli/commands/mysqlIntrospect.ts +53 -0
  22. package/src/cli/commands/mysqlPushUtils.ts +352 -0
  23. package/src/cli/commands/mysqlUp.ts +102 -0
  24. package/src/cli/commands/pgIntrospect.ts +55 -0
  25. package/src/cli/commands/pgPushUtils.ts +269 -0
  26. package/src/cli/commands/pgUp.ts +217 -0
  27. package/src/cli/commands/push.ts +637 -0
  28. package/src/cli/commands/singlestoreIntrospect.ts +53 -0
  29. package/src/cli/commands/singlestorePushUtils.ts +456 -0
  30. package/src/cli/commands/singlestoreUp.ts +1 -0
  31. package/src/cli/commands/sqliteIntrospect.ts +96 -0
  32. package/src/cli/commands/sqlitePushUtils.ts +322 -0
  33. package/src/cli/commands/sqliteUp.ts +52 -0
  34. package/src/cli/commands/utils.ts +858 -0
  35. package/src/cli/connections.ts +914 -0
  36. package/src/cli/index.ts +48 -0
  37. package/src/cli/schema.ts +794 -0
  38. package/src/cli/selector-ui.ts +38 -0
  39. package/src/cli/utils.ts +112 -0
  40. package/src/cli/validations/cli.ts +79 -0
  41. package/src/cli/validations/common.ts +193 -0
  42. package/src/cli/validations/libsql.ts +27 -0
  43. package/src/cli/validations/mysql.ts +61 -0
  44. package/src/cli/validations/outputs.ts +91 -0
  45. package/src/cli/validations/postgres.ts +83 -0
  46. package/src/cli/validations/singlestore.ts +61 -0
  47. package/src/cli/validations/sqlite.ts +104 -0
  48. package/src/cli/validations/studio.ts +24 -0
  49. package/src/cli/views.ts +658 -0
  50. package/src/extensions/getTablesFilterByExtensions.ts +16 -0
  51. package/src/extensions/vector.ts +10 -0
  52. package/src/global.ts +61 -0
  53. package/src/index.ts +326 -0
  54. package/src/introspect-mysql.ts +1030 -0
  55. package/src/introspect-pg.ts +1435 -0
  56. package/src/introspect-singlestore.ts +913 -0
  57. package/src/introspect-sqlite.ts +533 -0
  58. package/src/jsonDiffer.js +882 -0
  59. package/src/jsonStatements.ts +3590 -0
  60. package/src/loader.mjs +57 -0
  61. package/src/migrationPreparator.ts +217 -0
  62. package/src/schemaValidator.ts +23 -0
  63. package/src/serializer/index.ts +142 -0
  64. package/src/serializer/mysqlImports.ts +38 -0
  65. package/src/serializer/mysqlSchema.ts +423 -0
  66. package/src/serializer/mysqlSerializer.ts +999 -0
  67. package/src/serializer/pgImports.ts +106 -0
  68. package/src/serializer/pgSchema.ts +937 -0
  69. package/src/serializer/pgSerializer.ts +2223 -0
  70. package/src/serializer/singlestoreImports.ts +38 -0
  71. package/src/serializer/singlestoreSchema.ts +257 -0
  72. package/src/serializer/singlestoreSerializer.ts +767 -0
  73. package/src/serializer/sqliteImports.ts +41 -0
  74. package/src/serializer/sqliteSchema.ts +352 -0
  75. package/src/serializer/sqliteSerializer.ts +931 -0
  76. package/src/serializer/studio.ts +694 -0
  77. package/src/serializer/utils.ts +45 -0
  78. package/src/simulator.ts +157 -0
  79. package/src/snapshotsDiffer.ts +4398 -0
  80. package/src/sqlgenerator.ts +4212 -0
  81. package/src/statementCombiner.ts +597 -0
  82. package/src/utils/certs.ts +44 -0
  83. package/src/utils/words.ts +1333 -0
  84. package/src/utils.ts +370 -0
  85. package/tests/bin.test.ts +58 -0
  86. package/tests/cli/d1http.config.ts +12 -0
  87. package/tests/cli/drizzle.config.ts +9 -0
  88. package/tests/cli/durable-sqlite.config.ts +7 -0
  89. package/tests/cli/expo.config.ts +7 -0
  90. package/tests/cli/postgres.config.ts +13 -0
  91. package/tests/cli/postgres2.config.ts +17 -0
  92. package/tests/cli/schema.ts +1 -0
  93. package/tests/cli/turso.config.ts +10 -0
  94. package/tests/cli-export.test.ts +79 -0
  95. package/tests/cli-generate.test.ts +259 -0
  96. package/tests/cli-migrate.test.ts +103 -0
  97. package/tests/cli-push.test.ts +126 -0
  98. package/tests/common.ts +15 -0
  99. package/tests/indexes/common.ts +21 -0
  100. package/tests/indexes/pg.test.ts +245 -0
  101. package/tests/introspect/libsql.test.ts +35 -0
  102. package/tests/introspect/mysql.test.ts +319 -0
  103. package/tests/introspect/pg.test.ts +894 -0
  104. package/tests/introspect/singlestore.test.ts +275 -0
  105. package/tests/introspect/sqlite.test.ts +122 -0
  106. package/tests/libsql-checks.test.ts +308 -0
  107. package/tests/libsql-statements.test.ts +989 -0
  108. package/tests/libsql-views.test.ts +218 -0
  109. package/tests/migrate/libsq-schema.ts +6 -0
  110. package/tests/migrate/libsql-migrate.test.ts +58 -0
  111. package/tests/migrate/migrations/0000_little_blizzard.sql +4 -0
  112. package/tests/migrate/migrations/0001_nebulous_storm.sql +10 -0
  113. package/tests/migrate/migrations/meta/0000_snapshot.json +40 -0
  114. package/tests/migrate/migrations/meta/0001_snapshot.json +40 -0
  115. package/tests/migrate/migrations/meta/_journal.json +20 -0
  116. package/tests/mysql-checks.test.ts +291 -0
  117. package/tests/mysql-generated.test.ts +1290 -0
  118. package/tests/mysql-schemas.test.ts +156 -0
  119. package/tests/mysql-views.test.ts +553 -0
  120. package/tests/mysql.test.ts +863 -0
  121. package/tests/pg-array.test.ts +368 -0
  122. package/tests/pg-checks.test.ts +329 -0
  123. package/tests/pg-columns.test.ts +484 -0
  124. package/tests/pg-domains.test.ts +306 -0
  125. package/tests/pg-enums.test.ts +751 -0
  126. package/tests/pg-generated.test.ts +529 -0
  127. package/tests/pg-identity.test.ts +447 -0
  128. package/tests/pg-schemas.test.ts +105 -0
  129. package/tests/pg-sequences.test.ts +298 -0
  130. package/tests/pg-tables.test.ts +1021 -0
  131. package/tests/pg-views.test.ts +1929 -0
  132. package/tests/push/common.ts +58 -0
  133. package/tests/push/libsql.test.ts +1400 -0
  134. package/tests/push/mysql-push.test.ts +345 -0
  135. package/tests/push/mysql.test.ts +788 -0
  136. package/tests/push/pg.test.ts +4341 -0
  137. package/tests/push/singlestore-push.test.ts +894 -0
  138. package/tests/push/singlestore.test.ts +444 -0
  139. package/tests/push/sqlite.test.ts +1613 -0
  140. package/tests/rls/pg-policy.test.ts +1656 -0
  141. package/tests/rls/pg-role.test.ts +234 -0
  142. package/tests/schemaDiffer.ts +2852 -0
  143. package/tests/singlestore-generated.test.ts +1290 -0
  144. package/tests/singlestore-schemas.test.ts +155 -0
  145. package/tests/singlestore.test.ts +978 -0
  146. package/tests/sqlite-checks.test.ts +308 -0
  147. package/tests/sqlite-columns.test.ts +1049 -0
  148. package/tests/sqlite-generated.test.ts +1726 -0
  149. package/tests/sqlite-tables.test.ts +637 -0
  150. package/tests/sqlite-views.test.ts +218 -0
  151. package/tests/statements-combiner/libsql-statements-combiner.test.ts +1812 -0
  152. package/tests/statements-combiner/singlestore-statements-combiner.test.ts +882 -0
  153. package/tests/statements-combiner/sqlite-statements-combiner.test.ts +1211 -0
  154. package/tests/test/sqlite.test.ts +39 -0
  155. package/tests/testsinglestore.ts +29 -0
  156. package/tests/validations.test.ts +869 -0
  157. package/tests/wrap-param.test.ts +16 -0
  158. package/tsconfig.build.json +4 -0
  159. package/tsconfig.cli-types.json +9 -0
  160. package/tsconfig.json +28 -0
  161. package/vitest.config.ts +34 -0
@@ -0,0 +1,259 @@
1
+ import { test as brotest } from '@drizzle-team/brocli';
2
+ import { assert, expect, test } from 'vitest';
3
+ import { generate } from '../src/cli/schema';
4
+
5
+ // good:
6
+ // #1 drizzle-kit generate --dialect=postgresql --schema=schema.ts
7
+ // #2 drizzle-kit generate --dialect=postgresql --schema=schema.ts --out=out
8
+ // #3 drizzle-kit generate
9
+ // #4 drizzle-kit generate --custom
10
+ // #5 drizzle-kit generate --name=custom
11
+ // #6 drizzle-kit generate --prefix=timestamp
12
+ // #7 drizzle-kit generate --prefix=timestamp --name=custom --custom
13
+ // #8 drizzle-kit generate --config=drizzle1.config.ts
14
+ // #9 drizzle-kit generate --dialect=postgresql --schema=schema.ts --out=out --prefix=timestamp --name=custom --custom
15
+
16
+ // errors:
17
+ // #1 drizzle-kit generate --schema=src/schema.ts
18
+ // #2 drizzle-kit generate --dialect=postgresql
19
+ // #3 drizzle-kit generate --dialect=postgresql2
20
+ // #4 drizzle-kit generate --driver=expo
21
+ // #5 drizzle-kit generate --dialect=postgresql --out=out
22
+ // #6 drizzle-kit generate --config=drizzle.config.ts --out=out
23
+ // #7 drizzle-kit generate --config=drizzle.config.ts --schema=schema.ts
24
+ // #8 drizzle-kit generate --config=drizzle.config.ts --dialect=postgresql
25
+
26
+ test('generate #1', async (t) => {
27
+ const res = await brotest(
28
+ generate,
29
+ '--dialect=postgresql --schema=schema.ts',
30
+ );
31
+ if (res.type !== 'handler') assert.fail(res.type, 'handler');
32
+ expect(res.options).toStrictEqual({
33
+ dialect: 'postgresql',
34
+ name: undefined,
35
+ custom: false,
36
+ prefix: 'index',
37
+ breakpoints: true,
38
+ schema: 'schema.ts',
39
+ out: 'drizzle',
40
+ bundle: false,
41
+ casing: undefined,
42
+ driver: undefined,
43
+ });
44
+ });
45
+
46
+ test('generate #2', async (t) => {
47
+ const res = await brotest(
48
+ generate,
49
+ '--dialect=postgresql --schema=schema.ts --out=out',
50
+ );
51
+
52
+ if (res.type !== 'handler') assert.fail(res.type, 'handler');
53
+ expect(res.options).toStrictEqual({
54
+ dialect: 'postgresql',
55
+ name: undefined,
56
+ custom: false,
57
+ prefix: 'index',
58
+ breakpoints: true,
59
+ schema: 'schema.ts',
60
+ out: 'out',
61
+ bundle: false,
62
+ casing: undefined,
63
+ driver: undefined,
64
+ });
65
+ });
66
+
67
+ test('generate #3', async (t) => {
68
+ const res = await brotest(generate, '');
69
+
70
+ if (res.type !== 'handler') assert.fail(res.type, 'handler');
71
+ expect(res.options).toStrictEqual({
72
+ dialect: 'postgresql',
73
+ name: undefined,
74
+ custom: false,
75
+ prefix: 'index',
76
+ breakpoints: true,
77
+ schema: './schema.ts',
78
+ out: 'drizzle',
79
+ bundle: false,
80
+ casing: undefined,
81
+ driver: undefined,
82
+ });
83
+ });
84
+
85
+ // config | pass through custom
86
+ test('generate #4', async (t) => {
87
+ const res = await brotest(generate, '--custom');
88
+
89
+ if (res.type !== 'handler') assert.fail(res.type, 'handler');
90
+ expect(res.options).toStrictEqual({
91
+ dialect: 'postgresql',
92
+ name: undefined,
93
+ custom: true,
94
+ prefix: 'index',
95
+ breakpoints: true,
96
+ schema: './schema.ts',
97
+ out: 'drizzle',
98
+ bundle: false,
99
+ casing: undefined,
100
+ driver: undefined,
101
+ });
102
+ });
103
+
104
+ // config | pass through name
105
+ test('generate #5', async (t) => {
106
+ const res = await brotest(generate, '--name=custom');
107
+ if (res.type !== 'handler') assert.fail(res.type, 'handler');
108
+ expect(res.options).toStrictEqual({
109
+ dialect: 'postgresql',
110
+ name: 'custom',
111
+ custom: false,
112
+ prefix: 'index',
113
+ breakpoints: true,
114
+ schema: './schema.ts',
115
+ out: 'drizzle',
116
+ bundle: false,
117
+ casing: undefined,
118
+ driver: undefined,
119
+ });
120
+ });
121
+
122
+ // config | pass through prefix
123
+ test('generate #6', async (t) => {
124
+ const res = await brotest(generate, '--prefix=timestamp');
125
+ if (res.type !== 'handler') assert.fail(res.type, 'handler');
126
+ expect(res.options).toStrictEqual({
127
+ dialect: 'postgresql',
128
+ name: undefined,
129
+ custom: false,
130
+ prefix: 'timestamp',
131
+ breakpoints: true,
132
+ schema: './schema.ts',
133
+ out: 'drizzle',
134
+ bundle: false,
135
+ casing: undefined,
136
+ driver: undefined,
137
+ });
138
+ });
139
+
140
+ // config | pass through name, prefix and custom
141
+ test('generate #7', async (t) => {
142
+ const res = await brotest(
143
+ generate,
144
+ '--prefix=timestamp --name=custom --custom',
145
+ );
146
+ if (res.type !== 'handler') assert.fail(res.type, 'handler');
147
+ expect(res.options).toStrictEqual({
148
+ dialect: 'postgresql',
149
+ name: 'custom',
150
+ custom: true,
151
+ prefix: 'timestamp',
152
+ breakpoints: true,
153
+ schema: './schema.ts',
154
+ out: 'drizzle',
155
+ bundle: false,
156
+ casing: undefined,
157
+ driver: undefined,
158
+ });
159
+ });
160
+
161
+ // custom config path
162
+ test('generate #8', async (t) => {
163
+ const res = await brotest(generate, '--config=expo.config.ts');
164
+ assert.equal(res.type, 'handler');
165
+ if (res.type !== 'handler') assert.fail(res.type, 'handler');
166
+ expect(res.options).toStrictEqual({
167
+ dialect: 'sqlite',
168
+ name: undefined,
169
+ custom: false,
170
+ prefix: 'index',
171
+ breakpoints: true,
172
+ schema: './schema.ts',
173
+ out: 'drizzle',
174
+ bundle: true, // expo driver
175
+ casing: undefined,
176
+ driver: 'expo',
177
+ });
178
+ });
179
+
180
+ test('generate #9', async (t) => {
181
+ const res = await brotest(generate, '--config=durable-sqlite.config.ts');
182
+ assert.equal(res.type, 'handler');
183
+ if (res.type !== 'handler') assert.fail(res.type, 'handler');
184
+ expect(res.options).toStrictEqual({
185
+ dialect: 'sqlite',
186
+ name: undefined,
187
+ custom: false,
188
+ prefix: 'index',
189
+ breakpoints: true,
190
+ schema: './schema.ts',
191
+ out: 'drizzle',
192
+ bundle: true, // expo driver
193
+ casing: undefined,
194
+ driver: 'durable-sqlite',
195
+ });
196
+ });
197
+
198
+ // cli | pass through name, prefix and custom
199
+ test('generate #9', async (t) => {
200
+ const res = await brotest(
201
+ generate,
202
+ '--dialect=postgresql --schema=schema.ts --out=out --prefix=timestamp --name=custom --custom',
203
+ );
204
+
205
+ if (res.type !== 'handler') assert.fail(res.type, 'handler');
206
+ expect(res.options).toStrictEqual({
207
+ dialect: 'postgresql',
208
+ name: 'custom',
209
+ custom: true,
210
+ prefix: 'timestamp',
211
+ breakpoints: true,
212
+ schema: 'schema.ts',
213
+ out: 'out',
214
+ bundle: false,
215
+ casing: undefined,
216
+ driver: undefined,
217
+ });
218
+ });
219
+
220
+ // --- errors ---
221
+ test('err #1', async (t) => {
222
+ const res = await brotest(generate, '--schema=src/schema.ts');
223
+ assert.equal(res.type, 'error');
224
+ });
225
+
226
+ test('err #2', async (t) => {
227
+ const res = await brotest(generate, '--dialect=postgresql');
228
+ assert.equal(res.type, 'error');
229
+ });
230
+
231
+ test('err #3', async (t) => {
232
+ const res = await brotest(generate, '--dialect=postgresql2');
233
+ assert.equal(res.type, 'error');
234
+ });
235
+
236
+ test('err #4', async (t) => {
237
+ const res = await brotest(generate, '--driver=expo');
238
+ assert.equal(res.type, 'error');
239
+ });
240
+
241
+ test('err #5', async (t) => {
242
+ const res = await brotest(generate, '--dialect=postgresql --out=out');
243
+ assert.equal(res.type, 'error');
244
+ });
245
+
246
+ test('err #6', async (t) => {
247
+ const res = await brotest(generate, '--config=drizzle.config.ts --out=out');
248
+ assert.equal(res.type, 'error');
249
+ });
250
+
251
+ test('err #7', async (t) => {
252
+ const res = await brotest(generate, '--config=drizzle.config.ts --schema=schema.ts');
253
+ assert.equal(res.type, 'error');
254
+ });
255
+
256
+ test('err #8', async (t) => {
257
+ const res = await brotest(generate, '--config=drizzle.config.ts --dialect=postgresql');
258
+ assert.equal(res.type, 'error');
259
+ });
@@ -0,0 +1,103 @@
1
+ import { test as brotest } from '@drizzle-team/brocli';
2
+ import { assert, expect, test } from 'vitest';
3
+ import { migrate } from '../src/cli/schema';
4
+
5
+ // good:
6
+ // #1 drizzle-kit generate
7
+ // #2 drizzle-kit generate --config=turso.config.ts
8
+ // #3 drizzle-kit generate --config=d1http.config.ts
9
+ // #4 drizzle-kit generate --config=postgres.config.ts ## spread connection params
10
+ // #5 drizzle-kit generate --config=drizzle2.config.ts ## custom schema and table for migrations journal
11
+
12
+ // errors:
13
+ // #1 drizzle-kit generate --config=expo.config.ts
14
+ // TODO: missing required params in config?
15
+
16
+ test('migrate #1', async (t) => {
17
+ const res = await brotest(migrate, '');
18
+ if (res.type !== 'handler') assert.fail(res.type, 'handler');
19
+ expect(res.options).toStrictEqual({
20
+ dialect: 'postgresql',
21
+ out: 'drizzle',
22
+ credentials: {
23
+ url: 'postgresql://postgres:postgres@127.0.0.1:5432/db',
24
+ },
25
+ schema: undefined, // drizzle migrations table schema
26
+ table: undefined, // drizzle migrations table name
27
+ });
28
+ });
29
+
30
+ test('migrate #2', async (t) => {
31
+ const res = await brotest(migrate, '--config=turso.config.ts');
32
+ if (res.type !== 'handler') assert.fail(res.type, 'handler');
33
+ expect(res.options).toStrictEqual({
34
+ dialect: 'turso',
35
+ out: 'drizzle',
36
+ credentials: {
37
+ authToken: 'token',
38
+ url: 'turso.dev',
39
+ },
40
+ schema: undefined, // drizzle migrations table schema
41
+ table: undefined, // drizzle migrations table name
42
+ });
43
+ });
44
+
45
+ test('migrate #3', async (t) => {
46
+ const res = await brotest(migrate, '--config=d1http.config.ts');
47
+ if (res.type !== 'handler') assert.fail(res.type, 'handler');
48
+ expect(res.options).toStrictEqual({
49
+ dialect: 'sqlite',
50
+ out: 'drizzle',
51
+ credentials: {
52
+ driver: 'd1-http',
53
+ accountId: 'accid',
54
+ databaseId: 'dbid',
55
+ token: 'token',
56
+ },
57
+ schema: undefined, // drizzle migrations table schema
58
+ table: undefined, // drizzle migrations table name
59
+ });
60
+ });
61
+
62
+ test('migrate #4', async (t) => {
63
+ const res = await brotest(migrate, '--config=postgres.config.ts');
64
+ if (res.type !== 'handler') assert.fail(res.type, 'handler');
65
+ expect(res.options).toStrictEqual({
66
+ dialect: 'postgresql',
67
+ out: 'drizzle',
68
+ credentials: {
69
+ database: 'db',
70
+ host: '127.0.0.1',
71
+ password: 'postgres',
72
+ port: 5432,
73
+ user: 'postgresql',
74
+ },
75
+ schema: undefined, // drizzle migrations table schema
76
+ table: undefined, // drizzle migrations table name
77
+ });
78
+ });
79
+
80
+ // catched a bug
81
+ test('migrate #5', async (t) => {
82
+ const res = await brotest(migrate, '--config=postgres2.config.ts');
83
+ if (res.type !== 'handler') assert.fail(res.type, 'handler');
84
+ expect(res.options).toStrictEqual({
85
+ dialect: 'postgresql',
86
+ out: 'drizzle',
87
+ credentials: {
88
+ database: 'db',
89
+ host: '127.0.0.1',
90
+ password: 'postgres',
91
+ port: 5432,
92
+ user: 'postgresql',
93
+ },
94
+ schema: 'custom', // drizzle migrations table schema
95
+ table: 'custom', // drizzle migrations table name
96
+ });
97
+ });
98
+
99
+ // --- errors ---
100
+ test('err #1', async (t) => {
101
+ const res = await brotest(migrate, '--config=expo.config.ts');
102
+ assert.equal(res.type, 'error');
103
+ });
@@ -0,0 +1,126 @@
1
+ import { test as brotest } from '@drizzle-team/brocli';
2
+ import { assert, expect, test } from 'vitest';
3
+ import { push } from '../src/cli/schema';
4
+
5
+ // good:
6
+ // #1 drizzle-kit push
7
+ // #2 drizzle-kit push --config=turso.config.ts
8
+ // #3 drizzle-kit push --config=d1http.config.ts
9
+ // #4 drizzle-kit push --config=postgres.config.ts ## spread connection params
10
+ // #5 drizzle-kit push --config=drizzle2.config.ts ## custom schema and table for migrations journal
11
+
12
+ // errors:
13
+ // #1 drizzle-kit push --config=expo.config.ts
14
+ // TODO: missing required params in config?
15
+
16
+ test('push #1', async (t) => {
17
+ const res = await brotest(push, '');
18
+ if (res.type !== 'handler') assert.fail(res.type, 'handler');
19
+ expect(res.options).toStrictEqual({
20
+ dialect: 'postgresql',
21
+ credentials: {
22
+ url: 'postgresql://postgres:postgres@127.0.0.1:5432/db',
23
+ },
24
+ force: false,
25
+ schemaPath: './schema.ts',
26
+ schemasFilter: ['public'],
27
+ tablesFilter: [],
28
+ entities: undefined,
29
+ strict: false,
30
+ verbose: false,
31
+ casing: undefined,
32
+ });
33
+ });
34
+
35
+ test('push #2', async (t) => {
36
+ const res = await brotest(push, '--config=turso.config.ts');
37
+ if (res.type !== 'handler') assert.fail(res.type, 'handler');
38
+ expect(res.options).toStrictEqual({
39
+ dialect: 'turso',
40
+ credentials: {
41
+ authToken: 'token',
42
+ url: 'turso.dev',
43
+ },
44
+ force: false,
45
+ schemaPath: './schema.ts',
46
+ schemasFilter: ['public'],
47
+ tablesFilter: [],
48
+ strict: false,
49
+ verbose: false,
50
+ casing: undefined,
51
+ });
52
+ });
53
+
54
+ test('push #3', async (t) => {
55
+ const res = await brotest(push, '--config=d1http.config.ts');
56
+ if (res.type !== 'handler') assert.fail(res.type, 'handler');
57
+ expect(res.options).toStrictEqual({
58
+ dialect: 'sqlite',
59
+ credentials: {
60
+ driver: 'd1-http',
61
+ accountId: 'accid',
62
+ databaseId: 'dbid',
63
+ token: 'token',
64
+ },
65
+ force: false,
66
+ schemaPath: './schema.ts',
67
+ schemasFilter: ['public'],
68
+ tablesFilter: [],
69
+ strict: false,
70
+ verbose: false,
71
+ casing: undefined,
72
+ });
73
+ });
74
+
75
+ test('push #4', async (t) => {
76
+ const res = await brotest(push, '--config=postgres.config.ts');
77
+ if (res.type !== 'handler') assert.fail(res.type, 'handler');
78
+ expect(res.options).toStrictEqual({
79
+ dialect: 'postgresql',
80
+ credentials: {
81
+ database: 'db',
82
+ host: '127.0.0.1',
83
+ password: 'postgres',
84
+ port: 5432,
85
+ user: 'postgresql',
86
+ },
87
+ force: false,
88
+ schemaPath: './schema.ts',
89
+ schemasFilter: ['public'],
90
+ tablesFilter: [],
91
+ entities: undefined,
92
+ strict: false,
93
+ verbose: false,
94
+ casing: undefined,
95
+ });
96
+ });
97
+
98
+ // catched a bug
99
+ test('push #5', async (t) => {
100
+ const res = await brotest(push, '--config=postgres2.config.ts');
101
+ if (res.type !== 'handler') assert.fail(res.type, 'handler');
102
+ expect(res.options).toStrictEqual({
103
+ dialect: 'postgresql',
104
+ credentials: {
105
+ database: 'db',
106
+ host: '127.0.0.1',
107
+ password: 'postgres',
108
+ port: 5432,
109
+ user: 'postgresql',
110
+ },
111
+ schemaPath: './schema.ts',
112
+ schemasFilter: ['public'],
113
+ tablesFilter: [],
114
+ strict: false,
115
+ entities: undefined,
116
+ force: false,
117
+ verbose: false,
118
+ casing: undefined,
119
+ });
120
+ });
121
+
122
+ // --- errors ---
123
+ test('err #1', async (t) => {
124
+ const res = await brotest(push, '--config=expo.config.ts');
125
+ assert.equal(res.type, 'error');
126
+ });
@@ -0,0 +1,15 @@
1
+ import { test } from 'vitest';
2
+
3
+ export interface DialectSuite {
4
+ /**
5
+ * 1 statement | create column:
6
+ *
7
+ * id int primary key autoincrement
8
+ */
9
+ columns1(): Promise<void>;
10
+ }
11
+
12
+ export const run = (suite: DialectSuite) => {
13
+ test('add columns #1', suite.columns1);
14
+ };
15
+ // test("add columns #1", suite.columns1)
@@ -0,0 +1,21 @@
1
+ import { afterAll, beforeAll, test } from 'vitest';
2
+
3
+ export interface DialectSuite {
4
+ simpleIndex(context?: any): Promise<void>;
5
+ vectorIndex(context?: any): Promise<void>;
6
+ indexesToBeTriggered(context?: any): Promise<void>;
7
+ }
8
+
9
+ export const run = (
10
+ suite: DialectSuite,
11
+ beforeAllFn?: (context: any) => Promise<void>,
12
+ afterAllFn?: (context: any) => Promise<void>,
13
+ ) => {
14
+ let context: any = {};
15
+ beforeAll(beforeAllFn ? () => beforeAllFn(context) : () => {});
16
+ test('index #1: simple index', () => suite.simpleIndex(context));
17
+ test('index #2: vector index', () => suite.vectorIndex(context));
18
+ test('index #3: fields that should be triggered on generate and not triggered on push', () =>
19
+ suite.indexesToBeTriggered(context));
20
+ afterAll(afterAllFn ? () => afterAllFn(context) : () => {});
21
+ };