nice update

This commit is contained in:
gpatruno
2026-07-16 20:23:58 +02:00
parent a0d7163464
commit 9106c8b873
47 changed files with 5183 additions and 1732 deletions
+79 -11
View File
@@ -8,14 +8,23 @@ datasource db {
}
model User {
id Int @id @default(autoincrement())
username String @unique
passwordHash String
balance Int @default(0)
role String @default("user")
createdAt DateTime @default(now())
id Int @id @default(autoincrement())
username String @unique
passwordHash String
balance Int @default(0)
osuBalance Int @default(0)
lastAdAt DateTime?
role String @default("user")
avatarUrl String @default("")
bio String @default("")
createdAt DateTime @default(now())
inventory InventoryItem[]
transactions Transaction[]
jackpotWins JackpotRound[] @relation("JackpotWinner")
jackpotDeposits JackpotDeposit[]
duelRoomsCreated DuelRoom[] @relation("DuelCreator")
duelWins DuelRoom[] @relation("DuelWinner")
duelDeposits DuelDeposit[]
}
model Case {
@@ -51,12 +60,15 @@ model CaseItem {
}
model InventoryItem {
id Int @id @default(autoincrement())
userId Int
itemId Int
id Int @id @default(autoincrement())
userId Int
itemId Int
locked Boolean @default(false)
obtainedAt DateTime @default(now())
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
item Item @relation(fields: [itemId], references: [id], onDelete: Cascade)
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
item Item @relation(fields: [itemId], references: [id], onDelete: Cascade)
jackpotDeposits JackpotDeposit[]
duelDeposits DuelDeposit[]
}
model Transaction {
@@ -68,3 +80,59 @@ model Transaction {
createdAt DateTime @default(now())
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
}
model JackpotRound {
id Int @id @default(autoincrement())
status String @default("open")
endsAt DateTime
winnerUserId Int?
createdAt DateTime @default(now())
resolvedAt DateTime?
winner User? @relation("JackpotWinner", fields: [winnerUserId], references: [id])
deposits JackpotDeposit[]
}
model JackpotDeposit {
id Int @id @default(autoincrement())
roundId Int
userId Int
inventoryItemId Int
valueCents Int
createdAt DateTime @default(now())
round JackpotRound @relation(fields: [roundId], references: [id], onDelete: Cascade)
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
inventoryItem InventoryItem @relation(fields: [inventoryItemId], references: [id], onDelete: Cascade)
@@unique([roundId, inventoryItemId])
}
model DuelRoom {
id Int @id @default(autoincrement())
creatorId Int
status String @default("open")
maxPlayers Int
maxItemsPerPlayer Int
minItemValue Int @default(0)
minPlayersToStart Int @default(2)
winnerUserId Int?
createdAt DateTime @default(now())
startedAt DateTime?
resolvedAt DateTime?
creator User @relation("DuelCreator", fields: [creatorId], references: [id], onDelete: Cascade)
winner User? @relation("DuelWinner", fields: [winnerUserId], references: [id])
deposits DuelDeposit[]
}
model DuelDeposit {
id Int @id @default(autoincrement())
roomId Int
userId Int
inventoryItemId Int
valueCents Int
createdAt DateTime @default(now())
room DuelRoom @relation(fields: [roomId], references: [id], onDelete: Cascade)
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
inventoryItem InventoryItem @relation(fields: [inventoryItemId], references: [id], onDelete: Cascade)
@@unique([roomId, inventoryItemId])
}
+11 -1
View File
@@ -49,6 +49,7 @@ async function main() {
username: 'player',
passwordHash: userHash,
balance: 10000,
osuBalance: 100,
role: 'user',
},
});
@@ -62,6 +63,15 @@ async function main() {
},
});
await prisma.transaction.create({
data: {
userId: demo.id,
type: 'seed_osu',
amount: 100,
meta: JSON.stringify({ reason: 'demo_osu' }),
},
});
const items = [];
for (const data of ITEMS) {
items.push(await prisma.item.create({ data }));
@@ -135,7 +145,7 @@ async function main() {
console.log('Seed complete.');
console.log(' admin / admin123');
console.log(' player / player123 (balance: 100.00)');
console.log(' player / player123 (balance: 100.00, osu: 100)');
}
main()