idz: Add TeamAutoRepository

This commit is contained in:
Tau
2019-05-28 15:46:58 -04:00
parent be48619a4a
commit a5dbdef33f
3 changed files with 57 additions and 0 deletions

View File

@@ -9,6 +9,7 @@ import { SqlProfileRepository } from "./profile";
import { SqlSettingsRepository } from "./settings";
import { SqlStoryRepository } from "./story";
import { SqlTeamRepository } from "./team";
import { SqlTeamAutoRepository } from "./teamAuto";
import { SqlTeamMemberRepository } from "./teamMember";
import { SqlTicketsRepository } from "./tickets";
import { SqlTimeAttackRepository } from "./timeAttack";
@@ -57,6 +58,10 @@ class TransactionImpl implements Repo.Transaction {
return new SqlTeamRepository(this._conn);
}
teamAuto(): Repo.TeamAutoRepository {
return new SqlTeamAutoRepository(this._conn);
}
teamMembers(): Repo.TeamMemberRepository {
return new SqlTeamMemberRepository(this._conn);
}

44
src/idz/db/teamAuto.ts Normal file
View File

@@ -0,0 +1,44 @@
import * as sql from "sql-bricks-postgres";
import { ClientBase } from "pg";
import { Team, TeamAuto } from "../model/team";
import { TeamAutoRepository } from "../repo";
import { Id } from "../../db";
export class SqlTeamAutoRepository implements TeamAutoRepository {
constructor(private readonly _conn: ClientBase) {}
async peek(): Promise<[TeamAuto, Id<Team>] | undefined> {
const peekSql = sql
.select("tt.*")
.from("idz.team_auto tt")
.orderBy("serial_no desc", "name_idx desc")
.limit(1)
.toParams();
const { rows } = await this._conn.query(peekSql);
const row = rows[0];
return (
row && [
{
serialNo: row.serial_no,
nameIdx: row.name_idx,
},
row.id,
]
);
}
async push(teamId: Id<Team>, auto: TeamAuto): Promise<void> {
const pushSql = sql
.insert("idz.team_auto", {
id: teamId,
serial_no: auto.serialNo,
name_idx: auto.nameIdx,
})
.toParams();
await this._conn.query(pushSql);
}
}

View File

@@ -69,6 +69,12 @@ export interface TeamRepository {
delete(id: Id<Model.Team>): Promise<void>;
}
export interface TeamAutoRepository {
peek(): Promise<[Model.TeamAuto, Id<Model.Team>] | undefined>;
push(teamId: Id<Model.Team>, auto: Model.TeamAuto): Promise<void>;
}
export interface TeamMemberRepository {
findTeam(profileId: Id<Model.Profile>): Promise<Id<Model.Team> | undefined>;
@@ -131,6 +137,8 @@ export interface Repositories {
teams(): TeamRepository;
teamAuto(): TeamAutoRepository;
teamMembers(): TeamMemberRepository;
tickets(): FacetRepository<Model.Tickets>;