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.
Files changed (139) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +136 -0
  3. package/dist/db/index.d.ts +7 -0
  4. package/dist/db/index.js +48 -0
  5. package/dist/db/schema/enums.d.ts +12 -0
  6. package/dist/db/schema/enums.js +41 -0
  7. package/dist/db/schema/group.d.ts +65 -0
  8. package/dist/db/schema/group.js +26 -0
  9. package/dist/db/schema/index.d.ts +8 -0
  10. package/dist/db/schema/index.js +26 -0
  11. package/dist/db/schema/match-game.d.ts +267 -0
  12. package/dist/db/schema/match-game.js +81 -0
  13. package/dist/db/schema/match.d.ts +303 -0
  14. package/dist/db/schema/match.js +94 -0
  15. package/dist/db/schema/participant.d.ts +82 -0
  16. package/dist/db/schema/participant.js +27 -0
  17. package/dist/db/schema/round.d.ts +82 -0
  18. package/dist/db/schema/round.js +33 -0
  19. package/dist/db/schema/stage.d.ts +344 -0
  20. package/dist/db/schema/stage.js +72 -0
  21. package/dist/db/schema/tournament.d.ts +115 -0
  22. package/dist/db/schema/tournament.js +25 -0
  23. package/dist/index.d.ts +3 -0
  24. package/dist/index.js +19 -0
  25. package/dist/storage-handlers/delete-handlers/group.d.ts +3 -0
  26. package/dist/storage-handlers/delete-handlers/group.js +27 -0
  27. package/dist/storage-handlers/delete-handlers/index.d.ts +7 -0
  28. package/dist/storage-handlers/delete-handlers/index.js +23 -0
  29. package/dist/storage-handlers/delete-handlers/match-game.d.ts +3 -0
  30. package/dist/storage-handlers/delete-handlers/match-game.js +43 -0
  31. package/dist/storage-handlers/delete-handlers/match.d.ts +3 -0
  32. package/dist/storage-handlers/delete-handlers/match.js +45 -0
  33. package/dist/storage-handlers/delete-handlers/participant.d.ts +3 -0
  34. package/dist/storage-handlers/delete-handlers/participant.js +27 -0
  35. package/dist/storage-handlers/delete-handlers/round.d.ts +3 -0
  36. package/dist/storage-handlers/delete-handlers/round.js +29 -0
  37. package/dist/storage-handlers/delete-handlers/stage.d.ts +3 -0
  38. package/dist/storage-handlers/delete-handlers/stage.js +48 -0
  39. package/dist/storage-handlers/delete-handlers/tournament.d.ts +3 -0
  40. package/dist/storage-handlers/delete-handlers/tournament.js +25 -0
  41. package/dist/storage-handlers/delete.d.ts +3 -0
  42. package/dist/storage-handlers/delete.js +24 -0
  43. package/dist/storage-handlers/index.d.ts +4 -0
  44. package/dist/storage-handlers/index.js +20 -0
  45. package/dist/storage-handlers/insert-handlers/group.d.ts +5 -0
  46. package/dist/storage-handlers/insert-handlers/group.js +21 -0
  47. package/dist/storage-handlers/insert-handlers/index.d.ts +7 -0
  48. package/dist/storage-handlers/insert-handlers/index.js +23 -0
  49. package/dist/storage-handlers/insert-handlers/match-game.d.ts +5 -0
  50. package/dist/storage-handlers/insert-handlers/match-game.js +66 -0
  51. package/dist/storage-handlers/insert-handlers/match.d.ts +5 -0
  52. package/dist/storage-handlers/insert-handlers/match.js +66 -0
  53. package/dist/storage-handlers/insert-handlers/participant.d.ts +5 -0
  54. package/dist/storage-handlers/insert-handlers/participant.js +25 -0
  55. package/dist/storage-handlers/insert-handlers/round.d.ts +5 -0
  56. package/dist/storage-handlers/insert-handlers/round.js +21 -0
  57. package/dist/storage-handlers/insert-handlers/stage.d.ts +5 -0
  58. package/dist/storage-handlers/insert-handlers/stage.js +44 -0
  59. package/dist/storage-handlers/insert-handlers/tournament.d.ts +5 -0
  60. package/dist/storage-handlers/insert-handlers/tournament.js +25 -0
  61. package/dist/storage-handlers/insert.d.ts +3 -0
  62. package/dist/storage-handlers/insert.js +25 -0
  63. package/dist/storage-handlers/select-handlers/group.d.ts +3 -0
  64. package/dist/storage-handlers/select-handlers/group.js +44 -0
  65. package/dist/storage-handlers/select-handlers/index.d.ts +7 -0
  66. package/dist/storage-handlers/select-handlers/index.js +23 -0
  67. package/dist/storage-handlers/select-handlers/match-game.d.ts +3 -0
  68. package/dist/storage-handlers/select-handlers/match-game.js +80 -0
  69. package/dist/storage-handlers/select-handlers/match.d.ts +3 -0
  70. package/dist/storage-handlers/select-handlers/match.js +86 -0
  71. package/dist/storage-handlers/select-handlers/participant.d.ts +3 -0
  72. package/dist/storage-handlers/select-handlers/participant.js +40 -0
  73. package/dist/storage-handlers/select-handlers/round.d.ts +3 -0
  74. package/dist/storage-handlers/select-handlers/round.js +46 -0
  75. package/dist/storage-handlers/select-handlers/stage.d.ts +3 -0
  76. package/dist/storage-handlers/select-handlers/stage.js +60 -0
  77. package/dist/storage-handlers/select-handlers/tournament.d.ts +3 -0
  78. package/dist/storage-handlers/select-handlers/tournament.js +38 -0
  79. package/dist/storage-handlers/select.d.ts +3 -0
  80. package/dist/storage-handlers/select.js +24 -0
  81. package/dist/storage-handlers/update-handlers/group.d.ts +3 -0
  82. package/dist/storage-handlers/update-handlers/group.js +33 -0
  83. package/dist/storage-handlers/update-handlers/index.d.ts +7 -0
  84. package/dist/storage-handlers/update-handlers/index.js +23 -0
  85. package/dist/storage-handlers/update-handlers/match-game.d.ts +3 -0
  86. package/dist/storage-handlers/update-handlers/match-game.js +99 -0
  87. package/dist/storage-handlers/update-handlers/match.d.ts +3 -0
  88. package/dist/storage-handlers/update-handlers/match.js +105 -0
  89. package/dist/storage-handlers/update-handlers/participant.d.ts +3 -0
  90. package/dist/storage-handlers/update-handlers/participant.js +40 -0
  91. package/dist/storage-handlers/update-handlers/round.d.ts +3 -0
  92. package/dist/storage-handlers/update-handlers/round.js +37 -0
  93. package/dist/storage-handlers/update-handlers/stage.d.ts +3 -0
  94. package/dist/storage-handlers/update-handlers/stage.js +61 -0
  95. package/dist/storage-handlers/update-handlers/tournament.d.ts +3 -0
  96. package/dist/storage-handlers/update-handlers/tournament.js +40 -0
  97. package/dist/storage-handlers/update.d.ts +3 -0
  98. package/dist/storage-handlers/update.js +24 -0
  99. package/dist/storage.d.ts +18 -0
  100. package/dist/storage.js +25 -0
  101. package/dist/transformers/enum/grand-final-type.d.ts +6 -0
  102. package/dist/transformers/enum/grand-final-type.js +25 -0
  103. package/dist/transformers/enum/index.d.ts +6 -0
  104. package/dist/transformers/enum/index.js +22 -0
  105. package/dist/transformers/enum/match-result.d.ts +6 -0
  106. package/dist/transformers/enum/match-result.js +25 -0
  107. package/dist/transformers/enum/match-status.d.ts +6 -0
  108. package/dist/transformers/enum/match-status.js +38 -0
  109. package/dist/transformers/enum/round-robin-mode.d.ts +6 -0
  110. package/dist/transformers/enum/round-robin-mode.js +21 -0
  111. package/dist/transformers/enum/seed-ordering.d.ts +6 -0
  112. package/dist/transformers/enum/seed-ordering.js +49 -0
  113. package/dist/transformers/enum/stage-type.d.ts +6 -0
  114. package/dist/transformers/enum/stage-type.js +25 -0
  115. package/dist/transformers/index.d.ts +2 -0
  116. package/dist/transformers/index.js +18 -0
  117. package/dist/transformers/model/group.d.ts +15 -0
  118. package/dist/transformers/model/group.js +18 -0
  119. package/dist/transformers/model/index.d.ts +9 -0
  120. package/dist/transformers/model/index.js +25 -0
  121. package/dist/transformers/model/match-game.d.ts +21 -0
  122. package/dist/transformers/model/match-game.js +90 -0
  123. package/dist/transformers/model/match.d.ts +23 -0
  124. package/dist/transformers/model/match.js +96 -0
  125. package/dist/transformers/model/participant-result.d.ts +21 -0
  126. package/dist/transformers/model/participant-result.js +26 -0
  127. package/dist/transformers/model/participant.d.ts +19 -0
  128. package/dist/transformers/model/participant.js +47 -0
  129. package/dist/transformers/model/round.d.ts +17 -0
  130. package/dist/transformers/model/round.js +20 -0
  131. package/dist/transformers/model/stage-settings.d.ts +18 -0
  132. package/dist/transformers/model/stage-settings.js +46 -0
  133. package/dist/transformers/model/stage.d.ts +22 -0
  134. package/dist/transformers/model/stage.js +26 -0
  135. package/dist/transformers/model/tournament.d.ts +30 -0
  136. package/dist/transformers/model/tournament.js +39 -0
  137. package/dist/types.d.ts +15 -0
  138. package/dist/types.js +2 -0
  139. 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,7 @@
1
+ export * from './group';
2
+ export * from './match';
3
+ export * from './match-game';
4
+ export * from './participant';
5
+ export * from './round';
6
+ export * from './stage';
7
+ export * from './tournament';
@@ -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,3 @@
1
+ import type { DrizzleDatabase } from '../../db';
2
+ import type { MatchWithExtra } from '../../types';
3
+ export declare function handleMatchSelect(db: DrizzleDatabase, filter?: Partial<MatchWithExtra> | number | string): Promise<MatchWithExtra[] | MatchWithExtra | null>;
@@ -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,3 @@
1
+ import { Tournament } from '../../transformers';
2
+ import type { DrizzleDatabase } from '../../db';
3
+ export declare function handleTournamentSelect(db: DrizzleDatabase, filter?: Partial<Tournament> | number | string): Promise<Tournament[] | Tournament | null>;
@@ -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,7 @@
1
+ export * from './group';
2
+ export * from './match';
3
+ export * from './match-game';
4
+ export * from './participant';
5
+ export * from './round';
6
+ export * from './stage';
7
+ export * from './tournament';
@@ -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>;