mirror of
https://github.com/djhackersdev/minime.git
synced 2026-08-20 01:14:08 -05:00
idz: Add TeamAutoRepository
This commit is contained in:
@@ -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
44
src/idz/db/teamAuto.ts
Normal 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);
|
||||
}
|
||||
}
|
||||
@@ -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>;
|
||||
|
||||
Reference in New Issue
Block a user