Set up Prisma models for Crypto, CryptoHistory, Offer, PromoCode, Role, Trade, User, and UserHasCrypto. This includes defining fields, relationships, and default values for each model, and configuring PostgreSQL as the database provider.
106 lines
2.9 KiB
Plaintext
106 lines
2.9 KiB
Plaintext
datasource db {
|
|
provider = "postgresql"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
model Crypto {
|
|
id String @id @default(uuid())
|
|
name String @unique
|
|
value Float
|
|
image String
|
|
quantity Float @default(1000)
|
|
created_at DateTime @default(now())
|
|
updated_at DateTime @default(now()) @updatedAt
|
|
UserHasCrypto UserHasCrypto[]
|
|
Trade Trade[]
|
|
Offer Offer[]
|
|
CryptoHistory CryptoHistory[]
|
|
}
|
|
|
|
model CryptoHistory {
|
|
id String @id @default(uuid())
|
|
id_crypto String
|
|
value Float
|
|
created_at DateTime @default(now())
|
|
updated_at DateTime @default(now()) @updatedAt
|
|
Crypto Crypto @relation(fields: [id_crypto], references: [id])
|
|
}
|
|
|
|
model Offer {
|
|
id String @id @default(uuid())
|
|
id_crypto String
|
|
id_user String
|
|
amount Float
|
|
created_at DateTime @default(now())
|
|
updated_at DateTime @default(now()) @updatedAt
|
|
|
|
Crypto Crypto @relation(fields: [id_crypto], references: [id])
|
|
User User @relation(fields: [id_user], references: [id])
|
|
}
|
|
|
|
model PromoCode {
|
|
id String @id @default(uuid())
|
|
name String
|
|
value Int
|
|
created_at DateTime @default(now())
|
|
updated_at DateTime @default(now()) @updatedAt
|
|
}
|
|
|
|
model Role {
|
|
id String @id @default(uuid())
|
|
name String
|
|
created_at DateTime @default(now())
|
|
updated_at DateTime @default(now()) @updatedAt
|
|
|
|
User User[]
|
|
}
|
|
|
|
model Trade {
|
|
id String @id @default(uuid())
|
|
id_giver String
|
|
id_receiver String
|
|
id_crypto String
|
|
amount_traded Float
|
|
created_at DateTime @default(now())
|
|
updated_at DateTime @default(now()) @updatedAt
|
|
|
|
Giver User @relation("Giver", fields: [id_giver], references: [id])
|
|
Receiver User @relation("Receiver", fields: [id_receiver], references: [id])
|
|
Crypto Crypto @relation(fields: [id_crypto], references: [id])
|
|
}
|
|
|
|
model User {
|
|
id String @id @default(uuid())
|
|
firstName String
|
|
lastName String
|
|
pseudo String
|
|
hash String
|
|
email String @unique
|
|
roleId String
|
|
isActive Boolean
|
|
dollarAvailables Float
|
|
created_at DateTime @default(now())
|
|
updated_at DateTime @default(now()) @updatedAt
|
|
|
|
Role Role @relation(fields: [roleId], references: [id])
|
|
UserHasCrypto UserHasCrypto[]
|
|
TradeGiven Trade[] @relation("Giver")
|
|
TradeReceived Trade[] @relation("Receiver")
|
|
Offer Offer[]
|
|
}
|
|
|
|
model UserHasCrypto {
|
|
id String @id @default(uuid())
|
|
id_user String
|
|
id_crypto String
|
|
amount Int
|
|
createdAt DateTime @default(now())
|
|
updated_at DateTime @default(now()) @updatedAt
|
|
User User @relation(fields: [id_user], references: [id])
|
|
Crypto Crypto @relation(fields: [id_crypto], references: [id])
|
|
}
|