brackets-prisma-db 1.0.2 → 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 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
- // No filter so delete everything
7
- if (!filter) {
8
- return prisma.stage
9
- .deleteMany({})
10
- .then(() => true)
11
- .catch(() => false);
12
- }
13
- return prisma.stage
14
- .deleteMany({
15
- where: {
16
- id: filter.id,
17
- name: filter.name,
18
- number: filter.number,
19
- tournamentId: filter.tournament_id,
20
- type: filter.type
21
- ? transformers_1.StageTypeTransformer.to(filter.type)
22
- : undefined,
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(() => false);
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;
@@ -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: import("@prisma/client/runtime").GetResult<{
8
+ from(output: {
9
+ number: number;
9
10
  id: number;
10
11
  stageId: number;
11
- number: number;
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: import("@prisma/client/runtime").GetResult<{
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
- number: number;
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: import("@prisma/client/runtime").GetResult<{
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
- }, unknown> & {} & {
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: (import("@prisma/client/runtime").GetResult<{
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
- }, unknown> & {}) | (import("@prisma/client/runtime").GetResult<{
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
- }, unknown> & {})): {
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: import("@prisma/client/runtime").GetResult<{
8
+ from(output: {
9
9
  id: number;
10
- tournamentId: number;
11
10
  name: string;
12
- }, unknown> & {}): {
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: import("@prisma/client/runtime").GetResult<{
9
+ from(output: {
10
+ number: number;
10
11
  id: number;
11
12
  stageId: number;
12
13
  groupId: number;
13
- number: number;
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<import("@prisma/client/runtime").GetResult<{
17
+ from(output: Omit<{
18
18
  id: string;
19
- stageId: number;
20
19
  size: number | null;
21
- seedOrdering: Prisma.SeedOrdering[];
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: Prisma.Prisma.JsonValue;
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
- }, unknown> & {}, "stageId">): {
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: import("@prisma/client/runtime").GetResult<{
11
+ from(output: {
12
+ number: number;
13
+ type: Prisma.$Enums.StageType;
12
14
  id: number;
13
- tournamentId: number;
14
15
  name: string;
15
- type: Prisma.StageType;
16
- number: number;
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": "1.0.2",
4
- "description": "A sql database with prisma for brackets-manager.js",
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": "^4.16.1",
37
- "brackets-manager": "^1.5.8",
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": "^4.16.1"
42
+ "prisma": "^6.17.1"
44
43
  },
45
44
  "peerDependencies": {
46
- "brackets-manager": "^1.3.9"
45
+ "brackets-manager": "1.x"
47
46
  }
48
- }
47
+ }