single-source-of-truth
Version:
Use Zod schemas to your generate Prisma schema
79 lines (66 loc) • 1.59 kB
text/typescript
export namespace Standard {
export interface Schema {
enums: Enum[];
models: Model[];
}
export interface Enum {
name: string;
values: Enum.Value[];
}
export namespace Enum {
export interface Value {
name: string;
}
}
export interface Model {
name: string;
fields: Model.Field[];
attributes: Model.Attributes;
}
export namespace Model {
export interface Attributes {
id?: string[];
unique?: string[][];
}
export type Field = Field.Enum | Field.Scalar | Field.Object;
export namespace Field {
export interface Attributes {
id?: boolean;
unique?: boolean;
updatedAt?: boolean;
nullable?: boolean;
list?: boolean;
name?: string;
references?: [string, string][];
}
interface Base {
name: string;
attributes: Attributes;
}
export interface Scalar extends Base {
kind: 'scalar';
type: Scalar.Type;
}
export namespace Scalar {
export type Type =
| 'string'
| 'integer'
| 'float'
| 'boolean'
| 'date'
| 'bigint'
| 'object';
}
export interface Enum extends Base {
kind: 'enum';
type: string; // references Enum.name
}
export interface Object extends Base {
kind: 'object';
type: string; // references Model.name
}
export type Kind = 'scalar' | 'enum' | 'object';
export type Type = Scalar.Type | (string & {});
}
}
}