96 lines
2.8 KiB
Plaintext
96 lines
2.8 KiB
Plaintext
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "postgresql"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
model Player {
|
|
id Int @id @default(autoincrement())
|
|
name String @unique
|
|
password String
|
|
money Int @default(0)
|
|
actions ChallengeAction[]
|
|
geolocations Geolocation[]
|
|
moneyUpdates MoneyUpdate[]
|
|
trips TrainTrip[]
|
|
runningGame Game?
|
|
}
|
|
|
|
model Game {
|
|
id Int @id @default(autoincrement())
|
|
started Boolean @default(false)
|
|
currentRunner Player? @relation(fields: [currentRunnerId], references: [id])
|
|
currentRunnerId Int? @unique
|
|
}
|
|
|
|
model Geolocation {
|
|
id Int @id @default(autoincrement())
|
|
player Player @relation(fields: [playerId], references: [id])
|
|
playerId Int
|
|
longitude Float
|
|
latitude Float
|
|
speed Float
|
|
accuracy Float
|
|
altitude Float
|
|
altitudeAccuracy Float
|
|
timestamp DateTime @db.Timestamptz(3)
|
|
}
|
|
|
|
model Challenge {
|
|
id Int @id @default(autoincrement())
|
|
title String @unique
|
|
description String
|
|
reward Int
|
|
action ChallengeAction?
|
|
}
|
|
|
|
model ChallengeAction {
|
|
id Int @id @default(autoincrement())
|
|
player Player @relation(fields: [playerId], references: [id])
|
|
playerId Int
|
|
challenge Challenge @relation(fields: [challengeId], references: [id])
|
|
challengeId Int @unique
|
|
active Boolean @default(false)
|
|
success Boolean @default(false)
|
|
start DateTime @default(now()) @db.Timestamptz(3)
|
|
end DateTime? @db.Timestamptz(3)
|
|
penaltyStart DateTime? @db.Timestamptz(3)
|
|
penaltyEnd DateTime? @db.Timestamptz(3)
|
|
moneyUpdate MoneyUpdate?
|
|
}
|
|
|
|
model TrainTrip {
|
|
id String @id
|
|
player Player @relation(fields: [playerId], references: [id])
|
|
playerId Int
|
|
distance Float
|
|
from String
|
|
to String
|
|
departureTime DateTime @db.Timestamptz(3)
|
|
arrivalTime DateTime @db.Timestamptz(3)
|
|
infoJson Json
|
|
moneyUpdate MoneyUpdate?
|
|
}
|
|
|
|
model MoneyUpdate {
|
|
id Int @id @default(autoincrement())
|
|
player Player @relation(fields: [playerId], references: [id])
|
|
playerId Int
|
|
amount Int
|
|
reason MoneyUpdateType
|
|
action ChallengeAction? @relation(fields: [actionId], references: [id])
|
|
actionId Int? @unique
|
|
trip TrainTrip? @relation(fields: [tripId], references: [id])
|
|
tripId String? @unique
|
|
timestamp DateTime @default(now()) @db.Timestamptz(3)
|
|
}
|
|
|
|
enum MoneyUpdateType {
|
|
START
|
|
WIN_CHALLENGE
|
|
BUY_TRAIN
|
|
}
|