import { IDataType } from '.'; import { Model } from '../core'; export interface TableOptions { tableName?: string; underscored?: boolean; } export interface RelationOptions { relation: { foreignKey: string; sourceKey: string; }[]; } export interface ColumnOptions { dataType: IDataType; field?: string; isNullable?: boolean; isPrimaryKey?: boolean; isAutoIncrement?: boolean; isUnique?: boolean; defaultValue?: any; } export interface TableMetadata { modelName: string; tableIdentifier: string; } export interface ColumnMetadata { propertyKey: string; dataType: IDataType; columnIdentifier: string; field?: string; isPrimaryKey?: boolean; isNullable?: boolean; isUnique?: boolean; isAutoIncrement?: boolean; defaultValue?: any; } export interface RelationMetadata { propertyKey: string; type: 'hasMany' | 'hasOne' | 'belongsTo'; targetModel: typeof Model; relation: { targetKey: string; sourceKey: string; }[]; }