|
|
|
// This is your Prisma schema file,
|
|
|
|
// learn more about it in the docs: https://pris.ly/d/prisma-schema
|
|
|
|
|
|
|
|
datasource db {
|
|
|
|
provider = "postgresql"
|
|
|
|
url = env("DATABASE_URL")
|
|
|
|
}
|
|
|
|
|
|
|
|
generator client {
|
|
|
|
provider = "prisma-client-js"
|
|
|
|
binaryTargets = ["debian-openssl-1.1.x", "native"]
|
|
|
|
previewFeatures = ["orderByRelation", "selectRelationCount"]
|
|
|
|
}
|
|
|
|
|
|
|
|
model Access {
|
|
|
|
createdAt DateTime @default(now())
|
|
|
|
GranteeUser User @relation(fields: [granteeUserId], name: "accessGet", references: [id])
|
|
|
|
granteeUserId String
|
|
|
|
id String @default(uuid())
|
|
|
|
updatedAt DateTime @updatedAt
|
|
|
|
User User @relation(fields: [userId], name: "accessGive", references: [id])
|
|
|
|
userId String
|
|
|
|
|
|
|
|
@@id([id, userId])
|
|
|
|
}
|
|
|
|
|
|
|
|
model Account {
|
|
|
|
accountType AccountType @default(SECURITIES)
|
|
|
|
createdAt DateTime @default(now())
|
|
|
|
id String @default(uuid())
|
|
|
|
isDefault Boolean @default(false)
|
|
|
|
name String?
|
|
|
|
Order Order[]
|
|
|
|
Platform Platform? @relation(fields: [platformId], references: [id])
|
|
|
|
platformId String?
|
|
|
|
updatedAt DateTime @updatedAt
|
|
|
|
User User @relation(fields: [userId], references: [id])
|
|
|
|
userId String
|
|
|
|
|
|
|
|
@@id([id, userId])
|
|
|
|
}
|
|
|
|
|
|
|
|
model Analytics {
|
|
|
|
activityCount Int @default(0)
|
|
|
|
updatedAt DateTime @updatedAt
|
|
|
|
User User @relation(fields: [userId], references: [id])
|
|
|
|
userId String @id
|
|
|
|
}
|
|
|
|
|
|
|
|
model MarketData {
|
|
|
|
createdAt DateTime @default(now())
|
|
|
|
date DateTime
|
|
|
|
id String @default(uuid())
|
|
|
|
symbol String
|
|
|
|
marketPrice Float
|
|
|
|
|
|
|
|
@@unique([date, symbol])
|
|
|
|
@@index(fields: [symbol])
|
|
|
|
}
|
|
|
|
|
|
|
|
model Order {
|
|
|
|
Account Account? @relation(fields: [accountId, accountUserId], references: [id, userId])
|
|
|
|
accountId String?
|
|
|
|
accountUserId String?
|
|
|
|
createdAt DateTime @default(now())
|
|
|
|
currency Currency
|
|
|
|
date DateTime
|
|
|
|
fee Float
|
|
|
|
id String @default(uuid())
|
|
|
|
Platform Platform? @relation(fields: [platformId], references: [id])
|
|
|
|
platformId String?
|
|
|
|
quantity Float
|
|
|
|
symbol String
|
|
|
|
type Type
|
|
|
|
unitPrice Float
|
|
|
|
updatedAt DateTime @updatedAt
|
|
|
|
User User @relation(fields: [userId], references: [id])
|
|
|
|
userId String
|
|
|
|
|
|
|
|
@@id([id, userId])
|
|
|
|
}
|
|
|
|
|
|
|
|
model Platform {
|
|
|
|
Account Account[]
|
|
|
|
id String @id @default(uuid())
|
|
|
|
name String?
|
|
|
|
Order Order[]
|
|
|
|
url String @unique
|
|
|
|
}
|
|
|
|
|
|
|
|
model Property {
|
|
|
|
key String @id
|
|
|
|
value String
|
|
|
|
}
|
|
|
|
|
|
|
|
model Settings {
|
|
|
|
currency Currency
|
|
|
|
updatedAt DateTime @updatedAt
|
|
|
|
User User @relation(fields: [userId], references: [id])
|
|
|
|
userId String @id
|
|
|
|
}
|
|
|
|
|
|
|
|
model User {
|
|
|
|
Access Access[] @relation("accessGet")
|
|
|
|
AccessGive Access[] @relation(name: "accessGive")
|
|
|
|
accessToken String?
|
|
|
|
Account Account[]
|
|
|
|
alias String?
|
|
|
|
Analytics Analytics?
|
|
|
|
createdAt DateTime @default(now())
|
|
|
|
id String @id @default(uuid())
|
|
|
|
Order Order[]
|
|
|
|
provider Provider?
|
|
|
|
role Role @default(USER)
|
|
|
|
Settings Settings?
|
|
|
|
thirdPartyId String?
|
|
|
|
updatedAt DateTime @updatedAt
|
|
|
|
}
|
|
|
|
|
|
|
|
enum AccountType {
|
|
|
|
SECURITIES
|
|
|
|
}
|
|
|
|
|
|
|
|
enum Currency {
|
|
|
|
CHF
|
|
|
|
EUR
|
|
|
|
GBP
|
|
|
|
USD
|
|
|
|
}
|
|
|
|
|
|
|
|
enum Provider {
|
|
|
|
ANONYMOUS
|
|
|
|
GOOGLE
|
|
|
|
}
|
|
|
|
|
|
|
|
enum Role {
|
|
|
|
ADMIN
|
|
|
|
DEMO
|
|
|
|
USER
|
|
|
|
}
|
|
|
|
|
|
|
|
enum Type {
|
|
|
|
BUY
|
|
|
|
SELL
|
|
|
|
}
|