From d73aecd2abe31ef5871098fc765515afd9a8f64d Mon Sep 17 00:00:00 2001 From: Mathis Date: Fri, 8 Nov 2024 09:35:32 +0100 Subject: [PATCH] Add initial Prisma schema 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. --- prisma/schema.prisma | 105 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 prisma/schema.prisma 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]) +}