_matrix.ts•2.77 kB
import { defineMatrix } from '../_utils/defineMatrix'
import { Providers } from '../_utils/providers'
import { computeMatrix } from '../_utils/relationMode/computeMatrix'
// const RelationModeEnv = process.env.RELATION_MODE
// if (RelationModeEnv && RelationModeEnv !== 'prisma' && RelationModeEnv !== 'foreignKeys') {
// throw new Error(`RELATION_MODE must be either "prisma" or "foreignKeys" but was "${RelationModeEnv}"`)
// }
// type RelationMode = 'prisma' | 'foreignKeys' | ''
// const relationMode: RelationMode = (RelationModeEnv as RelationMode) || ''
// const defaultMatrix = computeMatrix({ relationMode })
// console.log(defaultMatrix)
// SetNull (everywhere) fails with:
// error: Error parsing attribute "@relation": The `onDelete` referential action of a relation must not be set to `SetNull` when a referenced field is required.
// Either choose another referential action, or make the referenced fields optional.
// So we filter these out
//
export default defineMatrix(() => [
// [...defaultMatrix.filter((entry) => entry.onDelete !== 'SetNull' && entry.onUpdate !== 'SetNull')],
//
// SQLite fails, only in Windows CI with
// https://github.com/prisma/prisma/actions/runs/4068097706/jobs/7006246193
// ● relationMode-17255-same-actions (relationMode=foreignKeys,provider=sqlite,driverAdapter=sqlite,onUpdate=NoAction,onDelete=NoAction,id=String @id) › not-original › onUpdate: Restrict, NoAction, SetNull › relationMode=foreignKeys [update] main with nested delete alice should fail
// SQLite database error
// unable to open database file
// 0: sql_migration_connector::apply_migration::apply_migration
// at schema-engine\connectors\sql-migration-connector\src\apply_migration.rs:10
// 1: migration_core::state::SchemaPush
// at schema-engine\core\src\state.rs:433
//
// Probably because the path is too long or has a special character?
// Didn't have time to figure it out....
// So it's skipped for now, not ideal but "ok"
//
[
...computeMatrix({ relationMode: 'foreignKeys' }).filter((entry) => {
const isSetNull = entry.onDelete === 'SetNull' && entry.onUpdate === 'SetNull'
const isSQLite = entry.provider === Providers.SQLITE
if (process.platform === 'win32') {
return !isSetNull && !isSQLite
} else {
return !isSetNull
}
}),
...computeMatrix({ relationMode: 'prisma' }).filter((entry) => {
const isSetNull = entry.onDelete === 'SetNull' && entry.onUpdate === 'SetNull'
const isSQLite = entry.provider === Providers.SQLITE
if (process.platform === 'win32') {
return !isSetNull && !isSQLite
} else {
return !isSetNull
}
}),
],
[],
])