115 lines
2.8 KiB
Plaintext
115 lines
2.8 KiB
Plaintext
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "sqlite"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
model User {
|
|
id String @id @default(cuid())
|
|
email String @unique
|
|
name String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
apiKeys ApiKey[]
|
|
trades Trade[]
|
|
journals TradingJournal[]
|
|
settings UserSettings?
|
|
|
|
@@map("users")
|
|
}
|
|
|
|
model ApiKey {
|
|
id String @id @default(cuid())
|
|
userId String
|
|
provider String
|
|
keyName String
|
|
encryptedKey String
|
|
isActive Boolean @default(true)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
|
|
@@unique([userId, provider, keyName])
|
|
@@map("api_keys")
|
|
}
|
|
|
|
model UserSettings {
|
|
id String @id @default(cuid())
|
|
userId String @unique
|
|
autoTrading Boolean @default(false)
|
|
tradingAmount Float @default(100)
|
|
riskPercentage Float @default(2)
|
|
maxDailyTrades Int @default(5)
|
|
enableNotifications Boolean @default(true)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
|
|
@@map("user_settings")
|
|
}
|
|
|
|
model Trade {
|
|
id String @id @default(cuid())
|
|
userId String
|
|
symbol String
|
|
side String
|
|
amount Float
|
|
price Float
|
|
status String @default("PENDING")
|
|
driftTxId String?
|
|
profit Float?
|
|
fees Float?
|
|
screenshotUrl String?
|
|
aiAnalysis String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
executedAt DateTime?
|
|
closedAt DateTime?
|
|
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
|
|
@@map("trades")
|
|
}
|
|
|
|
model TradingJournal {
|
|
id String @id @default(cuid())
|
|
userId String
|
|
date DateTime @default(now())
|
|
screenshotUrl String
|
|
aiAnalysis String
|
|
marketSentiment String?
|
|
keyLevels Json?
|
|
recommendation String
|
|
confidence Float
|
|
notes String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
|
|
@@map("trading_journals")
|
|
}
|
|
|
|
model Screenshot {
|
|
id String @id @default(cuid())
|
|
url String
|
|
filename String
|
|
fileSize Int
|
|
mimeType String
|
|
metadata Json?
|
|
createdAt DateTime @default(now())
|
|
|
|
@@map("screenshots")
|
|
}
|
|
|
|
model SystemLog {
|
|
id String @id @default(cuid())
|
|
level String
|
|
message String
|
|
metadata Json?
|
|
createdAt DateTime @default(now())
|
|
|
|
@@map("system_logs")
|
|
}
|