@junkawasaki/kawadb-orm
Version:
TypeScript ORM for KawaDB with KSQL support - works in Web and Electron environments
86 lines (85 loc) • 2.16 kB
TypeScript
/**
* 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;
}