b8296b6e29
Add missing models: statements, transactions, expense_metadata, rule_apply_runs. Fixes pre-existing type errors on split_payments and my_share_percent which were caused by a stale generated client (regenerate with npx prisma generate).
196 lines
7.2 KiB
Plaintext
196 lines
7.2 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?
|
|
my_share_percent Decimal? @db.Decimal(5, 2)
|
|
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[]
|
|
payments_sent split_payments[] @relation("payments_from")
|
|
payments_received split_payments[] @relation("payments_to")
|
|
}
|
|
|
|
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 split_payments {
|
|
id Int @id @default(autoincrement())
|
|
from_participant_id Int
|
|
to_participant_id Int
|
|
amount Decimal @db.Decimal(10, 2)
|
|
payment_date DateTime @db.Date
|
|
notes String?
|
|
linked_transaction_id Int?
|
|
created_at DateTime @default(now())
|
|
from_participant participants @relation("payments_from", fields: [from_participant_id], references: [id])
|
|
to_participant participants @relation("payments_to", fields: [to_participant_id], references: [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 rules {
|
|
id Int @id @default(autoincrement())
|
|
owner_id Int
|
|
name String
|
|
conditions Json @default("[]")
|
|
actions Json @default("{}")
|
|
enabled Boolean @default(true)
|
|
priority Int @default(0)
|
|
created_at DateTime @default(now())
|
|
updated_at DateTime @default(now()) @updatedAt
|
|
}
|
|
|
|
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])
|
|
}
|
|
|
|
model statements {
|
|
id Int @id @default(autoincrement())
|
|
filename String
|
|
bank_name String?
|
|
card_name String?
|
|
account_type String?
|
|
account_number String
|
|
billing_start_date DateTime? @db.Date
|
|
billing_end_date DateTime? @db.Date
|
|
total_amount_due Decimal? @db.Decimal(12, 2)
|
|
minimum_amount_due Decimal? @db.Decimal(12, 2)
|
|
payment_due_date DateTime? @db.Date
|
|
event_created Boolean? @default(false)
|
|
tier_used String?
|
|
created_at DateTime? @default(now())
|
|
statement_type String @default("credit_card")
|
|
currency String? @default("AUD")
|
|
opening_balance Decimal? @db.Decimal(12, 2)
|
|
closing_balance Decimal? @db.Decimal(12, 2)
|
|
total_credits Decimal? @db.Decimal(12, 2)
|
|
total_debits Decimal? @db.Decimal(12, 2)
|
|
interest_charged Decimal? @db.Decimal(12, 2)
|
|
fees_charged Decimal? @db.Decimal(12, 2)
|
|
credit_limit Decimal? @db.Decimal(12, 2)
|
|
available_credit Decimal? @db.Decimal(12, 2)
|
|
owner_id Int @default(1)
|
|
account_holder_name String?
|
|
exchange_rate_to_aud Decimal? @db.Decimal(10, 6)
|
|
paperless_doc_id Int? @unique
|
|
transactions transactions[]
|
|
}
|
|
|
|
model transactions {
|
|
id Int @id @default(autoincrement())
|
|
statement_id Int?
|
|
transaction_date DateTime @db.Date
|
|
description String?
|
|
amount Decimal @db.Decimal(12, 2)
|
|
created_at DateTime? @default(now())
|
|
transaction_type String? @default("debit")
|
|
merchant_name String?
|
|
location String?
|
|
foreign_currency_amount Decimal? @db.Decimal(12, 2)
|
|
foreign_currency_code String?
|
|
category String?
|
|
row_index Int?
|
|
merchant_normalized String?
|
|
amount_aud Decimal? @db.Decimal(12, 2)
|
|
owner_id Int?
|
|
reconciled_with_id Int?
|
|
statement statements? @relation(fields: [statement_id], references: [id], onDelete: Cascade)
|
|
reconciled_with transactions? @relation("reconciled", fields: [reconciled_with_id], references: [id], onDelete: SetNull)
|
|
reconciled_by transactions[] @relation("reconciled")
|
|
expense_metadata expense_metadata?
|
|
}
|
|
|
|
model expense_metadata {
|
|
id Int @id @default(autoincrement())
|
|
transaction_id Int? @unique
|
|
source String @default("email")
|
|
paperless_doc_id Int? @unique
|
|
source_email_subject String?
|
|
source_email_from String?
|
|
payment_method String?
|
|
payment_method_detail String?
|
|
order_reference String?
|
|
line_items Json @default("[]")
|
|
tax_amount Decimal? @db.Decimal(12, 2)
|
|
subtotal Decimal? @db.Decimal(12, 2)
|
|
merchant_normalized String?
|
|
amount Decimal? @db.Decimal(12, 2)
|
|
transaction_date DateTime? @db.Date
|
|
extraction_model String? @default("gemini-2.5-flash")
|
|
created_at DateTime? @default(now())
|
|
transaction transactions? @relation(fields: [transaction_id], references: [id], onDelete: Cascade)
|
|
}
|
|
|
|
model rule_apply_runs {
|
|
id Int @id @default(autoincrement())
|
|
owner_id Int
|
|
applied_at DateTime @default(now())
|
|
split_from DateTime? @db.Date
|
|
matched Int @default(0)
|
|
transactions_affected Int @default(0)
|
|
reverted_at DateTime?
|
|
snapshot Json @default("[]")
|
|
}
|