diff --git a/packages/schema/src/plugins/prisma/schema-generator.ts b/packages/schema/src/plugins/prisma/schema-generator.ts index 1194099d2..177edbd0e 100644 --- a/packages/schema/src/plugins/prisma/schema-generator.ts +++ b/packages/schema/src/plugins/prisma/schema-generator.ts @@ -82,7 +82,7 @@ import { const MODEL_PASSTHROUGH_ATTR = '@@prisma.passthrough'; const FIELD_PASSTHROUGH_ATTR = '@prisma.passthrough'; const PROVIDERS_SUPPORTING_NAMED_CONSTRAINTS = ['postgresql', 'mysql', 'cockroachdb']; -const PROVIDERS_SUPPORTING_TYPEDEF_FIELDS = ['postgresql']; +const PROVIDERS_SUPPORTING_TYPEDEF_FIELDS = ['postgresql', 'sqlite']; // Some database providers like postgres and mysql have default limit to the length of identifiers // Here we use a conservative value that should work for most cases, and truncate names if needed diff --git a/tests/integration/tests/enhancements/json/crud.test.ts b/tests/integration/tests/enhancements/json/crud.test.ts index f13b5727b..1a41b1b43 100644 --- a/tests/integration/tests/enhancements/json/crud.test.ts +++ b/tests/integration/tests/enhancements/json/crud.test.ts @@ -1,18 +1,22 @@ import { createPostgresDb, dropPostgresDb, loadSchema } from '@zenstackhq/testtools'; -describe('Json field CRUD', () => { +describe.each(['sqlite' as const, 'postgresql' as const])('Json field CRUD - %p', (provider) => { let dbUrl: string; let prisma: any; beforeEach(async () => { - dbUrl = await createPostgresDb('json-field-typing'); + if (provider === 'postgresql') { + dbUrl = await createPostgresDb('json-field-typing'); + } }); afterEach(async () => { - if (prisma) { - await prisma.$disconnect(); + if (provider === 'postgresql') { + if (prisma) { + await prisma.$disconnect(); + } + await dropPostgresDb(dbUrl); } - await dropPostgresDb(dbUrl); }); it('works with simple cases', async () => { @@ -41,7 +45,7 @@ describe('Json field CRUD', () => { } `, { - provider: 'postgresql', + provider, dbUrl, enhancements: ['validation'], } @@ -90,7 +94,7 @@ describe('Json field CRUD', () => { } `, { - provider: 'postgresql', + provider, dbUrl, } ); @@ -137,7 +141,7 @@ describe('Json field CRUD', () => { } `, { - provider: 'postgresql', + provider, dbUrl, } ); @@ -211,7 +215,7 @@ describe('Json field CRUD', () => { } `, { - provider: 'postgresql', + provider, dbUrl, } ); @@ -255,7 +259,7 @@ describe('Json field CRUD', () => { } `, { - provider: 'postgresql', + provider, dbUrl, } ); @@ -291,7 +295,7 @@ describe('Json field CRUD', () => { } `, { - provider: 'postgresql', + provider, dbUrl, } ); @@ -328,7 +332,7 @@ describe('Json field CRUD', () => { } `, { - provider: 'postgresql', + provider, dbUrl, } ); @@ -368,7 +372,7 @@ describe('Json field CRUD', () => { } `, { - provider: 'postgresql', + provider, dbUrl, } ); @@ -401,7 +405,7 @@ describe('Json field CRUD', () => { } `, { - provider: 'postgresql', + provider, dbUrl, } ); @@ -446,7 +450,7 @@ describe('Json field CRUD', () => { } `, { - provider: 'postgresql', + provider, dbUrl, compile: true, extraSourceFiles: [ diff --git a/tests/integration/tests/enhancements/json/typing.test.ts b/tests/integration/tests/enhancements/json/typing.test.ts index a2053770c..99869accd 100644 --- a/tests/integration/tests/enhancements/json/typing.test.ts +++ b/tests/integration/tests/enhancements/json/typing.test.ts @@ -1,6 +1,6 @@ import { loadSchema } from '@zenstackhq/testtools'; -describe('JSON field typing', () => { +describe.each(['sqlite' as const, 'postgresql' as const])('JSON field typing - %p', (provider) => { it('works with simple field', async () => { await loadSchema( ` @@ -23,7 +23,7 @@ describe('JSON field typing', () => { } `, { - provider: 'postgresql', + provider, pushDb: false, compile: true, extraSourceFiles: [ @@ -64,7 +64,7 @@ async function main() { } `, { - provider: 'postgresql', + provider, pushDb: false, compile: true, extraSourceFiles: [ @@ -105,7 +105,7 @@ async function main() { } `, { - provider: 'postgresql', + provider, pushDb: false, compile: true, extraSourceFiles: [ @@ -151,7 +151,7 @@ async function main() { } `, { - provider: 'postgresql', + provider, pushDb: false, compile: true, extraSourceFiles: [ @@ -203,7 +203,7 @@ async function main() { } `, { - provider: 'postgresql', + provider, pushDb: false, compile: true, extraSourceFiles: [ @@ -252,7 +252,7 @@ async function main() { } `, { - provider: 'postgresql', + provider, pushDb: false, compile: true, extraSourceFiles: [ @@ -303,7 +303,7 @@ async function main() { } `, { - provider: 'postgresql', + provider, pushDb: false, compile: true, extraSourceFiles: [ @@ -348,7 +348,7 @@ async function main() { } `, { - provider: 'postgresql', + provider, pushDb: false, compile: true, extraSourceFiles: [ diff --git a/tests/integration/tests/enhancements/json/validation.test.ts b/tests/integration/tests/enhancements/json/validation.test.ts index df5dfc281..a398234f9 100644 --- a/tests/integration/tests/enhancements/json/validation.test.ts +++ b/tests/integration/tests/enhancements/json/validation.test.ts @@ -1,24 +1,6 @@ import { loadModel, loadModelWithError, loadSchema } from '@zenstackhq/testtools'; describe('JSON field typing', () => { - it('is only supported by postgres', async () => { - await expect( - loadSchema( - ` - type Profile { - age Int @gt(0) - } - - model User { - id Int @id @default(autoincrement()) - profile Profile @json - @@allow('all', true) - } - ` - ) - ).rejects.toThrow('Datasource provider "sqlite" does not support "@json" fields'); - }); - it('requires field to have @json attribute', async () => { await expect( loadModelWithError(