Skip to content

Commit efb40fe

Browse files
Add fix for Gel Schemas (#4483)
* Add fix for Gel Schemas * dprint * dprint
1 parent ad28dcd commit efb40fe

File tree

8 files changed

+295
-411
lines changed

8 files changed

+295
-411
lines changed

changelogs/drizzle-kit/0.31.1.md

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
### Fixed `drizzle-kit pull` bugs when using Gel extensions.
2+
3+
Because Gel extensions create schema names containing `::` (for example, `ext::auth`), Drizzle previously handled these names incorrectly. Starting with this release, you can use Gel extensions without any problems. Here’s what you should do:
4+
5+
1. Enable extensions schemas in `drizzle.config.ts`
6+
7+
```ts
8+
import { defineConfig } from "drizzle-kit";
9+
10+
export default defineConfig({
11+
dialect: 'gel',
12+
schemaFilter: ['ext::auth', 'public']
13+
});
14+
```
15+
16+
2. Run `drizzle-kit pull`
17+
18+
3. Done!

drizzle-kit/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "drizzle-kit",
3-
"version": "0.31.0",
3+
"version": "0.31.1",
44
"homepage": "https://orm.drizzle.team",
55
"keywords": [
66
"drizzle",

drizzle-kit/src/cli/commands/introspect.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -791,8 +791,8 @@ export const relationsToTypeScript = (
791791
Object.values(table.foreignKeys).forEach((fk) => {
792792
const tableNameFrom = paramNameFor(fk.tableFrom, table.schema);
793793
const tableNameTo = paramNameFor(fk.tableTo, fk.schemaTo);
794-
const tableFrom = withCasing(tableNameFrom, casing);
795-
const tableTo = withCasing(tableNameTo, casing);
794+
const tableFrom = withCasing(tableNameFrom.replace(/:+/g, ''), casing);
795+
const tableTo = withCasing(tableNameTo.replace(/:+/g, ''), casing);
796796
const columnFrom = withCasing(fk.columnsFrom[0], casing);
797797
const columnTo = withCasing(fk.columnsTo[0], casing);
798798

drizzle-kit/src/cli/schema.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import { error, grey, MigrateProgress } from './views';
3333
const optionDialect = string('dialect')
3434
.enum(...dialects)
3535
.desc(
36-
`Database dialect: 'postgresql', 'mysql', 'sqlite', 'turso' or 'singlestore'`,
36+
`Database dialect: 'gel', 'postgresql', 'mysql', 'sqlite', 'turso' or 'singlestore'`,
3737
);
3838
const optionOut = string().desc("Output folder, 'drizzle' by default");
3939
const optionConfig = string().desc('Path to drizzle config file');

drizzle-kit/src/introspect-gel.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ export const schemaToTypeScript = (schema: GelSchemaInternal, casing: Casing) =>
219219

220220
const schemas = Object.fromEntries(
221221
Object.entries(schema.schemas).map((it) => {
222-
return [it[0], withCasing(it[1], casing)];
222+
return [it[0], withCasing(it[1].replace('::', ''), casing)];
223223
}),
224224
);
225225

@@ -366,7 +366,7 @@ export const schemaToTypeScript = (schema: GelSchemaInternal, casing: Casing) =>
366366
const schemaStatements = Object.entries(schemas)
367367
.filter((it) => it[0] !== 'public')
368368
.map((it) => {
369-
return `export const ${it[1]} = gelSchema("${it[0]}");\n`;
369+
return `export const ${it[1].replace('::', '').camelCase()} = gelSchema("${it[0]}");\n`;
370370
})
371371
.join('');
372372

0 commit comments

Comments
 (0)