// 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) balance Float @default(0) createdAt DateTime @default(now()) currency Currency @default(USD) 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 AuthDevice { createdAt DateTime @default(now()) credentialId Bytes credentialPublicKey Bytes counter Int id String @id @default(uuid()) updatedAt DateTime @updatedAt User User @relation(fields: [userId], references: [id]) userId String } 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 dataSource DataSource @default(YAHOO) date DateTime fee Float id String @default(uuid()) isDraft Boolean @default(false) quantity Float symbol String SymbolProfile SymbolProfile? @relation(fields: [symbolProfileId], references: [id]) symbolProfileId 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? url String @unique } model Property { key String @id value String } model Settings { currency Currency? settings Json? updatedAt DateTime @updatedAt viewMode ViewMode? User User @relation(fields: [userId], references: [id]) userId String @id } model SymbolProfile { assetClass AssetClass? assetSubClass AssetSubClass? countries Json? createdAt DateTime @default(now()) currency Currency? dataSource DataSource id String @id @default(uuid()) name String? Order Order[] updatedAt DateTime @updatedAt sectors Json? symbol String @@unique([dataSource, symbol]) } model Subscription { createdAt DateTime @default(now()) expiresAt DateTime id String @default(uuid()) updatedAt DateTime @updatedAt User User @relation(fields: [userId], references: [id]) userId String @@id([id, userId]) } model User { Access Access[] @relation("accessGet") AccessGive Access[] @relation(name: "accessGive") accessToken String? Account Account[] alias String? Analytics Analytics? authChallenge String? AuthDevice AuthDevice[] createdAt DateTime @default(now()) id String @id @default(uuid()) Order Order[] provider Provider? role Role @default(USER) Settings Settings? Subscription Subscription[] thirdPartyId String? updatedAt DateTime @updatedAt } enum AccountType { CASH SECURITIES } enum AssetClass { CASH COMMODITY EQUITY } enum AssetSubClass { CRYPTOCURRENCY ETF STOCK } enum Currency { CHF EUR GBP USD } enum DataSource { ALPHA_VANTAGE GHOSTFOLIO RAKUTEN YAHOO } enum ViewMode { DEFAULT ZEN } enum Provider { ANONYMOUS GOOGLE } enum Role { ADMIN DEMO USER } enum Type { BUY SELL }