feat(persistance) : add DAO

This commit is contained in:
2026-01-17 15:01:16 -03:00
parent 8b462f98f6
commit fd763cc162
7 changed files with 310 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
import { QueryResult } from '../types/sqlite.type';
import { BaseDAO } from './BaseDAO';
export abstract class ComposedDAO<T extends Object, K extends Object, U> extends BaseDAO<T, K, U> {
protected readonly JOIN_SQL: string;
protected readonly tableAlias: string;
constructor(tableName: string, joinSql: string, tableAlias: string) {
super(tableName);
this.JOIN_SQL = joinSql;
this.tableAlias = tableAlias;
}
override async findAll() {
const result: QueryResult<U> = await this.sqlite.executeQuery(this.JOIN_SQL);
return result.rows.map(this.fromDB);
}
override async findBy(values: Partial<K>): Promise<T[]> {
let sql = this.JOIN_SQL.slice(0, -1) + ' ';
const params: any[] = [];
const whereSql = this.whereClauseGenerator(values, params, this.tableAlias);
sql += whereSql + ';';
console.log(sql);
const result: QueryResult<U> = await this.sqlite.executeQuery(sql, params);
return result.rows.map(this.fromDB);
}
}