@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,234 @@
1
+ import { pgRole } from 'drizzle-orm/pg-core';
2
+ import { diffTestSchemas } from 'tests/schemaDiffer';
3
+ import { expect, test } from 'vitest';
4
+
5
+ test('create role', async (t) => {
6
+ const schema1 = {};
7
+
8
+ const schema2 = {
9
+ manager: pgRole('manager'),
10
+ };
11
+
12
+ const { statements, sqlStatements } = await diffTestSchemas(schema1, schema2, []);
13
+
14
+ expect(sqlStatements).toStrictEqual(['CREATE ROLE "manager";']);
15
+ expect(statements).toStrictEqual([
16
+ {
17
+ name: 'manager',
18
+ type: 'create_role',
19
+ values: {
20
+ createDb: false,
21
+ createRole: false,
22
+ inherit: true,
23
+ },
24
+ },
25
+ ]);
26
+ });
27
+
28
+ test('create role with properties', async (t) => {
29
+ const schema1 = {};
30
+
31
+ const schema2 = {
32
+ manager: pgRole('manager', { createDb: true, inherit: false, createRole: true }),
33
+ };
34
+
35
+ const { statements, sqlStatements } = await diffTestSchemas(schema1, schema2, []);
36
+
37
+ expect(sqlStatements).toStrictEqual(['CREATE ROLE "manager" WITH CREATEDB CREATEROLE NOINHERIT;']);
38
+ expect(statements).toStrictEqual([
39
+ {
40
+ name: 'manager',
41
+ type: 'create_role',
42
+ values: {
43
+ createDb: true,
44
+ createRole: true,
45
+ inherit: false,
46
+ },
47
+ },
48
+ ]);
49
+ });
50
+
51
+ test('create role with some properties', async (t) => {
52
+ const schema1 = {};
53
+
54
+ const schema2 = {
55
+ manager: pgRole('manager', { createDb: true, inherit: false }),
56
+ };
57
+
58
+ const { statements, sqlStatements } = await diffTestSchemas(schema1, schema2, []);
59
+
60
+ expect(sqlStatements).toStrictEqual(['CREATE ROLE "manager" WITH CREATEDB NOINHERIT;']);
61
+ expect(statements).toStrictEqual([
62
+ {
63
+ name: 'manager',
64
+ type: 'create_role',
65
+ values: {
66
+ createDb: true,
67
+ createRole: false,
68
+ inherit: false,
69
+ },
70
+ },
71
+ ]);
72
+ });
73
+
74
+ test('drop role', async (t) => {
75
+ const schema1 = { manager: pgRole('manager') };
76
+
77
+ const schema2 = {};
78
+
79
+ const { statements, sqlStatements } = await diffTestSchemas(schema1, schema2, []);
80
+
81
+ expect(sqlStatements).toStrictEqual(['DROP ROLE "manager";']);
82
+ expect(statements).toStrictEqual([
83
+ {
84
+ name: 'manager',
85
+ type: 'drop_role',
86
+ },
87
+ ]);
88
+ });
89
+
90
+ test('create and drop role', async (t) => {
91
+ const schema1 = {
92
+ manager: pgRole('manager'),
93
+ };
94
+
95
+ const schema2 = {
96
+ admin: pgRole('admin'),
97
+ };
98
+
99
+ const { statements, sqlStatements } = await diffTestSchemas(schema1, schema2, []);
100
+
101
+ expect(sqlStatements).toStrictEqual(['DROP ROLE "manager";', 'CREATE ROLE "admin";']);
102
+ expect(statements).toStrictEqual([
103
+ {
104
+ name: 'manager',
105
+ type: 'drop_role',
106
+ },
107
+ {
108
+ name: 'admin',
109
+ type: 'create_role',
110
+ values: {
111
+ createDb: false,
112
+ createRole: false,
113
+ inherit: true,
114
+ },
115
+ },
116
+ ]);
117
+ });
118
+
119
+ test('rename role', async (t) => {
120
+ const schema1 = {
121
+ manager: pgRole('manager'),
122
+ };
123
+
124
+ const schema2 = {
125
+ admin: pgRole('admin'),
126
+ };
127
+
128
+ const { statements, sqlStatements } = await diffTestSchemas(schema1, schema2, ['manager->admin']);
129
+
130
+ expect(sqlStatements).toStrictEqual(['ALTER ROLE "manager" RENAME TO "admin";']);
131
+ expect(statements).toStrictEqual([
132
+ { nameFrom: 'manager', nameTo: 'admin', type: 'rename_role' },
133
+ ]);
134
+ });
135
+
136
+ test('alter all role field', async (t) => {
137
+ const schema1 = {
138
+ manager: pgRole('manager'),
139
+ };
140
+
141
+ const schema2 = {
142
+ manager: pgRole('manager', { createDb: true, createRole: true, inherit: false }),
143
+ };
144
+
145
+ const { statements, sqlStatements } = await diffTestSchemas(schema1, schema2, []);
146
+
147
+ expect(sqlStatements).toStrictEqual(['ALTER ROLE "manager" WITH CREATEDB CREATEROLE NOINHERIT;']);
148
+ expect(statements).toStrictEqual([
149
+ {
150
+ name: 'manager',
151
+ type: 'alter_role',
152
+ values: {
153
+ createDb: true,
154
+ createRole: true,
155
+ inherit: false,
156
+ },
157
+ },
158
+ ]);
159
+ });
160
+
161
+ test('alter createdb in role', async (t) => {
162
+ const schema1 = {
163
+ manager: pgRole('manager'),
164
+ };
165
+
166
+ const schema2 = {
167
+ manager: pgRole('manager', { createDb: true }),
168
+ };
169
+
170
+ const { statements, sqlStatements } = await diffTestSchemas(schema1, schema2, []);
171
+
172
+ expect(sqlStatements).toStrictEqual(['ALTER ROLE "manager" WITH CREATEDB NOCREATEROLE INHERIT;']);
173
+ expect(statements).toStrictEqual([
174
+ {
175
+ name: 'manager',
176
+ type: 'alter_role',
177
+ values: {
178
+ createDb: true,
179
+ createRole: false,
180
+ inherit: true,
181
+ },
182
+ },
183
+ ]);
184
+ });
185
+
186
+ test('alter createrole in role', async (t) => {
187
+ const schema1 = {
188
+ manager: pgRole('manager'),
189
+ };
190
+
191
+ const schema2 = {
192
+ manager: pgRole('manager', { createRole: true }),
193
+ };
194
+
195
+ const { statements, sqlStatements } = await diffTestSchemas(schema1, schema2, []);
196
+
197
+ expect(sqlStatements).toStrictEqual(['ALTER ROLE "manager" WITH NOCREATEDB CREATEROLE INHERIT;']);
198
+ expect(statements).toStrictEqual([
199
+ {
200
+ name: 'manager',
201
+ type: 'alter_role',
202
+ values: {
203
+ createDb: false,
204
+ createRole: true,
205
+ inherit: true,
206
+ },
207
+ },
208
+ ]);
209
+ });
210
+
211
+ test('alter inherit in role', async (t) => {
212
+ const schema1 = {
213
+ manager: pgRole('manager'),
214
+ };
215
+
216
+ const schema2 = {
217
+ manager: pgRole('manager', { inherit: false }),
218
+ };
219
+
220
+ const { statements, sqlStatements } = await diffTestSchemas(schema1, schema2, []);
221
+
222
+ expect(sqlStatements).toStrictEqual(['ALTER ROLE "manager" WITH NOCREATEDB NOCREATEROLE NOINHERIT;']);
223
+ expect(statements).toStrictEqual([
224
+ {
225
+ name: 'manager',
226
+ type: 'alter_role',
227
+ values: {
228
+ createDb: false,
229
+ createRole: false,
230
+ inherit: false,
231
+ },
232
+ },
233
+ ]);
234
+ });