-
Notifications
You must be signed in to change notification settings - Fork 119
/
Copy pathnaming-strategies.ts
37 lines (32 loc) · 1.36 KB
/
naming-strategies.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import camelCase from 'camelcase'
import pluralize from 'pluralize'
import { InternalDMMF } from './dmmf'
import { upperFirst } from './utils'
export interface ArgsNamingStrategy {
whereInput: (typeName: string, fieldName: string) => string
orderByInput: (typeName: string, fieldName: string) => string
relationFilterInput: (typeName: string, fieldName: string) => string
}
export const defaultArgsNamingStrategy: ArgsNamingStrategy = {
whereInput(typeName, fieldName) {
return `${upperFirst(typeName)}${upperFirst(fieldName)}WhereInput`
},
orderByInput(typeName, fieldName) {
return `${upperFirst(typeName)}${upperFirst(fieldName)}OrderByInput`
},
relationFilterInput(typeName, fieldName) {
return `${upperFirst(typeName)}${upperFirst(fieldName)}Filter`
},
}
export type OperationName = Exclude<keyof InternalDMMF.Mapping, 'model' | 'plural'>
export type FieldNamingStrategy = Record<OperationName, (fieldName: string, modelName: string) => string>
export const defaultFieldNamingStrategy: FieldNamingStrategy = {
findUnique: (_, modelName) => camelCase(modelName),
findMany: (_, modelName) => camelCase(pluralize(modelName)),
create: (fieldName) => fieldName,
update: (fieldName) => fieldName,
delete: (fieldName) => fieldName,
deleteMany: (fieldName) => fieldName,
updateMany: (fieldName) => fieldName,
upsert: (fieldName) => fieldName,
}