@opprs/db-prisma 1.2.0 → 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/dist/index.cjs CHANGED
@@ -37,9 +37,9 @@ __export(index_exports, {
37
37
  deleteTournament: () => deleteTournament,
38
38
  deleteUser: () => deleteUser,
39
39
  disconnect: () => disconnect,
40
- findPlayerByEmail: () => findPlayerByEmail,
41
40
  findPlayerByExternalId: () => findPlayerByExternalId,
42
41
  findPlayerById: () => findPlayerById,
42
+ findPlayerByUserEmail: () => findPlayerByUserEmail,
43
43
  findPlayers: () => findPlayers,
44
44
  findResultById: () => findResultById,
45
45
  findResultByPlayerAndTournament: () => findResultByPlayerAndTournament,
@@ -124,11 +124,12 @@ async function findPlayerByExternalId(externalId, include) {
124
124
  include
125
125
  });
126
126
  }
127
- async function findPlayerByEmail(email, include) {
128
- return prisma.player.findUnique({
127
+ async function findPlayerByUserEmail(email, include) {
128
+ const user = await prisma.user.findUnique({
129
129
  where: { email },
130
- include
130
+ include: { player: include ? { include } : true }
131
131
  });
132
+ return user?.player ?? null;
132
133
  }
133
134
  async function findPlayers(options = {}) {
134
135
  return prisma.player.findMany({
@@ -217,10 +218,7 @@ async function searchPlayers(query, limit = 20) {
217
218
  return findPlayers({
218
219
  take: limit,
219
220
  where: {
220
- OR: [
221
- { name: { contains: query, mode: "insensitive" } },
222
- { email: { contains: query, mode: "insensitive" } }
223
- ]
221
+ name: { contains: query, mode: "insensitive" }
224
222
  }
225
223
  });
226
224
  }
@@ -543,8 +541,7 @@ async function createUserWithPlayer(userData, playerData) {
543
541
  return prisma.$transaction(async (tx) => {
544
542
  const player = await tx.player.create({
545
543
  data: {
546
- name: playerData.name,
547
- email: playerData.email
544
+ name: playerData.name
548
545
  }
549
546
  });
550
547
  const user = await tx.user.create({
@@ -686,9 +683,9 @@ async function findUsers(params) {
686
683
  deleteTournament,
687
684
  deleteUser,
688
685
  disconnect,
689
- findPlayerByEmail,
690
686
  findPlayerByExternalId,
691
687
  findPlayerById,
688
+ findPlayerByUserEmail,
692
689
  findPlayers,
693
690
  findResultById,
694
691
  findResultByPlayerAndTournament,
package/dist/index.d.cts CHANGED
@@ -26,7 +26,6 @@ declare function testConnection(): Promise<boolean>;
26
26
  interface CreatePlayerInput {
27
27
  externalId?: string;
28
28
  name?: string;
29
- email?: string;
30
29
  rating?: number;
31
30
  ratingDeviation?: number;
32
31
  ranking?: number;
@@ -38,7 +37,6 @@ interface CreatePlayerInput {
38
37
  */
39
38
  interface UpdatePlayerInput {
40
39
  name?: string;
41
- email?: string;
42
40
  rating?: number;
43
41
  ratingDeviation?: number;
44
42
  ranking?: number;
@@ -70,9 +68,9 @@ declare function findPlayerById(id: string, include?: Prisma.PlayerInclude): Pro
70
68
  */
71
69
  declare function findPlayerByExternalId(externalId: string, include?: Prisma.PlayerInclude): Promise<Player | null>;
72
70
  /**
73
- * Finds a player by email
71
+ * Finds a player through their linked User's email
74
72
  */
75
- declare function findPlayerByEmail(email: string, include?: Prisma.PlayerInclude): Promise<Player | null>;
73
+ declare function findPlayerByUserEmail(email: string, include?: Prisma.PlayerInclude): Promise<Player | null>;
76
74
  /**
77
75
  * Finds multiple players with optional filters
78
76
  */
@@ -186,7 +184,6 @@ declare function getPlayerWithResults(id: string): Promise<{
186
184
  createdAt: Date;
187
185
  updatedAt: Date;
188
186
  externalId: string | null;
189
- email: string | null;
190
187
  rating: number;
191
188
  ratingDeviation: number;
192
189
  ranking: number | null;
@@ -196,7 +193,7 @@ declare function getPlayerWithResults(id: string): Promise<{
196
193
  lastEventDate: Date | null;
197
194
  } | null>;
198
195
  /**
199
- * Searches players by name or email
196
+ * Searches players by name
200
197
  */
201
198
  declare function searchPlayers(query: string, limit?: number): Promise<Player[]>;
202
199
 
@@ -302,7 +299,6 @@ declare function getTournamentWithResults(id: string): Promise<({
302
299
  createdAt: Date;
303
300
  updatedAt: Date;
304
301
  externalId: string | null;
305
- email: string | null;
306
302
  rating: number;
307
303
  ratingDeviation: number;
308
304
  ranking: number | null;
@@ -362,7 +358,6 @@ declare function getTournamentStats(id: string): Promise<{
362
358
  createdAt: Date;
363
359
  updatedAt: Date;
364
360
  externalId: string | null;
365
- email: string | null;
366
361
  rating: number;
367
362
  ratingDeviation: number;
368
363
  ranking: number | null;
@@ -593,7 +588,6 @@ declare function createUser(data: CreateUserInput): Promise<User>;
593
588
  */
594
589
  declare function createUserWithPlayer(userData: Omit<CreateUserInput, 'playerId'>, playerData: {
595
590
  name?: string;
596
- email?: string;
597
591
  }): Promise<UserWithPlayer>;
598
592
  /**
599
593
  * Finds a user by ID
@@ -696,4 +690,4 @@ interface ConnectionStatus {
696
690
  error?: string;
697
691
  }
698
692
 
699
- export { type ConnectionStatus, type CreatePlayerInput, type CreateResultInput, type CreateTournamentInput, type CreateUserInput, type FindPlayersOptions, type FindResultsOptions, type FindTournamentsOptions, type PlayerStatistics, type PlayerWithResults, type TournamentResultWithTournament, type TournamentStatistics, type UpdatePlayerInput, type UpdateResultInput, type UpdateTournamentInput, type UpdateUserInput, type UserWithPlayer, connect, countPlayers, countResults, countTournaments, countUsers, createManyResults, createPlayer, createResult, createTournament, createUser, createUserWithPlayer, deletePlayer, deleteResult, deleteResultsByTournament, deleteTournament, deleteUser, disconnect, findPlayerByEmail, findPlayerByExternalId, findPlayerById, findPlayers, findResultById, findResultByPlayerAndTournament, findResults, findTournamentByExternalId, findTournamentById, findTournaments, findUserByEmail, findUserById, findUsers, getMajorTournaments, getPlayerResults, getPlayerStats, getPlayerTopFinishes, getPlayerWithResults, getRatedPlayers, getRecentTournaments, getTopPlayersByRanking, getTopPlayersByRating, getTournamentResults, getTournamentStats, getTournamentWithResults, getTournamentsByBoosterType, getTournamentsByDateRange, getUserByEmailWithPlayer, getUserWithPlayer, prisma, recalculateTimeDecay, searchPlayers, searchTournaments, testConnection, updatePlayer, updatePlayerRating, updateResult, updateResultPoints, updateTournament, updateUser, updateUserRefreshToken };
693
+ export { type ConnectionStatus, type CreatePlayerInput, type CreateResultInput, type CreateTournamentInput, type CreateUserInput, type FindPlayersOptions, type FindResultsOptions, type FindTournamentsOptions, type PlayerStatistics, type PlayerWithResults, type TournamentResultWithTournament, type TournamentStatistics, type UpdatePlayerInput, type UpdateResultInput, type UpdateTournamentInput, type UpdateUserInput, type UserWithPlayer, connect, countPlayers, countResults, countTournaments, countUsers, createManyResults, createPlayer, createResult, createTournament, createUser, createUserWithPlayer, deletePlayer, deleteResult, deleteResultsByTournament, deleteTournament, deleteUser, disconnect, findPlayerByExternalId, findPlayerById, findPlayerByUserEmail, findPlayers, findResultById, findResultByPlayerAndTournament, findResults, findTournamentByExternalId, findTournamentById, findTournaments, findUserByEmail, findUserById, findUsers, getMajorTournaments, getPlayerResults, getPlayerStats, getPlayerTopFinishes, getPlayerWithResults, getRatedPlayers, getRecentTournaments, getTopPlayersByRanking, getTopPlayersByRating, getTournamentResults, getTournamentStats, getTournamentWithResults, getTournamentsByBoosterType, getTournamentsByDateRange, getUserByEmailWithPlayer, getUserWithPlayer, prisma, recalculateTimeDecay, searchPlayers, searchTournaments, testConnection, updatePlayer, updatePlayerRating, updateResult, updateResultPoints, updateTournament, updateUser, updateUserRefreshToken };
package/dist/index.d.ts CHANGED
@@ -26,7 +26,6 @@ declare function testConnection(): Promise<boolean>;
26
26
  interface CreatePlayerInput {
27
27
  externalId?: string;
28
28
  name?: string;
29
- email?: string;
30
29
  rating?: number;
31
30
  ratingDeviation?: number;
32
31
  ranking?: number;
@@ -38,7 +37,6 @@ interface CreatePlayerInput {
38
37
  */
39
38
  interface UpdatePlayerInput {
40
39
  name?: string;
41
- email?: string;
42
40
  rating?: number;
43
41
  ratingDeviation?: number;
44
42
  ranking?: number;
@@ -70,9 +68,9 @@ declare function findPlayerById(id: string, include?: Prisma.PlayerInclude): Pro
70
68
  */
71
69
  declare function findPlayerByExternalId(externalId: string, include?: Prisma.PlayerInclude): Promise<Player | null>;
72
70
  /**
73
- * Finds a player by email
71
+ * Finds a player through their linked User's email
74
72
  */
75
- declare function findPlayerByEmail(email: string, include?: Prisma.PlayerInclude): Promise<Player | null>;
73
+ declare function findPlayerByUserEmail(email: string, include?: Prisma.PlayerInclude): Promise<Player | null>;
76
74
  /**
77
75
  * Finds multiple players with optional filters
78
76
  */
@@ -186,7 +184,6 @@ declare function getPlayerWithResults(id: string): Promise<{
186
184
  createdAt: Date;
187
185
  updatedAt: Date;
188
186
  externalId: string | null;
189
- email: string | null;
190
187
  rating: number;
191
188
  ratingDeviation: number;
192
189
  ranking: number | null;
@@ -196,7 +193,7 @@ declare function getPlayerWithResults(id: string): Promise<{
196
193
  lastEventDate: Date | null;
197
194
  } | null>;
198
195
  /**
199
- * Searches players by name or email
196
+ * Searches players by name
200
197
  */
201
198
  declare function searchPlayers(query: string, limit?: number): Promise<Player[]>;
202
199
 
@@ -302,7 +299,6 @@ declare function getTournamentWithResults(id: string): Promise<({
302
299
  createdAt: Date;
303
300
  updatedAt: Date;
304
301
  externalId: string | null;
305
- email: string | null;
306
302
  rating: number;
307
303
  ratingDeviation: number;
308
304
  ranking: number | null;
@@ -362,7 +358,6 @@ declare function getTournamentStats(id: string): Promise<{
362
358
  createdAt: Date;
363
359
  updatedAt: Date;
364
360
  externalId: string | null;
365
- email: string | null;
366
361
  rating: number;
367
362
  ratingDeviation: number;
368
363
  ranking: number | null;
@@ -593,7 +588,6 @@ declare function createUser(data: CreateUserInput): Promise<User>;
593
588
  */
594
589
  declare function createUserWithPlayer(userData: Omit<CreateUserInput, 'playerId'>, playerData: {
595
590
  name?: string;
596
- email?: string;
597
591
  }): Promise<UserWithPlayer>;
598
592
  /**
599
593
  * Finds a user by ID
@@ -696,4 +690,4 @@ interface ConnectionStatus {
696
690
  error?: string;
697
691
  }
698
692
 
699
- export { type ConnectionStatus, type CreatePlayerInput, type CreateResultInput, type CreateTournamentInput, type CreateUserInput, type FindPlayersOptions, type FindResultsOptions, type FindTournamentsOptions, type PlayerStatistics, type PlayerWithResults, type TournamentResultWithTournament, type TournamentStatistics, type UpdatePlayerInput, type UpdateResultInput, type UpdateTournamentInput, type UpdateUserInput, type UserWithPlayer, connect, countPlayers, countResults, countTournaments, countUsers, createManyResults, createPlayer, createResult, createTournament, createUser, createUserWithPlayer, deletePlayer, deleteResult, deleteResultsByTournament, deleteTournament, deleteUser, disconnect, findPlayerByEmail, findPlayerByExternalId, findPlayerById, findPlayers, findResultById, findResultByPlayerAndTournament, findResults, findTournamentByExternalId, findTournamentById, findTournaments, findUserByEmail, findUserById, findUsers, getMajorTournaments, getPlayerResults, getPlayerStats, getPlayerTopFinishes, getPlayerWithResults, getRatedPlayers, getRecentTournaments, getTopPlayersByRanking, getTopPlayersByRating, getTournamentResults, getTournamentStats, getTournamentWithResults, getTournamentsByBoosterType, getTournamentsByDateRange, getUserByEmailWithPlayer, getUserWithPlayer, prisma, recalculateTimeDecay, searchPlayers, searchTournaments, testConnection, updatePlayer, updatePlayerRating, updateResult, updateResultPoints, updateTournament, updateUser, updateUserRefreshToken };
693
+ export { type ConnectionStatus, type CreatePlayerInput, type CreateResultInput, type CreateTournamentInput, type CreateUserInput, type FindPlayersOptions, type FindResultsOptions, type FindTournamentsOptions, type PlayerStatistics, type PlayerWithResults, type TournamentResultWithTournament, type TournamentStatistics, type UpdatePlayerInput, type UpdateResultInput, type UpdateTournamentInput, type UpdateUserInput, type UserWithPlayer, connect, countPlayers, countResults, countTournaments, countUsers, createManyResults, createPlayer, createResult, createTournament, createUser, createUserWithPlayer, deletePlayer, deleteResult, deleteResultsByTournament, deleteTournament, deleteUser, disconnect, findPlayerByExternalId, findPlayerById, findPlayerByUserEmail, findPlayers, findResultById, findResultByPlayerAndTournament, findResults, findTournamentByExternalId, findTournamentById, findTournaments, findUserByEmail, findUserById, findUsers, getMajorTournaments, getPlayerResults, getPlayerStats, getPlayerTopFinishes, getPlayerWithResults, getRatedPlayers, getRecentTournaments, getTopPlayersByRanking, getTopPlayersByRating, getTournamentResults, getTournamentStats, getTournamentWithResults, getTournamentsByBoosterType, getTournamentsByDateRange, getUserByEmailWithPlayer, getUserWithPlayer, prisma, recalculateTimeDecay, searchPlayers, searchTournaments, testConnection, updatePlayer, updatePlayerRating, updateResult, updateResultPoints, updateTournament, updateUser, updateUserRefreshToken };
package/dist/index.js CHANGED
@@ -41,11 +41,12 @@ async function findPlayerByExternalId(externalId, include) {
41
41
  include
42
42
  });
43
43
  }
44
- async function findPlayerByEmail(email, include) {
45
- return prisma.player.findUnique({
44
+ async function findPlayerByUserEmail(email, include) {
45
+ const user = await prisma.user.findUnique({
46
46
  where: { email },
47
- include
47
+ include: { player: include ? { include } : true }
48
48
  });
49
+ return user?.player ?? null;
49
50
  }
50
51
  async function findPlayers(options = {}) {
51
52
  return prisma.player.findMany({
@@ -134,10 +135,7 @@ async function searchPlayers(query, limit = 20) {
134
135
  return findPlayers({
135
136
  take: limit,
136
137
  where: {
137
- OR: [
138
- { name: { contains: query, mode: "insensitive" } },
139
- { email: { contains: query, mode: "insensitive" } }
140
- ]
138
+ name: { contains: query, mode: "insensitive" }
141
139
  }
142
140
  });
143
141
  }
@@ -460,8 +458,7 @@ async function createUserWithPlayer(userData, playerData) {
460
458
  return prisma.$transaction(async (tx) => {
461
459
  const player = await tx.player.create({
462
460
  data: {
463
- name: playerData.name,
464
- email: playerData.email
461
+ name: playerData.name
465
462
  }
466
463
  });
467
464
  const user = await tx.user.create({
@@ -602,9 +599,9 @@ export {
602
599
  deleteTournament,
603
600
  deleteUser,
604
601
  disconnect,
605
- findPlayerByEmail,
606
602
  findPlayerByExternalId,
607
603
  findPlayerById,
604
+ findPlayerByUserEmail,
608
605
  findPlayers,
609
606
  findResultById,
610
607
  findResultByPlayerAndTournament,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opprs/db-prisma",
3
- "version": "1.2.0",
3
+ "version": "2.0.0",
4
4
  "description": "Database backend for OPPR (Open Pinball Player Ranking System) using Prisma and PostgreSQL",
5
5
  "keywords": [
6
6
  "oppr",
@@ -80,6 +80,7 @@
80
80
  "db:migrate:prod": "prisma migrate deploy",
81
81
  "db:studio": "prisma studio",
82
82
  "db:seed": "tsx prisma/seed.ts",
83
- "db:reset": "prisma migrate reset"
83
+ "db:reset": "prisma migrate reset",
84
+ "db:make-admin": "tsx scripts/make-admin.ts"
84
85
  }
85
86
  }
@@ -19,7 +19,6 @@ model Player {
19
19
  // Player identification
20
20
  externalId String? @unique // External ID from OPPR or other systems
21
21
  name String?
22
- email String? @unique
23
22
 
24
23
  // OPPR Rating fields
25
24
  rating Float @default(1500) // Glicko rating
@@ -36,7 +35,6 @@ model Player {
36
35
  tournamentResults TournamentResult[]
37
36
  user User?
38
37
 
39
- @@index([email])
40
38
  @@index([externalId])
41
39
  @@index([rating])
42
40
  @@index([ranking])