配置类型生成
默认情况下, gtype
采用与 prisma generate
相同的规则, 比如: xxUpdateInput
所有属性变为可选, 可以在tealina.config.mjs
修改这些规则.
js
// @ts-check
import { defineConfig } from 'tealina'
export default defineConfig({
gtype:{
// ...
}
})
// @ts-check
import { defineConfig } from 'tealina'
export default defineConfig({
gtype:{
// ...
}
})
部分重写
当类型用于创建时,移除id
属性
js
{
overwrite: {
excludeProps: [
{
blockName: '*',// '*' 指匹配所有
keyword: 'model',
kind: 'CreateInput',
predicate: p => p.name === 'id',
},
],
},
}
{
overwrite: {
excludeProps: [
{
blockName: '*',// '*' 指匹配所有
keyword: 'model',
kind: 'CreateInput',
predicate: p => p.name === 'id',
},
],
},
}
prisma
model Category {
id Int @id @default(autoincrement())
categoryName String
description String
products Product[]
}
model Category {
id Int @id @default(autoincrement())
categoryName String
description String
products Product[]
}
ts
interface Category {
categoryName: string
description: string
}
interface Category {
categoryName: string
description: string
}
类型重映射
重映射比部分重写更直接, 影响所有种类(model
,type
,xxCreateInput
,xxUpdateInput
,xx
)
js
{
typeRemap: type => {
switch (type) {
case 'Date':
return 'number | string'
// ....
default:
// 返回 null 使用默认规则
return null
}
},
}
{
typeRemap: type => {
switch (type) {
case 'Date':
return 'number | string'
// ....
default:
// 返回 null 使用默认规则
return null
}
},
}
默认映射规则
ts
/** https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#model-field-scalar-types */
const justMap = new Map<string, string>([
['BigInt', 'bigint'],
['Int', 'number'],
['Float', 'number'],
['Decimal', 'number'],
['String', 'string'],
['DateTime', 'Date'],
['Boolean', 'boolean'],
['Json', 'JsonValue'],
['Bytes', 'Buffer'],
])
/** https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#model-field-scalar-types */
const justMap = new Map<string, string>([
['BigInt', 'bigint'],
['Int', 'number'],
['Float', 'number'],
['Decimal', 'number'],
['String', 'string'],
['DateTime', 'Date'],
['Boolean', 'boolean'],
['Json', 'JsonValue'],
['Bytes', 'Buffer'],
])