diff --git a/prisma/schema.prisma b/prisma/schema.prisma new file mode 100644 index 0000000..363ff95 --- /dev/null +++ b/prisma/schema.prisma @@ -0,0 +1,105 @@ +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]) +}