export interface Config { hasuraUrl: string; hasuraAdminSecret?: string; generate: { tables: string[]; exclude?: string[]; output: string; entityBase?: { name: string; module: string; }; }; } export interface IndexMetadata { name: string; table: string; columns: string[]; type: "FOREIGN KEY" | "PRIMARY KEY" | "UNIQUE"; } export interface ColumnMetadata { name: string; type: string; isNullable: boolean; default?: string; isEnum: boolean; } export interface HasuraMetadata { tables: HasuraTableMetadata[]; } export interface HasuraObjectRelationMetadata { name: string; using: { foreign_key_constraint_on: string; }; } export interface HasuraArrayRelationMetadata { name: string; using: { foreign_key_constraint_on: { column: string; table: { schema: string; name: string; }; }; }; } export interface HasuraTableMetadata { table: { schema: string; name: string; }; is_enum: boolean; object_relationships?: HasuraObjectRelationMetadata[]; array_relationships?: HasuraArrayRelationMetadata[]; } export declare type PostgresOnEvent = "CASCADE" | "NO ACTION" | "RESTRICT" | "SET NULL"; export interface ForeignKeyMetadata { foreignName: string; column: string; referenceTable: string; referenceColumn: string; onUpdate: PostgresOnEvent; onDelete: PostgresOnEvent; } export interface TableMetadata { table: { schema: string; name: string; }; columns: ColumnMetadata[]; indexes: IndexMetadata[]; oneToMany: TableRelationMetadata[]; manyToOne: ManyToOneRelationMetadata[]; } export interface EnumMetadata { name: string; values: string[]; } export interface TableRelationMetadata { name: string; foreignName?: string; column: string; referenceTable: string; referenceColumn: string; reverse?: string; } export interface ManyToOneRelationMetadata extends TableRelationMetadata { onDelete: PostgresOnEvent; onUpdate: PostgresOnEvent; }