feat(persistance) : add DAO
This commit is contained in:
28
src/app/dao/ComposedDAO.ts
Normal file
28
src/app/dao/ComposedDAO.ts
Normal 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user