Changing external id to Int, remove not needed columns, add expansion information, and update seeder.

This commit is contained in:
Bradley Shellnut 2023-10-14 22:04:34 +13:00
parent 75aa901a24
commit 5d9af200b7
2 changed files with 94 additions and 111 deletions

View file

@ -13,8 +13,8 @@ datasource db {
} }
model Role { model Role {
id String @id @default(cuid()) id String @id @default(cuid())
name String @unique name String @unique
userRoles UserRole[] userRoles UserRole[]
@@map("roles") @@map("roles")
@ -22,7 +22,7 @@ model Role {
model UserRole { model UserRole {
id String @id @default(cuid()) id String @id @default(cuid())
user User @relation(fields: [user_id], references: [id]) user User @relation(fields: [user_id], references: [id])
user_id String user_id String
role Role @relation(fields: [role_id], references: [id]) role Role @relation(fields: [role_id], references: [id])
role_id String role_id String
@ -62,7 +62,7 @@ model Session {
user_id String user_id String
active_expires BigInt active_expires BigInt
idle_expires BigInt idle_expires BigInt
user User @relation(references: [id], fields: [user_id], onDelete: Cascade) user User @relation(references: [id], fields: [user_id], onDelete: Cascade)
@@index([user_id]) @@index([user_id])
@@map("sessions") @@map("sessions")
@ -72,7 +72,7 @@ model Key {
id String @id @unique id String @id @unique
hashed_password String? hashed_password String?
user_id String user_id String
user User @relation(references: [id], fields: [user_id], onDelete: Cascade) user User @relation(references: [id], fields: [user_id], onDelete: Cascade)
@@index([user_id]) @@index([user_id])
@@map("keys") @@map("keys")
@ -89,11 +89,11 @@ model Collection {
} }
model CollectionItem { model CollectionItem {
id String @id @default(cuid()) id String @id @default(cuid())
collection_id String collection_id String
collection Collection @relation(references: [id], fields: [collection_id], onDelete: Cascade) collection Collection @relation(references: [id], fields: [collection_id], onDelete: Cascade)
game_id String @unique game_id String @unique
game Game @relation(references: [id], fields: [game_id]) game Game @relation(references: [id], fields: [game_id])
times_played Int times_played Int
@@index([game_id, collection_id]) @@index([game_id, collection_id])
@ -103,9 +103,9 @@ model CollectionItem {
} }
model Wishlist { model Wishlist {
id String @id @default(cuid()) id String @id @default(cuid())
user_id String @unique user_id String @unique
user User @relation(references: [id], fields: [user_id]) user User @relation(references: [id], fields: [user_id])
items WishlistItem[] items WishlistItem[]
@@index([user_id]) @@index([user_id])
@ -113,13 +113,13 @@ model Wishlist {
} }
model WishlistItem { model WishlistItem {
id String @id @default(cuid()) id String @id @default(cuid())
wishlist_id String wishlist_id String
wishlist Wishlist @relation(references: [id], fields: [wishlist_id], onDelete: Cascade) wishlist Wishlist @relation(references: [id], fields: [wishlist_id], onDelete: Cascade)
game_id String @unique game_id String @unique
game Game @relation(references: [id], fields: [game_id]) game Game @relation(references: [id], fields: [game_id])
created_at DateTime @default(now()) @db.Timestamp(6) created_at DateTime @default(now()) @db.Timestamp(6)
updated_at DateTime @updatedAt @db.Timestamp(6) updated_at DateTime @updatedAt @db.Timestamp(6)
@@index([game_id, wishlist_id]) @@index([game_id, wishlist_id])
@@index([game_id]) @@index([game_id])
@ -128,10 +128,10 @@ model WishlistItem {
} }
model List { model List {
id String @id @default(cuid()) id String @id @default(cuid())
name String name String
user_id String @unique user_id String @unique
user User @relation(references: [id], fields: [user_id]) user User @relation(references: [id], fields: [user_id])
items ListItem[] items ListItem[]
@@index([user_id]) @@index([user_id])
@ -139,13 +139,13 @@ model List {
} }
model ListItem { model ListItem {
id String @id @default(cuid()) id String @id @default(cuid())
list_id String list_id String
list List @relation(references: [id], fields: [list_id], onDelete: Cascade) list List @relation(references: [id], fields: [list_id], onDelete: Cascade)
game_id String @unique game_id String @unique
game Game @relation(references: [id], fields: [game_id]) game Game @relation(references: [id], fields: [game_id])
created_at DateTime @default(now()) @db.Timestamp(6) created_at DateTime @default(now()) @db.Timestamp(6)
updated_at DateTime @updatedAt @db.Timestamp(6) updated_at DateTime @updatedAt @db.Timestamp(6)
@@index([game_id, list_id]) @@index([game_id, list_id])
@@index([game_id]) @@index([game_id])
@ -154,12 +154,11 @@ model ListItem {
} }
model Game { model Game {
id String @id @default(cuid()) id String @id @default(cuid())
name String name String
slug String slug String
description String? @db.LongText description String? @db.LongText
description_preview String? @db.LongText year_published Int? @db.Year
year_published Int? @db.Year
min_players Int? min_players Int?
max_players Int? max_players Int?
playtime Int? playtime Int?
@ -170,11 +169,6 @@ model Game {
thumb_url String? thumb_url String?
url String? url String?
rules_url String? rules_url String?
is_expansion Boolean @default(false)
primary_publisher_id String?
primary_publisher Publisher? @relation("PrimaryPublishers", references: [id], fields: [primary_publisher_id])
primary_designer_id String?
primary_designer Designer? @relation("PrimaryDesigners", references: [id], fields: [primary_designer_id])
categories Category[] categories Category[]
mechanics Mechanic[] mechanics Mechanic[]
designers Designer[] designers Designer[]
@ -185,23 +179,24 @@ model Game {
collection_items CollectionItem[] collection_items CollectionItem[]
wishlist_items WishlistItem[] wishlist_items WishlistItem[]
list_items ListItem[] list_items ListItem[]
external_id String @unique external_id Int @unique
created_at DateTime @default(now()) @db.Timestamp(6) last_sync_at DateTime? @db.Timestamp(6)
updated_at DateTime @updatedAt @db.Timestamp(6) created_at DateTime @default(now()) @db.Timestamp(6)
updated_at DateTime @updatedAt @db.Timestamp(6)
@@fulltext([name]) @@fulltext([name])
@@index([primary_publisher_id]) @@fulltext([slug])
@@map("games") @@map("games")
} }
model GameName { model GameName {
id String @id @default(cuid()) id String @id @default(cuid())
name String name String
slug String slug String
game_id String game_id String
game Game @relation(references: [id], fields: [game_id]) game Game @relation(references: [id], fields: [game_id])
created_at DateTime @default(now()) @db.Timestamp(6) created_at DateTime @default(now()) @db.Timestamp(6)
updated_at DateTime @updatedAt @db.Timestamp(6) updated_at DateTime @updatedAt @db.Timestamp(6)
@@index([game_id]) @@index([game_id])
@@map("game_names") @@map("game_names")
@ -211,9 +206,8 @@ model Publisher {
id String @id @default(cuid()) id String @id @default(cuid())
name String name String
slug String slug String
external_id String @unique external_id Int @unique
games Game[] games Game[]
primary_publisher Game[] @relation("PrimaryPublishers")
created_at DateTime @default(now()) @db.Timestamp(6) created_at DateTime @default(now()) @db.Timestamp(6)
updated_at DateTime @updatedAt @db.Timestamp(6) updated_at DateTime @updatedAt @db.Timestamp(6)
@ -222,26 +216,26 @@ model Publisher {
} }
model Category { model Category {
id String @id @default(cuid()) id String @id @default(cuid())
name String name String
slug String slug String
games Game[] games Game[]
external_id String @unique external_id Int @unique
created_at DateTime @default(now()) @db.Timestamp(6) created_at DateTime @default(now()) @db.Timestamp(6)
updated_at DateTime @updatedAt @db.Timestamp(6) updated_at DateTime @updatedAt @db.Timestamp(6)
@@fulltext([name]) @@fulltext([name])
@@map("categories") @@map("categories")
} }
model Mechanic { model Mechanic {
id String @id @default(cuid()) id String @id @default(cuid())
name String name String
slug String slug String
games Game[] games Game[]
external_id String @unique external_id Int @unique
created_at DateTime @default(now()) @db.Timestamp(6) created_at DateTime @default(now()) @db.Timestamp(6)
updated_at DateTime @updatedAt @db.Timestamp(6) updated_at DateTime @updatedAt @db.Timestamp(6)
@@fulltext([name]) @@fulltext([name])
@@map("mechanics") @@map("mechanics")
@ -251,9 +245,8 @@ model Designer {
id String @id @default(cuid()) id String @id @default(cuid())
name String name String
slug String slug String
external_id String @unique external_id Int @unique
games Game[] games Game[]
primary_designer Game[] @relation("PrimaryDesigners")
created_at DateTime @default(now()) @db.Timestamp(6) created_at DateTime @default(now()) @db.Timestamp(6)
updated_at DateTime @updatedAt @db.Timestamp(6) updated_at DateTime @updatedAt @db.Timestamp(6)
@ -265,6 +258,7 @@ model Artist {
id String @id @default(cuid()) id String @id @default(cuid())
name String name String
slug String @unique slug String @unique
external_id Int @unique
games Game[] games Game[]
created_at DateTime @default(now()) @db.Timestamp(6) created_at DateTime @default(now()) @db.Timestamp(6)
updated_at DateTime @updatedAt @db.Timestamp(6) updated_at DateTime @updatedAt @db.Timestamp(6)
@ -274,16 +268,14 @@ model Artist {
} }
model Expansion { model Expansion {
id String @id @default(cuid()) id String @id @default(cuid())
name String base_game Game @relation(fields: [base_game_id], references: [id])
year_published Int? base_game_id String
base_game Game? @relation(fields: [base_game_id], references: [id]) game_id String
base_game_id String? created_at DateTime @default(now()) @db.Timestamp(6)
external_id String @unique updated_at DateTime @updatedAt @db.Timestamp(6)
created_at DateTime @default(now()) @db.Timestamp(6)
updated_at DateTime @updatedAt @db.Timestamp(6)
@@fulltext([name])
@@index([base_game_id]) @@index([base_game_id])
@@index([game_id])
@@map("expansions") @@map("expansions")
} }

View file

@ -20,59 +20,50 @@ async function main() {
console.log('Roles already exist. No action taken.'); console.log('Roles already exist. No action taken.');
} }
console.log('Creating Mechanics ...'); if (!await prisma.publisher.findFirst({
const existingMechanics = await prisma.mechanic.findMany(); where: {
if (existingMechanics.length === 0) { external_id: 9999
for (const mechanic of mechanics.mechanics) {
await prisma.mechanic.create({
data: {
name: mechanic.name,
external_id: createId(),
slug: kebabCase(mechanic.name)
}
});
} }
console.log('Mechanics created.'); })) {
console.log('Publisher does not exist. Creating...');
await prisma.publisher.create({
data: {
name: 'Unknown',
slug: 'unknown',
external_id: 9999
}
});
} }
console.log('Creating Categories ...'); if (!await prisma.designer.findFirst({
const existingCategories = await prisma.category.findMany(); where: {
if (existingCategories.length === 0) { external_id: 9999
for (const category of categories.categories) {
await prisma.category.create({
data: {
name: category.name,
external_id: createId(),
slug: kebabCase(category.name)
}
});
} }
console.log('Categories created.'); })) {
console.log('Designer does not exist. Creating...');
await prisma.designer.create({
data: {
name: 'Unknown',
slug: 'unknown',
external_id: 9999
}
});
} }
await prisma.publisher.create({ if (!await prisma.artist.findFirst({
data: { where: {
name: 'Unknown', external_id: 9999
slug: 'unknown',
external_id: createId()
} }
}); })) {
console.log('Artist does not exist. Creating...');
await prisma.designer.create({ await prisma.artist.create({
data: { data: {
name: 'Unknown', name: 'Unknown',
slug: 'unknown', slug: 'unknown',
external_id: createId() external_id: 9999
} }
}); });
}
await prisma.artist.create({
data: {
name: 'Unknown',
slug: 'unknown'
}
});
// for (const p of userData) { // for (const p of userData) {
// const user = await prisma.user.create({ // const user = await prisma.user.create({
// data: { // data: {