fix: adjust contact balance

This commit is contained in:
Ahmed Bouhuolia
2025-06-26 17:04:46 +02:00
parent 6a39e9d71f
commit e7178a6575
19 changed files with 180 additions and 54 deletions

View File

@@ -14,13 +14,13 @@ export type PaginationQueryBuilderType<M extends Model> = QueryBuilder<
PaginationResult<M>
>;
class PaginationQueryBuilder<M extends Model, R = M[]> extends QueryBuilder<
M,
R
> {
export class PaginationQueryBuilder<
M extends Model,
R = M[],
> extends QueryBuilder<M, R> {
pagination(page: number, pageSize: number): PaginationQueryBuilderType<M> {
const query = super.page(page, pageSize);
return query.runAfter(({ results, total }) => {
return {
results,
@@ -34,10 +34,27 @@ class PaginationQueryBuilder<M extends Model, R = M[]> extends QueryBuilder<
}
}
// New BaseQueryBuilder extending PaginationQueryBuilder
export class BaseQueryBuilder<
M extends Model,
R = M[],
> extends PaginationQueryBuilder<M, R> {
// You can add more shared query methods here in the future
changeAmount(whereAttributes, attribute, amount) {
const changeMethod = amount > 0 ? 'increment' : 'decrement';
return this.where(whereAttributes)[changeMethod](
attribute,
Math.abs(amount),
);
}
}
export class BaseModel extends Model {
public readonly id: number;
public readonly tableName: string;
QueryBuilderType!: PaginationQueryBuilder<this>;
static QueryBuilder = PaginationQueryBuilder;
QueryBuilderType!: BaseQueryBuilder<this>;
static QueryBuilder = BaseQueryBuilder;
}