From 7b21a0bdae7a1c16d6e8657837f48f9b45cbb5c7 Mon Sep 17 00:00:00 2001 From: Tau Date: Sat, 25 Jan 2020 19:26:03 -0500 Subject: [PATCH] idz: Implement multi-page Garage fetch --- src/idz/handler/loadGarage.ts | 2 +- src/idz/repo.ts | 6 +++++- src/idz/sql/car.ts | 11 +++++++++-- types/sql-bricks-postgres/index.d.ts | 2 +- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/idz/handler/loadGarage.ts b/src/idz/handler/loadGarage.ts index c3dae24..eff45d2 100644 --- a/src/idz/handler/loadGarage.ts +++ b/src/idz/handler/loadGarage.ts @@ -10,6 +10,6 @@ export async function loadGarage( return { type: "load_garage_res", - cars: await w.car().loadAllCars(profileId), + cars: await w.car().loadCars(profileId, 10, req.fetchOffset), }; } diff --git a/src/idz/repo.ts b/src/idz/repo.ts index 7bb5b0c..fef2903 100644 --- a/src/idz/repo.ts +++ b/src/idz/repo.ts @@ -11,7 +11,11 @@ export type TeamSpec = Subtract< export interface CarRepository { countCars(profileId: Id): Promise; - loadAllCars(profileId: Id): Promise; + loadCars( + profileId: Id, + limit: number, + offset: number + ): Promise; loadSelectedCar(profileId: Id): Promise; diff --git a/src/idz/sql/car.ts b/src/idz/sql/car.ts index 3b8930a..1b3d436 100644 --- a/src/idz/sql/car.ts +++ b/src/idz/sql/car.ts @@ -40,11 +40,18 @@ export class SqlCarRepository implements CarRepository { return parseInt(row!.result); } - async loadAllCars(profileId: Id): Promise { + async loadCars( + profileId: Id, + limit: number, + offset: number + ): Promise { const loadSql = sql .select("c.*") .from("idz_car c") - .where("c.profile_id", profileId); + .where("c.profile_id", profileId) + .orderBy("selector asc") + .limit(limit) + .offset(offset); const rows = await this._txn.fetchRows(loadSql); diff --git a/types/sql-bricks-postgres/index.d.ts b/types/sql-bricks-postgres/index.d.ts index 7e64e8c..8881be5 100644 --- a/types/sql-bricks-postgres/index.d.ts +++ b/types/sql-bricks-postgres/index.d.ts @@ -7,7 +7,7 @@ declare module "sql-bricks-postgres" { } interface LimitClause extends sql.SelectStatement { - offset(value: number): sql.Statement; + offset(value: number): sql.SelectStatement; } export interface PgInsertStatement extends sql.InsertStatement {