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,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleMatchGameUpdate = handleMatchGameUpdate;
|
|
4
|
+
const transformers_1 = require("../../transformers");
|
|
5
|
+
const schema_1 = require("../../db/schema");
|
|
6
|
+
const drizzle_orm_1 = require("drizzle-orm");
|
|
7
|
+
const crypto_1 = require("crypto");
|
|
8
|
+
async function upsertParticipantResult(db, matchGameId, value, isOpponent1) {
|
|
9
|
+
const existingResults = await db
|
|
10
|
+
.select()
|
|
11
|
+
.from(schema_1.participantMatchGameResult)
|
|
12
|
+
.where(isOpponent1
|
|
13
|
+
? (0, drizzle_orm_1.eq)(schema_1.participantMatchGameResult.opponent1MatchGameId, matchGameId)
|
|
14
|
+
: (0, drizzle_orm_1.eq)(schema_1.participantMatchGameResult.opponent2MatchGameId, matchGameId))
|
|
15
|
+
.limit(1);
|
|
16
|
+
const resultData = {
|
|
17
|
+
participantId: value.id != null ? String(value.id) : null,
|
|
18
|
+
forfeit: value.forfeit ?? null,
|
|
19
|
+
position: value.position ?? null,
|
|
20
|
+
score: value.score ?? null,
|
|
21
|
+
result: value.result ? transformers_1.MatchResultTransformer.to(value.result) : null,
|
|
22
|
+
};
|
|
23
|
+
if (existingResults.length > 0) {
|
|
24
|
+
await db
|
|
25
|
+
.update(schema_1.participantMatchGameResult)
|
|
26
|
+
.set(resultData)
|
|
27
|
+
.where((0, drizzle_orm_1.eq)(schema_1.participantMatchGameResult.id, existingResults[0].id));
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
await db.insert(schema_1.participantMatchGameResult).values({
|
|
31
|
+
id: (0, crypto_1.randomUUID)(),
|
|
32
|
+
...resultData,
|
|
33
|
+
...(isOpponent1
|
|
34
|
+
? { opponent1MatchGameId: matchGameId }
|
|
35
|
+
: { opponent2MatchGameId: matchGameId }),
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async function updateById(db, id, value, previousExtra) {
|
|
40
|
+
let extraSource = previousExtra ?? null;
|
|
41
|
+
if (previousExtra === undefined) {
|
|
42
|
+
const existing = await db
|
|
43
|
+
.select({ extra: schema_1.matchGame.extra })
|
|
44
|
+
.from(schema_1.matchGame)
|
|
45
|
+
.where((0, drizzle_orm_1.eq)(schema_1.matchGame.id, id))
|
|
46
|
+
.limit(1);
|
|
47
|
+
extraSource = existing[0]?.extra ?? null;
|
|
48
|
+
}
|
|
49
|
+
const extrasInput = value;
|
|
50
|
+
const extra = (0, transformers_1.matchGameExtraFromInput)(extrasInput, extraSource);
|
|
51
|
+
const updateData = {};
|
|
52
|
+
if (value.stage_id !== undefined)
|
|
53
|
+
updateData.stageId = String(value.stage_id);
|
|
54
|
+
if (value.parent_id !== undefined)
|
|
55
|
+
updateData.matchId = String(value.parent_id);
|
|
56
|
+
if (value.number !== undefined)
|
|
57
|
+
updateData.number = value.number;
|
|
58
|
+
if (value.status !== undefined)
|
|
59
|
+
updateData.status = transformers_1.MatchStatusTransformer.to(value.status);
|
|
60
|
+
if (extra !== undefined)
|
|
61
|
+
updateData.extra = extra;
|
|
62
|
+
if (Object.keys(updateData).length > 0) {
|
|
63
|
+
await db.update(schema_1.matchGame).set(updateData).where((0, drizzle_orm_1.eq)(schema_1.matchGame.id, id));
|
|
64
|
+
}
|
|
65
|
+
if (value.opponent1) {
|
|
66
|
+
await upsertParticipantResult(db, id, value.opponent1, true);
|
|
67
|
+
}
|
|
68
|
+
if (value.opponent2) {
|
|
69
|
+
await upsertParticipantResult(db, id, value.opponent2, false);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async function handleMatchGameUpdate(db, filter, value) {
|
|
73
|
+
try {
|
|
74
|
+
if (typeof filter === 'number' || typeof filter === 'string') {
|
|
75
|
+
await updateById(db, String(filter), value);
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
const conditions = [];
|
|
79
|
+
if (filter.id !== undefined)
|
|
80
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.matchGame.id, String(filter.id)));
|
|
81
|
+
if (filter.number !== undefined)
|
|
82
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.matchGame.number, filter.number));
|
|
83
|
+
if (filter.stage_id !== undefined)
|
|
84
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.matchGame.stageId, String(filter.stage_id)));
|
|
85
|
+
if (filter.parent_id !== undefined)
|
|
86
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.matchGame.matchId, String(filter.parent_id)));
|
|
87
|
+
if (filter.status !== undefined)
|
|
88
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.matchGame.status, transformers_1.MatchStatusTransformer.to(filter.status)));
|
|
89
|
+
const games = await db
|
|
90
|
+
.select()
|
|
91
|
+
.from(schema_1.matchGame)
|
|
92
|
+
.where(conditions.length > 0 ? (0, drizzle_orm_1.and)(...conditions) : undefined);
|
|
93
|
+
await Promise.all(games.map((game) => updateById(db, game.id, value, game.extra ?? null)));
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { DrizzleDatabase } from '../../db';
|
|
2
|
+
import type { MatchWithExtra } from '../../types';
|
|
3
|
+
export declare function handleMatchUpdate(db: DrizzleDatabase, filter: Partial<MatchWithExtra> | number | string, value: Partial<MatchWithExtra> | MatchWithExtra): Promise<boolean>;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleMatchUpdate = handleMatchUpdate;
|
|
4
|
+
const transformers_1 = require("../../transformers");
|
|
5
|
+
const schema_1 = require("../../db/schema");
|
|
6
|
+
const drizzle_orm_1 = require("drizzle-orm");
|
|
7
|
+
const crypto_1 = require("crypto");
|
|
8
|
+
async function upsertParticipantResult(db, matchId, value, isOpponent1) {
|
|
9
|
+
const existingResults = await db
|
|
10
|
+
.select()
|
|
11
|
+
.from(schema_1.participantMatchResult)
|
|
12
|
+
.where(isOpponent1
|
|
13
|
+
? (0, drizzle_orm_1.eq)(schema_1.participantMatchResult.opponent1MatchId, matchId)
|
|
14
|
+
: (0, drizzle_orm_1.eq)(schema_1.participantMatchResult.opponent2MatchId, matchId))
|
|
15
|
+
.limit(1);
|
|
16
|
+
const resultData = {
|
|
17
|
+
participantId: value.id != null ? String(value.id) : null,
|
|
18
|
+
forfeit: value.forfeit ?? null,
|
|
19
|
+
position: value.position ?? null,
|
|
20
|
+
score: value.score ?? null,
|
|
21
|
+
result: value.result ? transformers_1.MatchResultTransformer.to(value.result) : null,
|
|
22
|
+
};
|
|
23
|
+
if (existingResults.length > 0) {
|
|
24
|
+
await db
|
|
25
|
+
.update(schema_1.participantMatchResult)
|
|
26
|
+
.set(resultData)
|
|
27
|
+
.where((0, drizzle_orm_1.eq)(schema_1.participantMatchResult.id, existingResults[0].id));
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
await db.insert(schema_1.participantMatchResult).values({
|
|
31
|
+
id: (0, crypto_1.randomUUID)(),
|
|
32
|
+
...resultData,
|
|
33
|
+
...(isOpponent1
|
|
34
|
+
? { opponent1MatchId: matchId }
|
|
35
|
+
: { opponent2MatchId: matchId }),
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async function updateById(db, id, value, previousExtra) {
|
|
40
|
+
let extraSource = previousExtra ?? null;
|
|
41
|
+
if (previousExtra === undefined) {
|
|
42
|
+
const existing = await db
|
|
43
|
+
.select({ extra: schema_1.match.extra })
|
|
44
|
+
.from(schema_1.match)
|
|
45
|
+
.where((0, drizzle_orm_1.eq)(schema_1.match.id, id))
|
|
46
|
+
.limit(1);
|
|
47
|
+
extraSource = existing[0]?.extra ?? null;
|
|
48
|
+
}
|
|
49
|
+
const extrasInput = value;
|
|
50
|
+
const extra = (0, transformers_1.matchExtraFromInput)(extrasInput, extraSource);
|
|
51
|
+
const updateData = {};
|
|
52
|
+
if (value.stage_id !== undefined)
|
|
53
|
+
updateData.stageId = String(value.stage_id);
|
|
54
|
+
if (value.group_id !== undefined)
|
|
55
|
+
updateData.groupId = String(value.group_id);
|
|
56
|
+
if (value.round_id !== undefined)
|
|
57
|
+
updateData.roundId = String(value.round_id);
|
|
58
|
+
if (value.child_count !== undefined)
|
|
59
|
+
updateData.childCount = value.child_count;
|
|
60
|
+
if (value.number !== undefined)
|
|
61
|
+
updateData.number = value.number;
|
|
62
|
+
if (value.status !== undefined)
|
|
63
|
+
updateData.status = transformers_1.MatchStatusTransformer.to(value.status);
|
|
64
|
+
if (extra !== undefined)
|
|
65
|
+
updateData.extra = extra;
|
|
66
|
+
if (Object.keys(updateData).length > 0) {
|
|
67
|
+
await db.update(schema_1.match).set(updateData).where((0, drizzle_orm_1.eq)(schema_1.match.id, id));
|
|
68
|
+
}
|
|
69
|
+
if (value.opponent1) {
|
|
70
|
+
await upsertParticipantResult(db, id, value.opponent1, true);
|
|
71
|
+
}
|
|
72
|
+
if (value.opponent2) {
|
|
73
|
+
await upsertParticipantResult(db, id, value.opponent2, false);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async function handleMatchUpdate(db, filter, value) {
|
|
77
|
+
try {
|
|
78
|
+
if (typeof filter === 'number' || typeof filter === 'string') {
|
|
79
|
+
await updateById(db, String(filter), value);
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
const conditions = [];
|
|
83
|
+
if (filter.id !== undefined)
|
|
84
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.match.id, String(filter.id)));
|
|
85
|
+
if (filter.number !== undefined)
|
|
86
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.match.number, filter.number));
|
|
87
|
+
if (filter.stage_id !== undefined)
|
|
88
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.match.stageId, String(filter.stage_id)));
|
|
89
|
+
if (filter.group_id !== undefined)
|
|
90
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.match.groupId, String(filter.group_id)));
|
|
91
|
+
if (filter.round_id !== undefined)
|
|
92
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.match.roundId, String(filter.round_id)));
|
|
93
|
+
if (filter.status !== undefined)
|
|
94
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.match.status, transformers_1.MatchStatusTransformer.to(filter.status)));
|
|
95
|
+
const matches = await db
|
|
96
|
+
.select()
|
|
97
|
+
.from(schema_1.match)
|
|
98
|
+
.where(conditions.length > 0 ? (0, drizzle_orm_1.and)(...conditions) : undefined);
|
|
99
|
+
await Promise.all(matches.map((m) => updateById(db, m.id, value, m.extra ?? null)));
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { DataTypes } from 'brackets-manager/dist/types';
|
|
2
|
+
import type { DrizzleDatabase } from '../../db';
|
|
3
|
+
export declare function handleParticipantUpdate(db: DrizzleDatabase, filter: Partial<DataTypes['participant']> | number | string, value: Partial<DataTypes['participant']> | DataTypes['participant']): Promise<boolean>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleParticipantUpdate = handleParticipantUpdate;
|
|
4
|
+
const transformers_1 = require("../../transformers");
|
|
5
|
+
const schema_1 = require("../../db/schema");
|
|
6
|
+
const drizzle_orm_1 = require("drizzle-orm");
|
|
7
|
+
async function handleParticipantUpdate(db, filter, value) {
|
|
8
|
+
try {
|
|
9
|
+
const updateData = {};
|
|
10
|
+
if (value.name !== undefined)
|
|
11
|
+
updateData.name = value.name;
|
|
12
|
+
if (value.tournament_id !== undefined)
|
|
13
|
+
updateData.tournamentId = String(value.tournament_id);
|
|
14
|
+
const extra = (0, transformers_1.participantExtraFromInput)(value);
|
|
15
|
+
if (extra !== null)
|
|
16
|
+
updateData.extra = extra;
|
|
17
|
+
if (typeof filter === 'number' || typeof filter === 'string') {
|
|
18
|
+
await db
|
|
19
|
+
.update(schema_1.participant)
|
|
20
|
+
.set(updateData)
|
|
21
|
+
.where((0, drizzle_orm_1.eq)(schema_1.participant.id, String(filter)));
|
|
22
|
+
return true;
|
|
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
|
+
await db
|
|
32
|
+
.update(schema_1.participant)
|
|
33
|
+
.set(updateData)
|
|
34
|
+
.where(conditions.length > 0 ? (0, drizzle_orm_1.and)(...conditions) : undefined);
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { DataTypes } from 'brackets-manager/dist/types';
|
|
2
|
+
import type { DrizzleDatabase } from '../../db';
|
|
3
|
+
export declare function handleRoundUpdate(db: DrizzleDatabase, filter: Partial<DataTypes['round']> | number | string, value: Partial<DataTypes['round']> | DataTypes['round']): Promise<boolean>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleRoundUpdate = handleRoundUpdate;
|
|
4
|
+
const schema_1 = require("../../db/schema");
|
|
5
|
+
const drizzle_orm_1 = require("drizzle-orm");
|
|
6
|
+
async function handleRoundUpdate(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 (value.group_id !== undefined)
|
|
14
|
+
updateData.groupId = String(value.group_id);
|
|
15
|
+
if (typeof filter === 'number' || typeof filter === 'string') {
|
|
16
|
+
await db.update(schema_1.round).set(updateData).where((0, drizzle_orm_1.eq)(schema_1.round.id, String(filter)));
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
const conditions = [];
|
|
20
|
+
if (filter.id !== undefined)
|
|
21
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.round.id, String(filter.id)));
|
|
22
|
+
if (filter.number !== undefined)
|
|
23
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.round.number, filter.number));
|
|
24
|
+
if (filter.stage_id !== undefined)
|
|
25
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.round.stageId, String(filter.stage_id)));
|
|
26
|
+
if (filter.group_id !== undefined)
|
|
27
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.round.groupId, String(filter.group_id)));
|
|
28
|
+
await db
|
|
29
|
+
.update(schema_1.round)
|
|
30
|
+
.set(updateData)
|
|
31
|
+
.where(conditions.length > 0 ? (0, drizzle_orm_1.and)(...conditions) : undefined);
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { DataTypes } from 'brackets-manager/dist/types';
|
|
2
|
+
import type { DrizzleDatabase } from '../../db';
|
|
3
|
+
export declare function handleStageUpdate(db: DrizzleDatabase, filter: Partial<DataTypes['stage']> | number | string, value: Partial<DataTypes['stage']> | DataTypes['stage']): Promise<boolean>;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleStageUpdate = handleStageUpdate;
|
|
4
|
+
const transformers_1 = require("../../transformers");
|
|
5
|
+
const schema_1 = require("../../db/schema");
|
|
6
|
+
const drizzle_orm_1 = require("drizzle-orm");
|
|
7
|
+
async function handleStageUpdate(db, filter, value) {
|
|
8
|
+
if (typeof filter !== 'number' && typeof filter !== 'string') {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
const filterId = String(filter);
|
|
12
|
+
try {
|
|
13
|
+
// Update stage
|
|
14
|
+
const stageData = {};
|
|
15
|
+
if (value.name !== undefined)
|
|
16
|
+
stageData.name = value.name;
|
|
17
|
+
if (value.number !== undefined)
|
|
18
|
+
stageData.number = value.number;
|
|
19
|
+
if (value.tournament_id !== undefined)
|
|
20
|
+
stageData.tournamentId = String(value.tournament_id);
|
|
21
|
+
if (value.type !== undefined)
|
|
22
|
+
stageData.type = transformers_1.StageTypeTransformer.to(value.type);
|
|
23
|
+
if (Object.keys(stageData).length > 0) {
|
|
24
|
+
await db.update(schema_1.stage).set(stageData).where((0, drizzle_orm_1.eq)(schema_1.stage.id, filterId));
|
|
25
|
+
}
|
|
26
|
+
// Update settings if provided
|
|
27
|
+
if (value.settings) {
|
|
28
|
+
const settingsData = {};
|
|
29
|
+
if (value.settings.size !== undefined)
|
|
30
|
+
settingsData.size = value.settings.size;
|
|
31
|
+
if (value.settings.seedOrdering !== undefined)
|
|
32
|
+
settingsData.seedOrdering = value.settings.seedOrdering.map(transformers_1.SeedOrderingTransformer.to);
|
|
33
|
+
if (value.settings.balanceByes !== undefined)
|
|
34
|
+
settingsData.balanceByes = value.settings.balanceByes;
|
|
35
|
+
if (value.settings.matchesChildCount !== undefined)
|
|
36
|
+
settingsData.matchesChildCount = value.settings.matchesChildCount;
|
|
37
|
+
if (value.settings.groupCount !== undefined)
|
|
38
|
+
settingsData.groupCount = value.settings.groupCount;
|
|
39
|
+
if (value.settings.roundRobinMode !== undefined)
|
|
40
|
+
settingsData.roundRobinMode = transformers_1.RoundRobinModeTransformer.to(value.settings.roundRobinMode);
|
|
41
|
+
if (value.settings.manualOrdering !== undefined)
|
|
42
|
+
settingsData.manualOrdering = value.settings.manualOrdering;
|
|
43
|
+
if (value.settings.consolationFinal !== undefined)
|
|
44
|
+
settingsData.consolationFinal = value.settings.consolationFinal;
|
|
45
|
+
if (value.settings.skipFirstRound !== undefined)
|
|
46
|
+
settingsData.skipFirstRound = value.settings.skipFirstRound;
|
|
47
|
+
if (value.settings.grandFinal !== undefined)
|
|
48
|
+
settingsData.grandFinal = transformers_1.GrandFinalTypeTransformer.to(value.settings.grandFinal);
|
|
49
|
+
if (Object.keys(settingsData).length > 0) {
|
|
50
|
+
await db
|
|
51
|
+
.update(schema_1.stageSettings)
|
|
52
|
+
.set(settingsData)
|
|
53
|
+
.where((0, drizzle_orm_1.eq)(schema_1.stageSettings.stageId, filterId));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleTournamentUpdate = handleTournamentUpdate;
|
|
4
|
+
const schema_1 = require("../../db/schema");
|
|
5
|
+
const drizzle_orm_1 = require("drizzle-orm");
|
|
6
|
+
async function handleTournamentUpdate(db, filter, value) {
|
|
7
|
+
try {
|
|
8
|
+
const updateData = {};
|
|
9
|
+
if (value.name !== undefined)
|
|
10
|
+
updateData.name = value.name;
|
|
11
|
+
if (value.description !== undefined)
|
|
12
|
+
updateData.description = value.description;
|
|
13
|
+
if (value.start_date !== undefined)
|
|
14
|
+
updateData.startDate = value.start_date;
|
|
15
|
+
if (value.end_date !== undefined)
|
|
16
|
+
updateData.endDate = value.end_date;
|
|
17
|
+
if (value.extra !== undefined)
|
|
18
|
+
updateData.extra = value.extra;
|
|
19
|
+
if (typeof filter === 'number' || typeof filter === 'string') {
|
|
20
|
+
await db
|
|
21
|
+
.update(schema_1.tournament)
|
|
22
|
+
.set(updateData)
|
|
23
|
+
.where((0, drizzle_orm_1.eq)(schema_1.tournament.id, String(filter)));
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
const conditions = [];
|
|
27
|
+
if (filter.id !== undefined)
|
|
28
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.tournament.id, String(filter.id)));
|
|
29
|
+
if (filter.name !== undefined)
|
|
30
|
+
conditions.push((0, drizzle_orm_1.eq)(schema_1.tournament.name, filter.name));
|
|
31
|
+
await db
|
|
32
|
+
.update(schema_1.tournament)
|
|
33
|
+
.set(updateData)
|
|
34
|
+
.where(conditions.length > 0 ? (0, drizzle_orm_1.and)(...conditions) : undefined);
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { DataTypes } from 'brackets-manager/dist/types';
|
|
2
|
+
import type { DrizzleDatabase } from '../db';
|
|
3
|
+
export declare function handleUpdate<T extends keyof DataTypes>(db: DrizzleDatabase, table: T | 'tournament', filter: Partial<DataTypes[T]> | number, value: Partial<DataTypes[T]> | DataTypes[T]): Promise<boolean>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleUpdate = handleUpdate;
|
|
4
|
+
const update_handlers_1 = require("./update-handlers");
|
|
5
|
+
async function handleUpdate(db, table, filter, value) {
|
|
6
|
+
switch (table) {
|
|
7
|
+
case 'tournament':
|
|
8
|
+
return (0, update_handlers_1.handleTournamentUpdate)(db, filter, value);
|
|
9
|
+
case 'participant':
|
|
10
|
+
return (0, update_handlers_1.handleParticipantUpdate)(db, filter, value);
|
|
11
|
+
case 'stage':
|
|
12
|
+
return (0, update_handlers_1.handleStageUpdate)(db, filter, value);
|
|
13
|
+
case 'group':
|
|
14
|
+
return (0, update_handlers_1.handleGroupUpdate)(db, filter, value);
|
|
15
|
+
case 'round':
|
|
16
|
+
return (0, update_handlers_1.handleRoundUpdate)(db, filter, value);
|
|
17
|
+
case 'match':
|
|
18
|
+
return (0, update_handlers_1.handleMatchUpdate)(db, filter, value);
|
|
19
|
+
case 'match_game':
|
|
20
|
+
return (0, update_handlers_1.handleMatchGameUpdate)(db, filter, value);
|
|
21
|
+
default:
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { CrudInterface, OmitId } from 'brackets-manager';
|
|
2
|
+
import { DataTypes } from 'brackets-manager/dist/types';
|
|
3
|
+
type Id = number | string;
|
|
4
|
+
import type { DrizzleDatabase } from './db';
|
|
5
|
+
export declare class SqlDatabase implements CrudInterface {
|
|
6
|
+
private db;
|
|
7
|
+
constructor(db: DrizzleDatabase);
|
|
8
|
+
insert<T extends keyof DataTypes>(table: T, value: OmitId<DataTypes[T]>): Promise<number>;
|
|
9
|
+
insert<T extends keyof DataTypes>(table: T, values: OmitId<DataTypes[T]>[]): Promise<boolean>;
|
|
10
|
+
select<T extends keyof DataTypes>(table: T): Promise<DataTypes[T][] | null>;
|
|
11
|
+
select<T extends keyof DataTypes>(table: T, id: Id): Promise<DataTypes[T] | null>;
|
|
12
|
+
select<T extends keyof DataTypes>(table: T, filter: Partial<DataTypes[T]>): Promise<DataTypes[T][] | null>;
|
|
13
|
+
update<T extends keyof DataTypes>(table: T, id: Id, value: DataTypes[T]): Promise<boolean>;
|
|
14
|
+
update<T extends keyof DataTypes>(table: T, filter: Partial<DataTypes[T]>, value: Partial<DataTypes[T]>): Promise<boolean>;
|
|
15
|
+
delete<T extends keyof DataTypes>(table: T): Promise<boolean>;
|
|
16
|
+
delete<T extends keyof DataTypes>(table: T, filter: Partial<DataTypes[T]>): Promise<boolean>;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
package/dist/storage.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SqlDatabase = void 0;
|
|
4
|
+
const storage_handlers_1 = require("./storage-handlers");
|
|
5
|
+
// Extended interface that supports text IDs (string or number)
|
|
6
|
+
class SqlDatabase {
|
|
7
|
+
db;
|
|
8
|
+
constructor(db) {
|
|
9
|
+
this.db = db;
|
|
10
|
+
}
|
|
11
|
+
insert(table, values) {
|
|
12
|
+
// With text IDs, the caller must provide the id - we cast to the expected type
|
|
13
|
+
return (0, storage_handlers_1.handleInsert)(this.db, table, values);
|
|
14
|
+
}
|
|
15
|
+
select(table, filter) {
|
|
16
|
+
return (0, storage_handlers_1.handleSelect)(this.db, table, filter);
|
|
17
|
+
}
|
|
18
|
+
update(table, filter, value) {
|
|
19
|
+
return (0, storage_handlers_1.handleUpdate)(this.db, table, filter, value);
|
|
20
|
+
}
|
|
21
|
+
delete(table, filter) {
|
|
22
|
+
return (0, storage_handlers_1.handleDelete)(this.db, table, filter);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.SqlDatabase = SqlDatabase;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { GrandFinalType } from 'brackets-model';
|
|
2
|
+
import type { GrandFinalType as DrizzleGrandFinalType } from '../../db/schema/enums';
|
|
3
|
+
export declare const GrandFinalTypeTransformer: {
|
|
4
|
+
to(type: GrandFinalType): DrizzleGrandFinalType;
|
|
5
|
+
from(type: DrizzleGrandFinalType): GrandFinalType;
|
|
6
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GrandFinalTypeTransformer = void 0;
|
|
4
|
+
exports.GrandFinalTypeTransformer = {
|
|
5
|
+
to(type) {
|
|
6
|
+
switch (type) {
|
|
7
|
+
case 'none':
|
|
8
|
+
return 'NONE';
|
|
9
|
+
case 'simple':
|
|
10
|
+
return 'SIMPLE';
|
|
11
|
+
case 'double':
|
|
12
|
+
return 'DOUBLE';
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
from(type) {
|
|
16
|
+
switch (type) {
|
|
17
|
+
case 'NONE':
|
|
18
|
+
return 'none';
|
|
19
|
+
case 'SIMPLE':
|
|
20
|
+
return 'simple';
|
|
21
|
+
case 'DOUBLE':
|
|
22
|
+
return 'double';
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
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("./grand-final-type"), exports);
|
|
18
|
+
__exportStar(require("./match-result"), exports);
|
|
19
|
+
__exportStar(require("./match-status"), exports);
|
|
20
|
+
__exportStar(require("./round-robin-mode"), exports);
|
|
21
|
+
__exportStar(require("./seed-ordering"), exports);
|
|
22
|
+
__exportStar(require("./stage-type"), exports);
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MatchResultTransformer = void 0;
|
|
4
|
+
exports.MatchResultTransformer = {
|
|
5
|
+
to(result) {
|
|
6
|
+
switch (result) {
|
|
7
|
+
case 'win':
|
|
8
|
+
return 'WIN';
|
|
9
|
+
case 'draw':
|
|
10
|
+
return 'DRAW';
|
|
11
|
+
case 'loss':
|
|
12
|
+
return 'LOSS';
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
from(result) {
|
|
16
|
+
switch (result) {
|
|
17
|
+
case 'WIN':
|
|
18
|
+
return 'win';
|
|
19
|
+
case 'DRAW':
|
|
20
|
+
return 'draw';
|
|
21
|
+
case 'LOSS':
|
|
22
|
+
return 'loss';
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MatchStatusTransformer = void 0;
|
|
4
|
+
const brackets_model_1 = require("brackets-model");
|
|
5
|
+
exports.MatchStatusTransformer = {
|
|
6
|
+
to(status) {
|
|
7
|
+
switch (status) {
|
|
8
|
+
case brackets_model_1.Status.Locked:
|
|
9
|
+
return 'LOCKED';
|
|
10
|
+
case brackets_model_1.Status.Waiting:
|
|
11
|
+
return 'WAITING';
|
|
12
|
+
case brackets_model_1.Status.Ready:
|
|
13
|
+
return 'READY';
|
|
14
|
+
case brackets_model_1.Status.Running:
|
|
15
|
+
return 'RUNNING';
|
|
16
|
+
case brackets_model_1.Status.Completed:
|
|
17
|
+
return 'COMPLETED';
|
|
18
|
+
case brackets_model_1.Status.Archived:
|
|
19
|
+
return 'ARCHIVED';
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
from(status) {
|
|
23
|
+
switch (status) {
|
|
24
|
+
case 'LOCKED':
|
|
25
|
+
return brackets_model_1.Status.Locked;
|
|
26
|
+
case 'WAITING':
|
|
27
|
+
return brackets_model_1.Status.Waiting;
|
|
28
|
+
case 'READY':
|
|
29
|
+
return brackets_model_1.Status.Ready;
|
|
30
|
+
case 'RUNNING':
|
|
31
|
+
return brackets_model_1.Status.Running;
|
|
32
|
+
case 'COMPLETED':
|
|
33
|
+
return brackets_model_1.Status.Completed;
|
|
34
|
+
case 'ARCHIVED':
|
|
35
|
+
return brackets_model_1.Status.Archived;
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { RoundRobinMode } from 'brackets-model';
|
|
2
|
+
import type { RoundRobinMode as DrizzleRoundRobinMode } from '../../db/schema/enums';
|
|
3
|
+
export declare const RoundRobinModeTransformer: {
|
|
4
|
+
to(mode: RoundRobinMode): DrizzleRoundRobinMode;
|
|
5
|
+
from(mode: DrizzleRoundRobinMode): RoundRobinMode;
|
|
6
|
+
};
|