Files
finance-app/prisma/schema.prisma
T
siddharthd d455738732 feat(finance): Phase 6 — Budget & Analytics
Add monthly budgets per category with spend-vs-budget dashboard and 6-month trend table.
Includes upsert budget API, monthly analytics endpoint, inline budget editing, and route auth fixes.
2026-03-08 16:57:33 +11:00

80 lines
2.3 KiB
Plaintext

generator client {
provider = "prisma-client"
output = "../src/generated/prisma"
}
datasource db {
provider = "postgresql"
}
model transaction_overrides {
id Int @id @default(autoincrement())
transaction_id Int @unique
merchant_normalized String?
category_override String?
notes String?
updated_at DateTime @default(now()) @updatedAt
}
model participants {
id Int @id @default(autoincrement())
name String @unique
email String? @unique
created_at DateTime @default(now())
splits transaction_splits[]
account_owner_mappings account_owner_mappings[]
}
model account_owner_mappings {
id Int @id @default(autoincrement())
bank_name String
account_number String
owner_id Int
created_at DateTime @default(now())
owner participants @relation(fields: [owner_id], references: [id])
@@unique([bank_name, account_number])
}
model transaction_splits {
id Int @id @default(autoincrement())
transaction_id Int
participant_id Int
share_percent Decimal @db.Decimal(5, 2)
settled Boolean @default(false)
settled_at DateTime?
created_at DateTime @default(now())
participant participants @relation(fields: [participant_id], references: [id])
@@unique([transaction_id, participant_id])
}
model tags {
id Int @id @default(autoincrement())
name String @unique
color String @default("#6366f1")
created_at DateTime @default(now())
transaction_tags transaction_tags[]
}
model transaction_tags {
transaction_id Int
tag_id Int
created_at DateTime @default(now())
tag tags @relation(fields: [tag_id], references: [id], onDelete: Cascade)
@@id([transaction_id, tag_id])
}
model budgets {
id Int @id @default(autoincrement())
owner_id Int
category String
month DateTime @db.Date
amount_limit Decimal @db.Decimal(10, 2)
created_at DateTime @default(now())
updated_at DateTime @default(now()) @updatedAt
@@unique([owner_id, category, month])
}