UNPKG

@junkawasaki/kawadb-orm

Version:

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

86 lines (85 loc) 2.16 kB
/** * Repository クラス */ import { Entity } from './Entity'; import { Connection } from './Connection'; import { Logger } from '../utils/Logger'; import { EntityConstructor, FindOptions, DeleteOptions, EntityId } from '../types/EntityTypes'; /** * エンティティのCRUD操作を提供するリポジトリ */ export declare class Repository<T extends Entity> { private entityConstructor; private connection; private logger; private tableName; constructor(entityConstructor: EntityConstructor<T>, connection: Connection, logger: Logger); /** * エンティティを保存 */ save(entity: T): Promise<T>; /** * 新しいエンティティを作成 */ create(entity: T): Promise<T>; /** * エンティティを更新 */ update(entity: T): Promise<T>; /** * IDでエンティティを検索 */ findById(id: EntityId): Promise<T | null>; /** * 条件でエンティティを検索 */ find(options?: FindOptions<T>): Promise<T[]>; /** * 1つのエンティティを検索 */ findOne(options?: FindOptions<T>): Promise<T | null>; /** * エンティティを削除 */ delete(id: EntityId): Promise<boolean>; /** * 条件に基づいて削除 */ deleteMany(options: DeleteOptions<T>): Promise<number>; /** * エンティティ数をカウント */ count(options?: FindOptions<T>): Promise<number>; /** * エンティティが存在するかチェック */ exists(id: EntityId): Promise<boolean>; /** * 全エンティティを削除 */ clear(): Promise<void>; /** * イベントタイプでエンティティを検索 */ private findByEvent; /** * WHERE条件を適用 */ private applyWhereCondition; /** * 条件マッチングをチェック */ private matchesCondition; /** * ORDER BY を適用 */ private applyOrderBy; /** * テーブル名を取得 */ private getTableName; /** * 新しいIDを生成 */ private generateId; }