192 lines
4.9 KiB
Plaintext
192 lines
4.9 KiB
Plaintext
generator client {
|
|
provider = "prisma-client"
|
|
output = "../src/generated/prisma"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "postgresql"
|
|
}
|
|
|
|
model User {
|
|
id String @id
|
|
name String
|
|
email String @unique
|
|
emailVerified Boolean @default(false)
|
|
image String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
sessions Session[]
|
|
accounts Account[]
|
|
|
|
@@map("user")
|
|
}
|
|
|
|
model Session {
|
|
id String @id
|
|
expiresAt DateTime
|
|
token String @unique
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
ipAddress String?
|
|
userAgent String?
|
|
userId String
|
|
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
|
|
@@index([userId])
|
|
@@map("session")
|
|
}
|
|
|
|
model Account {
|
|
id String @id
|
|
accountId String
|
|
providerId String
|
|
userId String
|
|
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
accessToken String?
|
|
refreshToken String?
|
|
idToken String?
|
|
accessTokenExpiresAt DateTime?
|
|
refreshTokenExpiresAt DateTime?
|
|
scope String?
|
|
password String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
@@index([userId])
|
|
@@map("account")
|
|
}
|
|
|
|
model Verification {
|
|
id String @id
|
|
identifier String
|
|
value String
|
|
expiresAt DateTime
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
@@index([identifier])
|
|
@@map("verification")
|
|
}
|
|
|
|
model TelegramChat {
|
|
id String @id @default(cuid())
|
|
chatId BigInt? @unique
|
|
code String @unique
|
|
validatedAt DateTime?
|
|
createdAt DateTime @default(now())
|
|
|
|
@@map("telegram_chats")
|
|
}
|
|
|
|
model TelegramDailyMaxNotification {
|
|
id String @id @default(cuid())
|
|
date DateTime
|
|
quoteType QuoteType
|
|
maxValue Decimal @db.Money
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
@@unique([date, quoteType])
|
|
@@map("telegram_daily_max_notifications")
|
|
}
|
|
|
|
enum QuoteType {
|
|
BLUE
|
|
BNA
|
|
BELO
|
|
}
|
|
|
|
model Quote {
|
|
id Int @id @default(autoincrement())
|
|
timeStamp DateTime @default(now())
|
|
buy Decimal @db.Money
|
|
sell Decimal @db.Money
|
|
type QuoteType
|
|
difference Decimal @default(0) @db.Decimal(9, 2)
|
|
percentage Decimal @default(0) @db.Decimal(9, 2)
|
|
previousDayDifference Decimal @default(0) @db.Decimal(9, 2)
|
|
previousDayPercentage Decimal @default(0) @db.Decimal(9, 2)
|
|
|
|
@@map("quotes")
|
|
}
|
|
|
|
|
|
model QuoteHistory {
|
|
id Int @id @default(autoincrement())
|
|
timeStamp DateTime @default(now())
|
|
buy Decimal @db.Money
|
|
sell Decimal @db.Money
|
|
type QuoteType
|
|
|
|
@@map("quotes_history")
|
|
}
|
|
|
|
// Expenses
|
|
|
|
enum PaymentStatus {
|
|
PENDING
|
|
PAYED
|
|
}
|
|
|
|
model Wallet {
|
|
id Int @id @default(autoincrement())
|
|
name String @db.VarChar(100)
|
|
currency String @db.VarChar(10)
|
|
balance Decimal @db.Decimal(14, 4)
|
|
isDefault Boolean @default(false)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
movements WalletMovement[]
|
|
|
|
@@map("wallets")
|
|
}
|
|
|
|
model WalletMovement {
|
|
id Int @id @default(autoincrement())
|
|
walletId Int
|
|
wallet Wallet @relation(fields: [walletId], references: [id])
|
|
type String @db.VarChar(20)
|
|
amount Decimal @db.Decimal(14, 4)
|
|
description String? @db.VarChar(255)
|
|
referenceWalletId Int?
|
|
transferGroupId String? @db.Uuid
|
|
createdAt DateTime @default(now())
|
|
|
|
@@index([walletId])
|
|
@@index([transferGroupId])
|
|
@@map("wallet_movements")
|
|
}
|
|
|
|
model PeriodicExpense {
|
|
id Int @id @default(autoincrement())
|
|
description String @db.VarChar(50)
|
|
defaultDueDay Int
|
|
defaultAmount Decimal @db.Money
|
|
periods Int[]
|
|
isDeleted Boolean @default(false)
|
|
createdAt DateTime @default(now())
|
|
|
|
expenses Expense[]
|
|
|
|
@@map("periodic_expenses")
|
|
}
|
|
|
|
model Expense {
|
|
id Int @id @default(autoincrement())
|
|
description String @db.VarChar(50)
|
|
periodicExpense PeriodicExpense? @relation(fields: [periodicExpenseId], references: [id])
|
|
periodicExpenseId Int?
|
|
year Int
|
|
month Int
|
|
amount Decimal @db.Money
|
|
amountPayed Decimal? @db.Money
|
|
beloPrice Decimal? @db.Money
|
|
usdcEquivalent Decimal? @db.Decimal(12, 6)
|
|
status PaymentStatus @default(PENDING)
|
|
dueDate DateTime
|
|
paymentDate DateTime?
|
|
|
|
@@map("expenses")
|
|
} |