brackets-drizzle-db 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +674 -0
- package/README.md +136 -0
- package/dist/db/index.d.ts +7 -0
- package/dist/db/index.js +48 -0
- package/dist/db/schema/enums.d.ts +12 -0
- package/dist/db/schema/enums.js +41 -0
- package/dist/db/schema/group.d.ts +65 -0
- package/dist/db/schema/group.js +26 -0
- package/dist/db/schema/index.d.ts +8 -0
- package/dist/db/schema/index.js +26 -0
- package/dist/db/schema/match-game.d.ts +267 -0
- package/dist/db/schema/match-game.js +81 -0
- package/dist/db/schema/match.d.ts +303 -0
- package/dist/db/schema/match.js +94 -0
- package/dist/db/schema/participant.d.ts +82 -0
- package/dist/db/schema/participant.js +27 -0
- package/dist/db/schema/round.d.ts +82 -0
- package/dist/db/schema/round.js +33 -0
- package/dist/db/schema/stage.d.ts +344 -0
- package/dist/db/schema/stage.js +72 -0
- package/dist/db/schema/tournament.d.ts +115 -0
- package/dist/db/schema/tournament.js +25 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +19 -0
- package/dist/storage-handlers/delete-handlers/group.d.ts +3 -0
- package/dist/storage-handlers/delete-handlers/group.js +27 -0
- package/dist/storage-handlers/delete-handlers/index.d.ts +7 -0
- package/dist/storage-handlers/delete-handlers/index.js +23 -0
- package/dist/storage-handlers/delete-handlers/match-game.d.ts +3 -0
- package/dist/storage-handlers/delete-handlers/match-game.js +43 -0
- package/dist/storage-handlers/delete-handlers/match.d.ts +3 -0
- package/dist/storage-handlers/delete-handlers/match.js +45 -0
- package/dist/storage-handlers/delete-handlers/participant.d.ts +3 -0
- package/dist/storage-handlers/delete-handlers/participant.js +27 -0
- package/dist/storage-handlers/delete-handlers/round.d.ts +3 -0
- package/dist/storage-handlers/delete-handlers/round.js +29 -0
- package/dist/storage-handlers/delete-handlers/stage.d.ts +3 -0
- package/dist/storage-handlers/delete-handlers/stage.js +48 -0
- package/dist/storage-handlers/delete-handlers/tournament.d.ts +3 -0
- package/dist/storage-handlers/delete-handlers/tournament.js +25 -0
- package/dist/storage-handlers/delete.d.ts +3 -0
- package/dist/storage-handlers/delete.js +24 -0
- package/dist/storage-handlers/index.d.ts +4 -0
- package/dist/storage-handlers/index.js +20 -0
- package/dist/storage-handlers/insert-handlers/group.d.ts +5 -0
- package/dist/storage-handlers/insert-handlers/group.js +21 -0
- package/dist/storage-handlers/insert-handlers/index.d.ts +7 -0
- package/dist/storage-handlers/insert-handlers/index.js +23 -0
- package/dist/storage-handlers/insert-handlers/match-game.d.ts +5 -0
- package/dist/storage-handlers/insert-handlers/match-game.js +66 -0
- package/dist/storage-handlers/insert-handlers/match.d.ts +5 -0
- package/dist/storage-handlers/insert-handlers/match.js +66 -0
- package/dist/storage-handlers/insert-handlers/participant.d.ts +5 -0
- package/dist/storage-handlers/insert-handlers/participant.js +25 -0
- package/dist/storage-handlers/insert-handlers/round.d.ts +5 -0
- package/dist/storage-handlers/insert-handlers/round.js +21 -0
- package/dist/storage-handlers/insert-handlers/stage.d.ts +5 -0
- package/dist/storage-handlers/insert-handlers/stage.js +44 -0
- package/dist/storage-handlers/insert-handlers/tournament.d.ts +5 -0
- package/dist/storage-handlers/insert-handlers/tournament.js +25 -0
- package/dist/storage-handlers/insert.d.ts +3 -0
- package/dist/storage-handlers/insert.js +25 -0
- package/dist/storage-handlers/select-handlers/group.d.ts +3 -0
- package/dist/storage-handlers/select-handlers/group.js +44 -0
- package/dist/storage-handlers/select-handlers/index.d.ts +7 -0
- package/dist/storage-handlers/select-handlers/index.js +23 -0
- package/dist/storage-handlers/select-handlers/match-game.d.ts +3 -0
- package/dist/storage-handlers/select-handlers/match-game.js +80 -0
- package/dist/storage-handlers/select-handlers/match.d.ts +3 -0
- package/dist/storage-handlers/select-handlers/match.js +86 -0
- package/dist/storage-handlers/select-handlers/participant.d.ts +3 -0
- package/dist/storage-handlers/select-handlers/participant.js +40 -0
- package/dist/storage-handlers/select-handlers/round.d.ts +3 -0
- package/dist/storage-handlers/select-handlers/round.js +46 -0
- package/dist/storage-handlers/select-handlers/stage.d.ts +3 -0
- package/dist/storage-handlers/select-handlers/stage.js +60 -0
- package/dist/storage-handlers/select-handlers/tournament.d.ts +3 -0
- package/dist/storage-handlers/select-handlers/tournament.js +38 -0
- package/dist/storage-handlers/select.d.ts +3 -0
- package/dist/storage-handlers/select.js +24 -0
- package/dist/storage-handlers/update-handlers/group.d.ts +3 -0
- package/dist/storage-handlers/update-handlers/group.js +33 -0
- package/dist/storage-handlers/update-handlers/index.d.ts +7 -0
- package/dist/storage-handlers/update-handlers/index.js +23 -0
- package/dist/storage-handlers/update-handlers/match-game.d.ts +3 -0
- package/dist/storage-handlers/update-handlers/match-game.js +99 -0
- package/dist/storage-handlers/update-handlers/match.d.ts +3 -0
- package/dist/storage-handlers/update-handlers/match.js +105 -0
- package/dist/storage-handlers/update-handlers/participant.d.ts +3 -0
- package/dist/storage-handlers/update-handlers/participant.js +40 -0
- package/dist/storage-handlers/update-handlers/round.d.ts +3 -0
- package/dist/storage-handlers/update-handlers/round.js +37 -0
- package/dist/storage-handlers/update-handlers/stage.d.ts +3 -0
- package/dist/storage-handlers/update-handlers/stage.js +61 -0
- package/dist/storage-handlers/update-handlers/tournament.d.ts +3 -0
- package/dist/storage-handlers/update-handlers/tournament.js +40 -0
- package/dist/storage-handlers/update.d.ts +3 -0
- package/dist/storage-handlers/update.js +24 -0
- package/dist/storage.d.ts +18 -0
- package/dist/storage.js +25 -0
- package/dist/transformers/enum/grand-final-type.d.ts +6 -0
- package/dist/transformers/enum/grand-final-type.js +25 -0
- package/dist/transformers/enum/index.d.ts +6 -0
- package/dist/transformers/enum/index.js +22 -0
- package/dist/transformers/enum/match-result.d.ts +6 -0
- package/dist/transformers/enum/match-result.js +25 -0
- package/dist/transformers/enum/match-status.d.ts +6 -0
- package/dist/transformers/enum/match-status.js +38 -0
- package/dist/transformers/enum/round-robin-mode.d.ts +6 -0
- package/dist/transformers/enum/round-robin-mode.js +21 -0
- package/dist/transformers/enum/seed-ordering.d.ts +6 -0
- package/dist/transformers/enum/seed-ordering.js +49 -0
- package/dist/transformers/enum/stage-type.d.ts +6 -0
- package/dist/transformers/enum/stage-type.js +25 -0
- package/dist/transformers/index.d.ts +2 -0
- package/dist/transformers/index.js +18 -0
- package/dist/transformers/model/group.d.ts +15 -0
- package/dist/transformers/model/group.js +18 -0
- package/dist/transformers/model/index.d.ts +9 -0
- package/dist/transformers/model/index.js +25 -0
- package/dist/transformers/model/match-game.d.ts +21 -0
- package/dist/transformers/model/match-game.js +90 -0
- package/dist/transformers/model/match.d.ts +23 -0
- package/dist/transformers/model/match.js +96 -0
- package/dist/transformers/model/participant-result.d.ts +21 -0
- package/dist/transformers/model/participant-result.js +26 -0
- package/dist/transformers/model/participant.d.ts +19 -0
- package/dist/transformers/model/participant.js +47 -0
- package/dist/transformers/model/round.d.ts +17 -0
- package/dist/transformers/model/round.js +20 -0
- package/dist/transformers/model/stage-settings.d.ts +18 -0
- package/dist/transformers/model/stage-settings.js +46 -0
- package/dist/transformers/model/stage.d.ts +22 -0
- package/dist/transformers/model/stage.js +26 -0
- package/dist/transformers/model/tournament.d.ts +30 -0
- package/dist/transformers/model/tournament.js +39 -0
- package/dist/types.d.ts +15 -0
- package/dist/types.js +2 -0
- package/package.json +45 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleTournamentInsert = handleTournamentInsert;
|
|
4
|
+
const transformers_1 = require("../../transformers");
|
|
5
|
+
const schema_1 = require("../../db/schema");
|
|
6
|
+
async function handleTournamentInsert(db, values) {
|
|
7
|
+
try {
|
|
8
|
+
if (Array.isArray(values)) {
|
|
9
|
+
await db.insert(schema_1.tournament).values(values.map((t) => {
|
|
10
|
+
const value = transformers_1.TournamentTransformer.to(t);
|
|
11
|
+
return { id: String(t.id), ...value, extra: value.extra ?? undefined };
|
|
12
|
+
}));
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
const value = transformers_1.TournamentTransformer.to(values);
|
|
16
|
+
const result = await db
|
|
17
|
+
.insert(schema_1.tournament)
|
|
18
|
+
.values({ id: String(values.id), ...value, extra: value.extra ?? undefined })
|
|
19
|
+
.returning({ id: schema_1.tournament.id });
|
|
20
|
+
return result[0]?.id ?? '';
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return Array.isArray(values) ? false : '';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { DataTypes } from 'brackets-manager/dist/types';
|
|
2
|
+
import type { DrizzleDatabase } from '../db';
|
|
3
|
+
export declare function handleInsert<T extends keyof DataTypes>(db: DrizzleDatabase, table: T | 'tournament', values: DataTypes[T] | DataTypes[T][]): Promise<string | number | boolean>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleInsert = handleInsert;
|
|
4
|
+
const insert_handlers_1 = require("./insert-handlers");
|
|
5
|
+
// With text IDs, we expect the caller to provide the id in the values
|
|
6
|
+
async function handleInsert(db, table, values) {
|
|
7
|
+
switch (table) {
|
|
8
|
+
case 'tournament':
|
|
9
|
+
return (0, insert_handlers_1.handleTournamentInsert)(db, values);
|
|
10
|
+
case 'participant':
|
|
11
|
+
return (0, insert_handlers_1.handleParticipantInsert)(db, values);
|
|
12
|
+
case 'stage':
|
|
13
|
+
return (0, insert_handlers_1.handleStageInsert)(db, values);
|
|
14
|
+
case 'group':
|
|
15
|
+
return (0, insert_handlers_1.handleGroupInsert)(db, values);
|
|
16
|
+
case 'round':
|
|
17
|
+
return (0, insert_handlers_1.handleRoundInsert)(db, values);
|
|
18
|
+
case 'match':
|
|
19
|
+
return (0, insert_handlers_1.handleMatchInsert)(db, values);
|
|
20
|
+
case 'match_game':
|
|
21
|
+
return (0, insert_handlers_1.handleMatchGameInsert)(db, values);
|
|
22
|
+
default:
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { DataTypes } from 'brackets-manager/dist/types';
|
|
2
|
+
import type { DrizzleDatabase } from '../../db';
|
|
3
|
+
export declare function handleGroupSelect(db: DrizzleDatabase, filter?: Partial<DataTypes['group']> | number | string): Promise<DataTypes['group'][] | DataTypes['group'] | null>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleGroupSelect = handleGroupSelect;
|
|
4
|
+
const transformers_1 = require("../../transformers");
|
|
5
|
+
const schema_1 = require("../../db/schema");
|
|
6
|
+
const drizzle_orm_1 = require("drizzle-orm");
|
|
7
|
+
async function handleGroupSelect(db, filter) {
|
|
8
|
+
try {
|
|
9
|
+
if (filter === undefined) {
|
|
10
|
+
const values = await db
|
|
11
|
+
.select()
|
|
12
|
+
.from(schema_1.group)
|
|
13
|
+
.orderBy((0, drizzle_orm_1.asc)(schema_1.group.number));
|
|
14
|
+
return values.map(transformers_1.GroupTransformer.from);
|
|
15
|
+
}
|
|
16
|
+
if (typeof filter === 'number' || typeof filter === 'string') {
|
|
17
|
+
const values = await db
|
|
18
|
+
.select()
|
|
19
|
+
.from(schema_1.group)
|
|
20
|
+
.where((0, drizzle_orm_1.eq)(schema_1.group.id, String(filter)))
|
|
21
|
+
.limit(1);
|
|
22
|
+
if (values.length === 0) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
return transformers_1.GroupTransformer.from(values[0]);
|
|
26
|
+
}
|
|
27
|
+
const conditions = [];
|
|
28
|
+
if (filter.id !== undefined)
|
|
29
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.group.id, String(filter.id)));
|
|
30
|
+
if (filter.stage_id !== undefined)
|
|
31
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.group.stageId, String(filter.stage_id)));
|
|
32
|
+
if (filter.number !== undefined)
|
|
33
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.group.number, filter.number));
|
|
34
|
+
const values = await db
|
|
35
|
+
.select()
|
|
36
|
+
.from(schema_1.group)
|
|
37
|
+
.where(conditions.length > 0 ? (0, drizzle_orm_1.and)(...conditions) : undefined)
|
|
38
|
+
.orderBy((0, drizzle_orm_1.asc)(schema_1.group.number));
|
|
39
|
+
return values.map(transformers_1.GroupTransformer.from);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./group"), exports);
|
|
18
|
+
__exportStar(require("./match"), exports);
|
|
19
|
+
__exportStar(require("./match-game"), exports);
|
|
20
|
+
__exportStar(require("./participant"), exports);
|
|
21
|
+
__exportStar(require("./round"), exports);
|
|
22
|
+
__exportStar(require("./stage"), exports);
|
|
23
|
+
__exportStar(require("./tournament"), exports);
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { DrizzleDatabase } from '../../db';
|
|
2
|
+
import type { MatchGameWithExtra } from '../../types';
|
|
3
|
+
export declare function handleMatchGameSelect(db: DrizzleDatabase, filter?: Partial<MatchGameWithExtra> | number | string): Promise<MatchGameWithExtra[] | MatchGameWithExtra | null>;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleMatchGameSelect = handleMatchGameSelect;
|
|
4
|
+
const transformers_1 = require("../../transformers");
|
|
5
|
+
const schema_1 = require("../../db/schema");
|
|
6
|
+
const drizzle_orm_1 = require("drizzle-orm");
|
|
7
|
+
async function handleMatchGameSelect(db, filter) {
|
|
8
|
+
try {
|
|
9
|
+
if (filter === undefined) {
|
|
10
|
+
const games = await db
|
|
11
|
+
.select()
|
|
12
|
+
.from(schema_1.matchGame)
|
|
13
|
+
.orderBy((0, drizzle_orm_1.asc)(schema_1.matchGame.number));
|
|
14
|
+
return Promise.all(games.map(async (game) => {
|
|
15
|
+
const opponents = await getOpponents(db, game.id);
|
|
16
|
+
return transformers_1.MatchGameTransformer.from({
|
|
17
|
+
...game,
|
|
18
|
+
...opponents,
|
|
19
|
+
});
|
|
20
|
+
}));
|
|
21
|
+
}
|
|
22
|
+
if (typeof filter === 'number' || typeof filter === 'string') {
|
|
23
|
+
const values = await db
|
|
24
|
+
.select()
|
|
25
|
+
.from(schema_1.matchGame)
|
|
26
|
+
.where((0, drizzle_orm_1.eq)(schema_1.matchGame.id, String(filter)))
|
|
27
|
+
.limit(1);
|
|
28
|
+
if (values.length === 0) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
const opponents = await getOpponents(db, values[0].id);
|
|
32
|
+
return transformers_1.MatchGameTransformer.from({
|
|
33
|
+
...values[0],
|
|
34
|
+
...opponents,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
const conditions = [];
|
|
38
|
+
if (filter.id !== undefined)
|
|
39
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.matchGame.id, String(filter.id)));
|
|
40
|
+
if (filter.stage_id !== undefined)
|
|
41
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.matchGame.stageId, String(filter.stage_id)));
|
|
42
|
+
if (filter.parent_id !== undefined)
|
|
43
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.matchGame.matchId, String(filter.parent_id)));
|
|
44
|
+
if (filter.number !== undefined)
|
|
45
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.matchGame.number, filter.number));
|
|
46
|
+
if (filter.status !== undefined)
|
|
47
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.matchGame.status, transformers_1.MatchStatusTransformer.to(filter.status)));
|
|
48
|
+
const games = await db
|
|
49
|
+
.select()
|
|
50
|
+
.from(schema_1.matchGame)
|
|
51
|
+
.where(conditions.length > 0 ? (0, drizzle_orm_1.and)(...conditions) : undefined)
|
|
52
|
+
.orderBy((0, drizzle_orm_1.asc)(schema_1.matchGame.number));
|
|
53
|
+
return Promise.all(games.map(async (game) => {
|
|
54
|
+
const opponents = await getOpponents(db, game.id);
|
|
55
|
+
return transformers_1.MatchGameTransformer.from({
|
|
56
|
+
...game,
|
|
57
|
+
...opponents,
|
|
58
|
+
});
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
async function getOpponents(db, matchGameId) {
|
|
66
|
+
const opponent1Results = await db
|
|
67
|
+
.select()
|
|
68
|
+
.from(schema_1.participantMatchGameResult)
|
|
69
|
+
.where((0, drizzle_orm_1.eq)(schema_1.participantMatchGameResult.opponent1MatchGameId, matchGameId))
|
|
70
|
+
.limit(1);
|
|
71
|
+
const opponent2Results = await db
|
|
72
|
+
.select()
|
|
73
|
+
.from(schema_1.participantMatchGameResult)
|
|
74
|
+
.where((0, drizzle_orm_1.eq)(schema_1.participantMatchGameResult.opponent2MatchGameId, matchGameId))
|
|
75
|
+
.limit(1);
|
|
76
|
+
return {
|
|
77
|
+
opponent1Result: opponent1Results[0] ?? null,
|
|
78
|
+
opponent2Result: opponent2Results[0] ?? null,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleMatchSelect = handleMatchSelect;
|
|
4
|
+
const transformers_1 = require("../../transformers");
|
|
5
|
+
const schema_1 = require("../../db/schema");
|
|
6
|
+
const drizzle_orm_1 = require("drizzle-orm");
|
|
7
|
+
async function handleMatchSelect(db, filter) {
|
|
8
|
+
try {
|
|
9
|
+
if (filter === undefined) {
|
|
10
|
+
const matches = await db
|
|
11
|
+
.select()
|
|
12
|
+
.from(schema_1.match)
|
|
13
|
+
.leftJoin(schema_1.round, (0, drizzle_orm_1.eq)(schema_1.match.roundId, schema_1.round.id))
|
|
14
|
+
.orderBy((0, drizzle_orm_1.asc)(schema_1.round.number), (0, drizzle_orm_1.asc)(schema_1.match.number));
|
|
15
|
+
return Promise.all(matches.map(async (row) => {
|
|
16
|
+
const opponents = await getOpponents(db, row.Match.id);
|
|
17
|
+
return transformers_1.MatchTransformer.from({
|
|
18
|
+
...row.Match,
|
|
19
|
+
...opponents,
|
|
20
|
+
});
|
|
21
|
+
}));
|
|
22
|
+
}
|
|
23
|
+
if (typeof filter === 'number' || typeof filter === 'string') {
|
|
24
|
+
const values = await db
|
|
25
|
+
.select()
|
|
26
|
+
.from(schema_1.match)
|
|
27
|
+
.where((0, drizzle_orm_1.eq)(schema_1.match.id, String(filter)))
|
|
28
|
+
.limit(1);
|
|
29
|
+
if (values.length === 0) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
const opponents = await getOpponents(db, values[0].id);
|
|
33
|
+
return transformers_1.MatchTransformer.from({
|
|
34
|
+
...values[0],
|
|
35
|
+
...opponents,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
const conditions = [];
|
|
39
|
+
if (filter.id !== undefined)
|
|
40
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.match.id, String(filter.id)));
|
|
41
|
+
if (filter.stage_id !== undefined)
|
|
42
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.match.stageId, String(filter.stage_id)));
|
|
43
|
+
if (filter.group_id !== undefined)
|
|
44
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.match.groupId, String(filter.group_id)));
|
|
45
|
+
if (filter.round_id !== undefined)
|
|
46
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.match.roundId, String(filter.round_id)));
|
|
47
|
+
if (filter.number !== undefined)
|
|
48
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.match.number, filter.number));
|
|
49
|
+
if (filter.status !== undefined)
|
|
50
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.match.status, transformers_1.MatchStatusTransformer.to(filter.status)));
|
|
51
|
+
if (filter.child_count !== undefined)
|
|
52
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.match.childCount, filter.child_count));
|
|
53
|
+
const matches = await db
|
|
54
|
+
.select()
|
|
55
|
+
.from(schema_1.match)
|
|
56
|
+
.leftJoin(schema_1.round, (0, drizzle_orm_1.eq)(schema_1.match.roundId, schema_1.round.id))
|
|
57
|
+
.where(conditions.length > 0 ? (0, drizzle_orm_1.and)(...conditions) : undefined)
|
|
58
|
+
.orderBy((0, drizzle_orm_1.asc)(schema_1.round.number), (0, drizzle_orm_1.asc)(schema_1.match.number));
|
|
59
|
+
return Promise.all(matches.map(async (row) => {
|
|
60
|
+
const opponents = await getOpponents(db, row.Match.id);
|
|
61
|
+
return transformers_1.MatchTransformer.from({
|
|
62
|
+
...row.Match,
|
|
63
|
+
...opponents,
|
|
64
|
+
});
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return [];
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async function getOpponents(db, matchId) {
|
|
72
|
+
const opponent1Results = await db
|
|
73
|
+
.select()
|
|
74
|
+
.from(schema_1.participantMatchResult)
|
|
75
|
+
.where((0, drizzle_orm_1.eq)(schema_1.participantMatchResult.opponent1MatchId, matchId))
|
|
76
|
+
.limit(1);
|
|
77
|
+
const opponent2Results = await db
|
|
78
|
+
.select()
|
|
79
|
+
.from(schema_1.participantMatchResult)
|
|
80
|
+
.where((0, drizzle_orm_1.eq)(schema_1.participantMatchResult.opponent2MatchId, matchId))
|
|
81
|
+
.limit(1);
|
|
82
|
+
return {
|
|
83
|
+
opponent1Result: opponent1Results[0] ?? null,
|
|
84
|
+
opponent2Result: opponent2Results[0] ?? null,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { DataTypes } from 'brackets-manager/dist/types';
|
|
2
|
+
import type { DrizzleDatabase } from '../../db';
|
|
3
|
+
export declare function handleParticipantSelect(db: DrizzleDatabase, filter?: Partial<DataTypes['participant']> | number | string): Promise<DataTypes['participant'][] | DataTypes['participant'] | null>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleParticipantSelect = handleParticipantSelect;
|
|
4
|
+
const transformers_1 = require("../../transformers");
|
|
5
|
+
const schema_1 = require("../../db/schema");
|
|
6
|
+
const drizzle_orm_1 = require("drizzle-orm");
|
|
7
|
+
async function handleParticipantSelect(db, filter) {
|
|
8
|
+
try {
|
|
9
|
+
if (filter === undefined) {
|
|
10
|
+
const values = await db.select().from(schema_1.participant);
|
|
11
|
+
return values.map(transformers_1.ParticipantTransformer.from);
|
|
12
|
+
}
|
|
13
|
+
if (typeof filter === 'number' || typeof filter === 'string') {
|
|
14
|
+
const values = await db
|
|
15
|
+
.select()
|
|
16
|
+
.from(schema_1.participant)
|
|
17
|
+
.where((0, drizzle_orm_1.eq)(schema_1.participant.id, String(filter)))
|
|
18
|
+
.limit(1);
|
|
19
|
+
if (values.length === 0) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
return transformers_1.ParticipantTransformer.from(values[0]);
|
|
23
|
+
}
|
|
24
|
+
const conditions = [];
|
|
25
|
+
if (filter.id !== undefined)
|
|
26
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.participant.id, String(filter.id)));
|
|
27
|
+
if (filter.name !== undefined)
|
|
28
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.participant.name, filter.name));
|
|
29
|
+
if (filter.tournament_id !== undefined)
|
|
30
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.participant.tournamentId, String(filter.tournament_id)));
|
|
31
|
+
const values = await db
|
|
32
|
+
.select()
|
|
33
|
+
.from(schema_1.participant)
|
|
34
|
+
.where(conditions.length > 0 ? (0, drizzle_orm_1.and)(...conditions) : undefined);
|
|
35
|
+
return values.map(transformers_1.ParticipantTransformer.from);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return [];
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { DataTypes } from 'brackets-manager/dist/types';
|
|
2
|
+
import type { DrizzleDatabase } from '../../db';
|
|
3
|
+
export declare function handleRoundSelect(db: DrizzleDatabase, filter?: Partial<DataTypes['round']> | number | string): Promise<DataTypes['round'][] | DataTypes['round'] | null>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleRoundSelect = handleRoundSelect;
|
|
4
|
+
const transformers_1 = require("../../transformers");
|
|
5
|
+
const schema_1 = require("../../db/schema");
|
|
6
|
+
const drizzle_orm_1 = require("drizzle-orm");
|
|
7
|
+
async function handleRoundSelect(db, filter) {
|
|
8
|
+
try {
|
|
9
|
+
if (filter === undefined) {
|
|
10
|
+
const values = await db
|
|
11
|
+
.select()
|
|
12
|
+
.from(schema_1.round)
|
|
13
|
+
.orderBy((0, drizzle_orm_1.asc)(schema_1.round.number));
|
|
14
|
+
return values.map(transformers_1.RoundTransformer.from);
|
|
15
|
+
}
|
|
16
|
+
if (typeof filter === 'number' || typeof filter === 'string') {
|
|
17
|
+
const values = await db
|
|
18
|
+
.select()
|
|
19
|
+
.from(schema_1.round)
|
|
20
|
+
.where((0, drizzle_orm_1.eq)(schema_1.round.id, String(filter)))
|
|
21
|
+
.limit(1);
|
|
22
|
+
if (values.length === 0) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
return transformers_1.RoundTransformer.from(values[0]);
|
|
26
|
+
}
|
|
27
|
+
const conditions = [];
|
|
28
|
+
if (filter.id !== undefined)
|
|
29
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.round.id, String(filter.id)));
|
|
30
|
+
if (filter.stage_id !== undefined)
|
|
31
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.round.stageId, String(filter.stage_id)));
|
|
32
|
+
if (filter.group_id !== undefined)
|
|
33
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.round.groupId, String(filter.group_id)));
|
|
34
|
+
if (filter.number !== undefined)
|
|
35
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.round.number, filter.number));
|
|
36
|
+
const values = await db
|
|
37
|
+
.select()
|
|
38
|
+
.from(schema_1.round)
|
|
39
|
+
.where(conditions.length > 0 ? (0, drizzle_orm_1.and)(...conditions) : undefined)
|
|
40
|
+
.orderBy((0, drizzle_orm_1.asc)(schema_1.round.number));
|
|
41
|
+
return values.map(transformers_1.RoundTransformer.from);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { DataTypes } from 'brackets-manager/dist/types';
|
|
2
|
+
import type { DrizzleDatabase } from '../../db';
|
|
3
|
+
export declare function handleStageSelect(db: DrizzleDatabase, filter?: Partial<DataTypes['stage']> | number | string): Promise<DataTypes['stage'][] | DataTypes['stage'] | null>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleStageSelect = handleStageSelect;
|
|
4
|
+
const transformers_1 = require("../../transformers");
|
|
5
|
+
const schema_1 = require("../../db/schema");
|
|
6
|
+
const drizzle_orm_1 = require("drizzle-orm");
|
|
7
|
+
async function handleStageSelect(db, filter) {
|
|
8
|
+
try {
|
|
9
|
+
if (filter === undefined) {
|
|
10
|
+
const values = await db
|
|
11
|
+
.select()
|
|
12
|
+
.from(schema_1.stage)
|
|
13
|
+
.leftJoin(schema_1.stageSettings, (0, drizzle_orm_1.eq)(schema_1.stage.id, schema_1.stageSettings.stageId))
|
|
14
|
+
.orderBy((0, drizzle_orm_1.asc)(schema_1.stage.number));
|
|
15
|
+
return values.map((row) => transformers_1.StageTransformer.from({
|
|
16
|
+
...row.Stage,
|
|
17
|
+
settings: row.StageSettings,
|
|
18
|
+
}));
|
|
19
|
+
}
|
|
20
|
+
if (typeof filter === 'number' || typeof filter === 'string') {
|
|
21
|
+
const values = await db
|
|
22
|
+
.select()
|
|
23
|
+
.from(schema_1.stage)
|
|
24
|
+
.leftJoin(schema_1.stageSettings, (0, drizzle_orm_1.eq)(schema_1.stage.id, schema_1.stageSettings.stageId))
|
|
25
|
+
.where((0, drizzle_orm_1.eq)(schema_1.stage.id, String(filter)))
|
|
26
|
+
.limit(1);
|
|
27
|
+
if (values.length === 0) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
return transformers_1.StageTransformer.from({
|
|
31
|
+
...values[0].Stage,
|
|
32
|
+
settings: values[0].StageSettings,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
const conditions = [];
|
|
36
|
+
if (filter.id !== undefined)
|
|
37
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.stage.id, String(filter.id)));
|
|
38
|
+
if (filter.name !== undefined)
|
|
39
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.stage.name, filter.name));
|
|
40
|
+
if (filter.tournament_id !== undefined)
|
|
41
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.stage.tournamentId, String(filter.tournament_id)));
|
|
42
|
+
if (filter.number !== undefined)
|
|
43
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.stage.number, filter.number));
|
|
44
|
+
if (filter.type !== undefined)
|
|
45
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.stage.type, transformers_1.StageTypeTransformer.to(filter.type)));
|
|
46
|
+
const values = await db
|
|
47
|
+
.select()
|
|
48
|
+
.from(schema_1.stage)
|
|
49
|
+
.leftJoin(schema_1.stageSettings, (0, drizzle_orm_1.eq)(schema_1.stage.id, schema_1.stageSettings.stageId))
|
|
50
|
+
.where(conditions.length > 0 ? (0, drizzle_orm_1.and)(...conditions) : undefined)
|
|
51
|
+
.orderBy((0, drizzle_orm_1.asc)(schema_1.stage.number));
|
|
52
|
+
return values.map((row) => transformers_1.StageTransformer.from({
|
|
53
|
+
...row.Stage,
|
|
54
|
+
settings: row.StageSettings,
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return [];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleTournamentSelect = handleTournamentSelect;
|
|
4
|
+
const transformers_1 = require("../../transformers");
|
|
5
|
+
const schema_1 = require("../../db/schema");
|
|
6
|
+
const drizzle_orm_1 = require("drizzle-orm");
|
|
7
|
+
async function handleTournamentSelect(db, filter) {
|
|
8
|
+
try {
|
|
9
|
+
if (filter === undefined) {
|
|
10
|
+
const values = await db.select().from(schema_1.tournament);
|
|
11
|
+
return values.map(transformers_1.TournamentTransformer.from);
|
|
12
|
+
}
|
|
13
|
+
if (typeof filter === 'number' || typeof filter === 'string') {
|
|
14
|
+
const values = await db
|
|
15
|
+
.select()
|
|
16
|
+
.from(schema_1.tournament)
|
|
17
|
+
.where((0, drizzle_orm_1.eq)(schema_1.tournament.id, String(filter)))
|
|
18
|
+
.limit(1);
|
|
19
|
+
if (values.length === 0) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
return transformers_1.TournamentTransformer.from(values[0]);
|
|
23
|
+
}
|
|
24
|
+
const conditions = [];
|
|
25
|
+
if (filter.id !== undefined)
|
|
26
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.tournament.id, String(filter.id)));
|
|
27
|
+
if (filter.name !== undefined)
|
|
28
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.tournament.name, filter.name));
|
|
29
|
+
const values = await db
|
|
30
|
+
.select()
|
|
31
|
+
.from(schema_1.tournament)
|
|
32
|
+
.where(conditions.length > 0 ? (0, drizzle_orm_1.and)(...conditions) : undefined);
|
|
33
|
+
return values.map(transformers_1.TournamentTransformer.from);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return [];
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { DataTypes } from 'brackets-manager/dist/types';
|
|
2
|
+
import type { DrizzleDatabase } from '../db';
|
|
3
|
+
export declare function handleSelect<T extends keyof DataTypes>(db: DrizzleDatabase, table: T | 'tournament', filter?: Partial<DataTypes[T]> | number | string): Promise<DataTypes[T][] | DataTypes[T] | null>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleSelect = handleSelect;
|
|
4
|
+
const select_handlers_1 = require("./select-handlers");
|
|
5
|
+
async function handleSelect(db, table, filter) {
|
|
6
|
+
switch (table) {
|
|
7
|
+
case 'tournament':
|
|
8
|
+
return (0, select_handlers_1.handleTournamentSelect)(db, filter);
|
|
9
|
+
case 'participant':
|
|
10
|
+
return (0, select_handlers_1.handleParticipantSelect)(db, filter);
|
|
11
|
+
case 'stage':
|
|
12
|
+
return (0, select_handlers_1.handleStageSelect)(db, filter);
|
|
13
|
+
case 'group':
|
|
14
|
+
return (0, select_handlers_1.handleGroupSelect)(db, filter);
|
|
15
|
+
case 'round':
|
|
16
|
+
return (0, select_handlers_1.handleRoundSelect)(db, filter);
|
|
17
|
+
case 'match':
|
|
18
|
+
return (0, select_handlers_1.handleMatchSelect)(db, filter);
|
|
19
|
+
case 'match_game':
|
|
20
|
+
return (0, select_handlers_1.handleMatchGameSelect)(db, filter);
|
|
21
|
+
default:
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { DataTypes } from 'brackets-manager/dist/types';
|
|
2
|
+
import type { DrizzleDatabase } from '../../db';
|
|
3
|
+
export declare function handleGroupUpdate(db: DrizzleDatabase, filter: Partial<DataTypes['group']> | number | string, value: Partial<DataTypes['group']> | DataTypes['group']): Promise<boolean>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleGroupUpdate = handleGroupUpdate;
|
|
4
|
+
const schema_1 = require("../../db/schema");
|
|
5
|
+
const drizzle_orm_1 = require("drizzle-orm");
|
|
6
|
+
async function handleGroupUpdate(db, filter, value) {
|
|
7
|
+
try {
|
|
8
|
+
const updateData = {};
|
|
9
|
+
if (value.number !== undefined)
|
|
10
|
+
updateData.number = value.number;
|
|
11
|
+
if (value.stage_id !== undefined)
|
|
12
|
+
updateData.stageId = String(value.stage_id);
|
|
13
|
+
if (typeof filter === 'number' || typeof filter === 'string') {
|
|
14
|
+
await db.update(schema_1.group).set(updateData).where((0, drizzle_orm_1.eq)(schema_1.group.id, String(filter)));
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
const conditions = [];
|
|
18
|
+
if (filter.id !== undefined)
|
|
19
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.group.id, String(filter.id)));
|
|
20
|
+
if (filter.number !== undefined)
|
|
21
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.group.number, filter.number));
|
|
22
|
+
if (filter.stage_id !== undefined)
|
|
23
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.group.stageId, String(filter.stage_id)));
|
|
24
|
+
await db
|
|
25
|
+
.update(schema_1.group)
|
|
26
|
+
.set(updateData)
|
|
27
|
+
.where(conditions.length > 0 ? (0, drizzle_orm_1.and)(...conditions) : undefined);
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./group"), exports);
|
|
18
|
+
__exportStar(require("./match"), exports);
|
|
19
|
+
__exportStar(require("./match-game"), exports);
|
|
20
|
+
__exportStar(require("./participant"), exports);
|
|
21
|
+
__exportStar(require("./round"), exports);
|
|
22
|
+
__exportStar(require("./stage"), exports);
|
|
23
|
+
__exportStar(require("./tournament"), exports);
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { DrizzleDatabase } from '../../db';
|
|
2
|
+
import type { MatchGameWithExtra } from '../../types';
|
|
3
|
+
export declare function handleMatchGameUpdate(db: DrizzleDatabase, filter: Partial<MatchGameWithExtra> | number | string, value: Partial<MatchGameWithExtra> | MatchGameWithExtra): Promise<boolean>;
|