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,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,3 @@
1
+ import { Tournament } from '../../transformers';
2
+ import type { DrizzleDatabase } from '../../db';
3
+ export declare function handleTournamentUpdate(db: DrizzleDatabase, filter: Partial<Tournament> | number | string, value: Partial<Tournament>): Promise<boolean>;
@@ -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 {};
@@ -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,6 @@
1
+ export * from './grand-final-type';
2
+ export * from './match-result';
3
+ export * from './match-status';
4
+ export * from './round-robin-mode';
5
+ export * from './seed-ordering';
6
+ export * from './stage-type';
@@ -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,6 @@
1
+ import { Result } from 'brackets-model';
2
+ import type { MatchResult as DrizzleMatchResult } from '../../db/schema/enums';
3
+ export declare const MatchResultTransformer: {
4
+ to(result: Result): DrizzleMatchResult;
5
+ from(result: DrizzleMatchResult): Result;
6
+ };
@@ -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,6 @@
1
+ import { Status } from 'brackets-model';
2
+ import type { MatchStatus as DrizzleMatchStatus } from '../../db/schema/enums';
3
+ export declare const MatchStatusTransformer: {
4
+ to(status: Status): DrizzleMatchStatus;
5
+ from(status: DrizzleMatchStatus): Status;
6
+ };
@@ -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
+ };