brackets-prisma-db 1.0.1 → 2.0.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/README.md +5 -2
- package/dist/storage-handlers/delete-handlers/stage.js +38 -19
- package/dist/storage-handlers/select-handlers/group.js +4 -1
- package/dist/storage-handlers/select-handlers/match-game.js +2 -0
- package/dist/storage-handlers/select-handlers/match.js +16 -0
- package/dist/storage-handlers/select-handlers/round.js +4 -1
- package/dist/storage-handlers/select-handlers/stage.js +2 -0
- package/dist/transformers/enum/grand-final-type.d.ts +1 -1
- package/dist/transformers/enum/match-result.d.ts +1 -1
- package/dist/transformers/enum/match-status.d.ts +1 -1
- package/dist/transformers/enum/round-robin-mode.d.ts +1 -1
- package/dist/transformers/enum/seed-ordering.d.ts +1 -1
- package/dist/transformers/enum/stage-type.d.ts +1 -1
- package/dist/transformers/model/group.d.ts +3 -3
- package/dist/transformers/model/match-game.d.ts +4 -4
- package/dist/transformers/model/match.d.ts +4 -4
- package/dist/transformers/model/participant-result.d.ts +7 -7
- package/dist/transformers/model/participant.d.ts +3 -3
- package/dist/transformers/model/round.d.ts +3 -3
- package/dist/transformers/model/stage-settings.d.ts +7 -7
- package/dist/transformers/model/stage.d.ts +5 -5
- package/package.json +6 -7
package/README.md
CHANGED
|
@@ -31,9 +31,12 @@ Lastly push the definition to your database using `npx prisma db push`.
|
|
|
31
31
|
|
|
32
32
|
```typescript
|
|
33
33
|
import { SqlDatabase } from 'brackets-prisma-db';
|
|
34
|
-
import { prisma } from './client';
|
|
35
34
|
import { BracketsManager } from 'brackets-manager';
|
|
35
|
+
import { PrismaClient } from '@prisma/client'
|
|
36
|
+
|
|
37
|
+
// Your Prisma client
|
|
38
|
+
const prisma = new PrismaClient();
|
|
36
39
|
|
|
37
40
|
const storage = new SqlDatabase(prisma);
|
|
38
41
|
const manager = new BracketsManager(storage);
|
|
39
|
-
```
|
|
42
|
+
```
|
|
@@ -3,26 +3,45 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.handleStageDelete = void 0;
|
|
4
4
|
const transformers_1 = require("../../transformers");
|
|
5
5
|
async function handleStageDelete(prisma, filter) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
6
|
+
return prisma
|
|
7
|
+
.$transaction(async (tx) => {
|
|
8
|
+
// Build where clause if a filter is provided
|
|
9
|
+
const where = filter
|
|
10
|
+
? {
|
|
11
|
+
id: filter.id,
|
|
12
|
+
name: filter.name,
|
|
13
|
+
number: filter.number,
|
|
14
|
+
tournamentId: filter.tournament_id,
|
|
15
|
+
type: filter.type
|
|
16
|
+
? transformers_1.StageTypeTransformer.to(filter.type)
|
|
17
|
+
: undefined,
|
|
18
|
+
}
|
|
19
|
+
: undefined;
|
|
20
|
+
if (!where) {
|
|
21
|
+
// No filter: delete in the right order to satisfy FK constraints
|
|
22
|
+
await tx.stageSettings.deleteMany({});
|
|
23
|
+
await tx.stage.deleteMany({});
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
// Filtered delete: find matching stages
|
|
27
|
+
const stages = await tx.stage.findMany({
|
|
28
|
+
where,
|
|
29
|
+
select: { id: true },
|
|
30
|
+
});
|
|
31
|
+
if (stages.length === 0)
|
|
32
|
+
return true;
|
|
33
|
+
// Delete related StageSettings first to satisfy FK constraints
|
|
34
|
+
await tx.stageSettings.deleteMany({
|
|
35
|
+
where: { stageId: { in: stages.map((s) => s.id) } },
|
|
36
|
+
});
|
|
37
|
+
// Then delete the stages
|
|
38
|
+
await tx.stage.deleteMany({ where });
|
|
39
|
+
return true;
|
|
24
40
|
})
|
|
25
41
|
.then(() => true)
|
|
26
|
-
.catch(() =>
|
|
42
|
+
.catch((e) => {
|
|
43
|
+
console.error(new Error(`Error deleting stages with filter ${JSON.stringify(filter)}`, { cause: e }));
|
|
44
|
+
return false;
|
|
45
|
+
});
|
|
27
46
|
}
|
|
28
47
|
exports.handleStageDelete = handleStageDelete;
|
|
@@ -6,7 +6,9 @@ async function handleGroupSelect(prisma, filter) {
|
|
|
6
6
|
if (filter === undefined) {
|
|
7
7
|
// Query all entries of table
|
|
8
8
|
return prisma.group
|
|
9
|
-
.findMany(
|
|
9
|
+
.findMany({
|
|
10
|
+
orderBy: [{ number: 'asc' }],
|
|
11
|
+
})
|
|
10
12
|
.then((values) => values.map(transformers_1.GroupTransformer.from))
|
|
11
13
|
.catch(() => []);
|
|
12
14
|
}
|
|
@@ -31,6 +33,7 @@ async function handleGroupSelect(prisma, filter) {
|
|
|
31
33
|
stageId: filter.stage_id,
|
|
32
34
|
number: filter.number,
|
|
33
35
|
},
|
|
36
|
+
orderBy: [{ number: 'asc' }],
|
|
34
37
|
})
|
|
35
38
|
.then((values) => values.map(transformers_1.GroupTransformer.from))
|
|
36
39
|
.catch(() => []);
|
|
@@ -11,6 +11,7 @@ async function handleMatchGameSelect(prisma, filter) {
|
|
|
11
11
|
opponent1Result: true,
|
|
12
12
|
opponent2Result: true,
|
|
13
13
|
},
|
|
14
|
+
orderBy: [{ number: 'asc' }],
|
|
14
15
|
})
|
|
15
16
|
.then((values) => values.map(transformers_1.MatchGameTransformer.from))
|
|
16
17
|
.catch(() => []);
|
|
@@ -48,6 +49,7 @@ async function handleMatchGameSelect(prisma, filter) {
|
|
|
48
49
|
opponent1Result: true,
|
|
49
50
|
opponent2Result: true,
|
|
50
51
|
},
|
|
52
|
+
orderBy: [{ number: 'asc' }],
|
|
51
53
|
})
|
|
52
54
|
.then((values) => values.map(transformers_1.MatchGameTransformer.from))
|
|
53
55
|
.catch(() => []);
|
|
@@ -11,6 +11,14 @@ async function handleMatchSelect(prisma, filter) {
|
|
|
11
11
|
opponent1Result: true,
|
|
12
12
|
opponent2Result: true,
|
|
13
13
|
},
|
|
14
|
+
orderBy: [
|
|
15
|
+
{
|
|
16
|
+
round: {
|
|
17
|
+
number: 'asc',
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
{ number: 'asc' },
|
|
21
|
+
],
|
|
14
22
|
})
|
|
15
23
|
.then((values) => values.map(transformers_1.MatchTransformer.from))
|
|
16
24
|
.catch(() => []);
|
|
@@ -50,6 +58,14 @@ async function handleMatchSelect(prisma, filter) {
|
|
|
50
58
|
opponent1Result: true,
|
|
51
59
|
opponent2Result: true,
|
|
52
60
|
},
|
|
61
|
+
orderBy: [
|
|
62
|
+
{
|
|
63
|
+
round: {
|
|
64
|
+
number: 'asc',
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
{ number: 'asc' },
|
|
68
|
+
],
|
|
53
69
|
})
|
|
54
70
|
.then((values) => values.map(transformers_1.MatchTransformer.from))
|
|
55
71
|
.catch(() => []);
|
|
@@ -6,7 +6,9 @@ async function handleRoundSelect(prisma, filter) {
|
|
|
6
6
|
if (filter === undefined) {
|
|
7
7
|
// Query all entries of table
|
|
8
8
|
return prisma.round
|
|
9
|
-
.findMany(
|
|
9
|
+
.findMany({
|
|
10
|
+
orderBy: [{ number: 'asc' }],
|
|
11
|
+
})
|
|
10
12
|
.then((values) => values.map(transformers_1.RoundTransformer.from))
|
|
11
13
|
.catch(() => []);
|
|
12
14
|
}
|
|
@@ -32,6 +34,7 @@ async function handleRoundSelect(prisma, filter) {
|
|
|
32
34
|
groupId: filter.group_id,
|
|
33
35
|
number: filter.number,
|
|
34
36
|
},
|
|
37
|
+
orderBy: [{ number: 'asc' }],
|
|
35
38
|
})
|
|
36
39
|
.then((values) => values.map(transformers_1.RoundTransformer.from))
|
|
37
40
|
.catch(() => []);
|
|
@@ -10,6 +10,7 @@ async function handleStageSelect(prisma, filter) {
|
|
|
10
10
|
include: {
|
|
11
11
|
settings: true,
|
|
12
12
|
},
|
|
13
|
+
orderBy: [{ number: 'asc' }],
|
|
13
14
|
})
|
|
14
15
|
.then((values) => values.map((value) => {
|
|
15
16
|
if (value.settings === null) {
|
|
@@ -53,6 +54,7 @@ async function handleStageSelect(prisma, filter) {
|
|
|
53
54
|
include: {
|
|
54
55
|
settings: true,
|
|
55
56
|
},
|
|
57
|
+
orderBy: [{ number: 'asc' }],
|
|
56
58
|
})
|
|
57
59
|
.then((values) => values.map((value) => {
|
|
58
60
|
if (value.settings === null) {
|
|
@@ -2,5 +2,5 @@ import * as Prisma from '@prisma/client';
|
|
|
2
2
|
import { GrandFinalType } from 'brackets-model';
|
|
3
3
|
export declare const GrandFinalTypeTransformer: {
|
|
4
4
|
to(type: GrandFinalType): "SIMPLE" | "DOUBLE" | "NONE";
|
|
5
|
-
from(type: Prisma.GrandFinalType): "none" | "simple" | "double";
|
|
5
|
+
from(type: Prisma.$Enums.GrandFinalType): "none" | "simple" | "double";
|
|
6
6
|
};
|
|
@@ -2,5 +2,5 @@ import * as Prisma from '@prisma/client';
|
|
|
2
2
|
import { Result } from 'brackets-model';
|
|
3
3
|
export declare const MatchResultTransformer: {
|
|
4
4
|
to(result: Result): "WIN" | "DRAW" | "LOSS";
|
|
5
|
-
from(result: Prisma.MatchResult): "win" | "draw" | "loss";
|
|
5
|
+
from(result: Prisma.$Enums.MatchResult): "win" | "draw" | "loss";
|
|
6
6
|
};
|
|
@@ -2,5 +2,5 @@ import * as Prisma from '@prisma/client';
|
|
|
2
2
|
import { Status } from 'brackets-model';
|
|
3
3
|
export declare const MatchStatusTransformer: {
|
|
4
4
|
to(status: Status): "LOCKED" | "WAITING" | "READY" | "RUNNING" | "COMPLETED" | "ARCHIVED";
|
|
5
|
-
from(status: Prisma.MatchStatus): Status;
|
|
5
|
+
from(status: Prisma.$Enums.MatchStatus): Status;
|
|
6
6
|
};
|
|
@@ -2,5 +2,5 @@ import * as Prisma from '@prisma/client';
|
|
|
2
2
|
import { RoundRobinMode } from 'brackets-model';
|
|
3
3
|
export declare const RoundRobinModeTransformer: {
|
|
4
4
|
to(mode: RoundRobinMode): "SIMPLE" | "DOUBLE";
|
|
5
|
-
from(mode: Prisma.RoundRobinMode): "simple" | "double";
|
|
5
|
+
from(mode: Prisma.$Enums.RoundRobinMode): "simple" | "double";
|
|
6
6
|
};
|
|
@@ -2,5 +2,5 @@ import * as Prisma from '@prisma/client';
|
|
|
2
2
|
import { SeedOrdering } from 'brackets-model';
|
|
3
3
|
export declare const SeedOrderingTransformer: {
|
|
4
4
|
to(ordering: SeedOrdering): "NATURAL" | "REVERSE" | "HALF_SHIFT" | "REVERSE_HALF_SHIFT" | "PAIR_FLIP" | "INNER_OUTER" | "GROUPS_EFFORT_BALANCED" | "GROUPS_SEED_OPTIMIZED" | "GROUPS_BRACKET_OPTIMIZED";
|
|
5
|
-
from(ordering: Prisma.SeedOrdering): "reverse" | "natural" | "half_shift" | "reverse_half_shift" | "pair_flip" | "inner_outer" | "groups.effort_balanced" | "groups.seed_optimized" | "groups.bracket_optimized";
|
|
5
|
+
from(ordering: Prisma.$Enums.SeedOrdering): "reverse" | "natural" | "half_shift" | "reverse_half_shift" | "pair_flip" | "inner_outer" | "groups.effort_balanced" | "groups.seed_optimized" | "groups.bracket_optimized";
|
|
6
6
|
};
|
|
@@ -2,5 +2,5 @@ import * as Prisma from '@prisma/client';
|
|
|
2
2
|
import { StageType } from 'brackets-model';
|
|
3
3
|
export declare const StageTypeTransformer: {
|
|
4
4
|
to(type: StageType): "ROUND_ROBIN" | "SINGLE_ELIMINATION" | "DOUBLE_ELIMINATION";
|
|
5
|
-
from(type: Prisma.StageType): "round_robin" | "single_elimination" | "double_elimination";
|
|
5
|
+
from(type: Prisma.$Enums.StageType): "round_robin" | "single_elimination" | "double_elimination";
|
|
6
6
|
};
|
|
@@ -5,11 +5,11 @@ export declare const GroupTransformer: {
|
|
|
5
5
|
stageId: number;
|
|
6
6
|
number: number;
|
|
7
7
|
};
|
|
8
|
-
from(output:
|
|
8
|
+
from(output: {
|
|
9
|
+
number: number;
|
|
9
10
|
id: number;
|
|
10
11
|
stageId: number;
|
|
11
|
-
|
|
12
|
-
}, unknown> & {}): {
|
|
12
|
+
}): {
|
|
13
13
|
id: number;
|
|
14
14
|
stage_id: number;
|
|
15
15
|
number: number;
|
|
@@ -8,13 +8,13 @@ export declare const MatchGameTransformer: {
|
|
|
8
8
|
matchId: number;
|
|
9
9
|
number: number;
|
|
10
10
|
};
|
|
11
|
-
from(output:
|
|
11
|
+
from(output: {
|
|
12
|
+
number: number;
|
|
12
13
|
id: number;
|
|
13
|
-
status: Prisma.MatchStatus;
|
|
14
|
+
status: Prisma.$Enums.MatchStatus;
|
|
14
15
|
stageId: number;
|
|
15
16
|
matchId: number;
|
|
16
|
-
|
|
17
|
-
}, unknown> & {} & {
|
|
17
|
+
} & {
|
|
18
18
|
opponent1Result: Prisma.ParticipantMatchGameResult | null;
|
|
19
19
|
opponent2Result: Prisma.ParticipantMatchGameResult | null;
|
|
20
20
|
}): {
|
|
@@ -10,15 +10,15 @@ export declare const MatchTransformer: {
|
|
|
10
10
|
number: number;
|
|
11
11
|
childCount: number;
|
|
12
12
|
};
|
|
13
|
-
from(output:
|
|
13
|
+
from(output: {
|
|
14
|
+
number: number;
|
|
14
15
|
id: number;
|
|
15
|
-
status: Prisma.MatchStatus;
|
|
16
|
+
status: Prisma.$Enums.MatchStatus;
|
|
16
17
|
stageId: number;
|
|
17
18
|
groupId: number;
|
|
18
19
|
roundId: number;
|
|
19
|
-
number: number;
|
|
20
20
|
childCount: number;
|
|
21
|
-
}
|
|
21
|
+
} & {
|
|
22
22
|
opponent1Result: Prisma.ParticipantMatchResult | null;
|
|
23
23
|
opponent2Result: Prisma.ParticipantMatchResult | null;
|
|
24
24
|
}): {
|
|
@@ -8,25 +8,25 @@ export declare const ParticipantMatchResultTransformer: {
|
|
|
8
8
|
score: number | null;
|
|
9
9
|
result: "WIN" | "DRAW" | "LOSS" | null;
|
|
10
10
|
};
|
|
11
|
-
from(output:
|
|
11
|
+
from(output: {
|
|
12
12
|
id: number;
|
|
13
|
-
participantId: number | null;
|
|
14
13
|
position: number | null;
|
|
14
|
+
result: Prisma.$Enums.MatchResult | null;
|
|
15
|
+
participantId: number | null;
|
|
15
16
|
forfeit: boolean | null;
|
|
16
17
|
score: number | null;
|
|
17
|
-
result: Prisma.MatchResult | null;
|
|
18
18
|
opponent1MatchId: number | null;
|
|
19
19
|
opponent2MatchId: number | null;
|
|
20
|
-
}
|
|
20
|
+
} | {
|
|
21
21
|
id: number;
|
|
22
|
-
participantId: number | null;
|
|
23
22
|
position: number | null;
|
|
23
|
+
result: Prisma.$Enums.MatchResult | null;
|
|
24
|
+
participantId: number | null;
|
|
24
25
|
forfeit: boolean | null;
|
|
25
26
|
score: number | null;
|
|
26
|
-
result: Prisma.MatchResult | null;
|
|
27
27
|
opponent1MatchGameId: number | null;
|
|
28
28
|
opponent2MatchGameId: number | null;
|
|
29
|
-
}
|
|
29
|
+
}): {
|
|
30
30
|
id: number | null;
|
|
31
31
|
forfeit: boolean | undefined;
|
|
32
32
|
position: number | undefined;
|
|
@@ -5,11 +5,11 @@ export declare const ParticipantTransformer: {
|
|
|
5
5
|
name: string;
|
|
6
6
|
tournamentId: number;
|
|
7
7
|
};
|
|
8
|
-
from(output:
|
|
8
|
+
from(output: {
|
|
9
9
|
id: number;
|
|
10
|
-
tournamentId: number;
|
|
11
10
|
name: string;
|
|
12
|
-
|
|
11
|
+
tournamentId: number;
|
|
12
|
+
}): {
|
|
13
13
|
id: number;
|
|
14
14
|
name: string;
|
|
15
15
|
tournament_id: number;
|
|
@@ -6,12 +6,12 @@ export declare const RoundTransformer: {
|
|
|
6
6
|
groupId: number;
|
|
7
7
|
number: number;
|
|
8
8
|
};
|
|
9
|
-
from(output:
|
|
9
|
+
from(output: {
|
|
10
|
+
number: number;
|
|
10
11
|
id: number;
|
|
11
12
|
stageId: number;
|
|
12
13
|
groupId: number;
|
|
13
|
-
|
|
14
|
-
}, unknown> & {}): {
|
|
14
|
+
}): {
|
|
15
15
|
id: number;
|
|
16
16
|
stage_id: number;
|
|
17
17
|
group_id: number;
|
|
@@ -14,20 +14,20 @@ export declare const StageSettingsTransformer: {
|
|
|
14
14
|
skipFirstRound: boolean | null;
|
|
15
15
|
grandFinal: "SIMPLE" | "DOUBLE" | "NONE" | null;
|
|
16
16
|
};
|
|
17
|
-
from(output: Omit<
|
|
17
|
+
from(output: Omit<{
|
|
18
18
|
id: string;
|
|
19
|
-
stageId: number;
|
|
20
19
|
size: number | null;
|
|
21
|
-
|
|
20
|
+
stageId: number;
|
|
21
|
+
seedOrdering: Prisma.$Enums.SeedOrdering[];
|
|
22
22
|
balanceByes: boolean | null;
|
|
23
23
|
matchesChildCount: number | null;
|
|
24
24
|
groupCount: number | null;
|
|
25
|
-
roundRobinMode: Prisma.RoundRobinMode | null;
|
|
26
|
-
manualOrdering:
|
|
25
|
+
roundRobinMode: Prisma.$Enums.RoundRobinMode | null;
|
|
26
|
+
manualOrdering: import("@prisma/client/runtime/library").JsonValue;
|
|
27
27
|
consolationFinal: boolean | null;
|
|
28
28
|
skipFirstRound: boolean | null;
|
|
29
|
-
grandFinal: Prisma.GrandFinalType | null;
|
|
30
|
-
},
|
|
29
|
+
grandFinal: Prisma.$Enums.GrandFinalType | null;
|
|
30
|
+
}, "stageId">): {
|
|
31
31
|
id: string;
|
|
32
32
|
size: number | undefined;
|
|
33
33
|
seedOrdering: ("reverse" | "natural" | "half_shift" | "reverse_half_shift" | "pair_flip" | "inner_outer" | "groups.effort_balanced" | "groups.seed_optimized" | "groups.bracket_optimized")[];
|
|
@@ -8,13 +8,13 @@ export declare const StageTransformer: {
|
|
|
8
8
|
number: number;
|
|
9
9
|
type: "ROUND_ROBIN" | "SINGLE_ELIMINATION" | "DOUBLE_ELIMINATION";
|
|
10
10
|
};
|
|
11
|
-
from(output:
|
|
11
|
+
from(output: {
|
|
12
|
+
number: number;
|
|
13
|
+
type: Prisma.$Enums.StageType;
|
|
12
14
|
id: number;
|
|
13
|
-
tournamentId: number;
|
|
14
15
|
name: string;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}, unknown> & {} & {
|
|
16
|
+
tournamentId: number;
|
|
17
|
+
} & {
|
|
18
18
|
settings: Prisma.StageSettings;
|
|
19
19
|
}): {
|
|
20
20
|
id: number;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "brackets-prisma-db",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "A
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "A SQL database with Prisma for brackets-manager.js",
|
|
5
5
|
"author": "Tandashi",
|
|
6
6
|
"license": "ISC",
|
|
7
7
|
"repository": {
|
|
@@ -33,16 +33,15 @@
|
|
|
33
33
|
"prepublishOnly": "npm run build"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@prisma/client": "^
|
|
37
|
-
"brackets-
|
|
38
|
-
"brackets-model": "^1.4.0",
|
|
36
|
+
"@prisma/client": "^6.17.1",
|
|
37
|
+
"brackets-model": "1.4.0",
|
|
39
38
|
"typescript": "^5.1.3"
|
|
40
39
|
},
|
|
41
40
|
"devDependencies": {
|
|
42
41
|
"@types/node": "^20.3.0",
|
|
43
|
-
"prisma": "^
|
|
42
|
+
"prisma": "^6.17.1"
|
|
44
43
|
},
|
|
45
44
|
"peerDependencies": {
|
|
46
|
-
"brackets-manager": "
|
|
45
|
+
"brackets-manager": "1.x"
|
|
47
46
|
}
|
|
48
47
|
}
|