UNPKG

@junkawasaki/kawadb-orm

Version:

TypeScript ORM for KawaDB with KSQL support - works in Web and Electron environments

75 lines (74 loc) 1.72 kB
/** * エンティティ関連の型定義 */ export type EntityConstructor<T = any> = new (...args: any[]) => T; export type EntityProperty<T> = { [K in keyof T]: T[K]; }; export interface ColumnMetadata { name: string; type: DataType; nullable: boolean; primaryKey: boolean; autoIncrement: boolean; defaultValue?: any; unique?: boolean; index?: boolean; } export interface TableMetadata { name: string; columns: ColumnMetadata[]; primaryKey: string[]; indexes: IndexMetadata[]; } export interface IndexMetadata { name: string; columns: string[]; unique: boolean; } export declare enum DataType { STRING = "string", NUMBER = "number", BOOLEAN = "boolean", DATE = "date", JSON = "json", ARRAY = "array", OBJECT = "object" } export interface EntityMetadata { target: EntityConstructor; name: string; tableName: string; columns: ColumnMetadata[]; primaryKey: string[]; relations: RelationMetadata[]; } export interface RelationMetadata { type: 'one-to-one' | 'one-to-many' | 'many-to-one' | 'many-to-many'; target: EntityConstructor; joinColumn?: string; inverseJoinColumn?: string; propertyName: string; } export type EntityId = string | number; export interface BaseEntity { id?: EntityId; createdAt?: Date; updatedAt?: Date; } export interface FindOptions<T> { where?: Partial<T> | Partial<T>[]; order?: { [P in keyof T]?: 'ASC' | 'DESC'; }; skip?: number; take?: number; relations?: string[]; } export interface UpdateOptions<T> { where: Partial<T>; data: Partial<T>; } export interface DeleteOptions<T> { where: Partial<T>; }