Add budget loan tracking
This commit is contained in:
@@ -159,6 +159,31 @@ const MIGRATIONS_SQL = {
|
||||
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
|
||||
UNIQUE(category_key, name)
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS budget_loans (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
title TEXT NOT NULL,
|
||||
borrower TEXT NOT NULL,
|
||||
total_amount REAL NOT NULL CHECK(total_amount > 0),
|
||||
installment_count INTEGER NOT NULL CHECK(installment_count > 0),
|
||||
start_month TEXT NOT NULL,
|
||||
notes TEXT,
|
||||
status TEXT NOT NULL DEFAULT 'active'
|
||||
CHECK(status IN ('active', 'paid')),
|
||||
created_by INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
|
||||
updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now'))
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS budget_loan_payments (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
loan_id INTEGER NOT NULL REFERENCES budget_loans(id) ON DELETE CASCADE,
|
||||
installment_number INTEGER NOT NULL CHECK(installment_number > 0),
|
||||
amount REAL NOT NULL CHECK(amount > 0),
|
||||
paid_date TEXT NOT NULL,
|
||||
budget_entry_id INTEGER REFERENCES budget_entries(id) ON DELETE SET NULL,
|
||||
created_by INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
|
||||
UNIQUE(loan_id, installment_number)
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS api_tokens (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
name TEXT NOT NULL,
|
||||
@@ -203,6 +228,9 @@ const MIGRATIONS_SQL = {
|
||||
CREATE TRIGGER IF NOT EXISTS trg_budget_entries_updated_at
|
||||
AFTER UPDATE ON budget_entries FOR EACH ROW
|
||||
BEGIN UPDATE budget_entries SET updated_at = strftime('%Y-%m-%dT%H:%M:%SZ', 'now') WHERE id = OLD.id; END;
|
||||
CREATE TRIGGER IF NOT EXISTS trg_budget_loans_updated_at
|
||||
AFTER UPDATE ON budget_loans FOR EACH ROW
|
||||
BEGIN UPDATE budget_loans SET updated_at = strftime('%Y-%m-%dT%H:%M:%SZ', 'now') WHERE id = OLD.id; END;
|
||||
CREATE INDEX IF NOT EXISTS idx_tasks_assigned_to ON tasks(assigned_to);
|
||||
CREATE INDEX IF NOT EXISTS idx_tasks_due_date ON tasks(due_date);
|
||||
CREATE INDEX IF NOT EXISTS idx_tasks_status ON tasks(status);
|
||||
@@ -214,6 +242,10 @@ const MIGRATIONS_SQL = {
|
||||
CREATE INDEX IF NOT EXISTS idx_notes_pinned ON notes(pinned);
|
||||
CREATE INDEX IF NOT EXISTS idx_budget_date ON budget_entries(date);
|
||||
CREATE INDEX IF NOT EXISTS idx_budget_created_by ON budget_entries(created_by);
|
||||
CREATE INDEX IF NOT EXISTS idx_budget_loans_status ON budget_loans(status);
|
||||
CREATE INDEX IF NOT EXISTS idx_budget_loans_start_month ON budget_loans(start_month);
|
||||
CREATE INDEX IF NOT EXISTS idx_budget_loan_payments_loan ON budget_loan_payments(loan_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_budget_loan_payments_paid_date ON budget_loan_payments(paid_date);
|
||||
CREATE INDEX IF NOT EXISTS idx_birthdays_name ON birthdays(name);
|
||||
CREATE INDEX IF NOT EXISTS idx_birthdays_birth_date ON birthdays(birth_date);
|
||||
CREATE INDEX IF NOT EXISTS idx_birthdays_created_by ON birthdays(created_by);
|
||||
@@ -425,6 +457,43 @@ const MIGRATIONS_SQL = {
|
||||
ALTER TABLE calendar_events ADD COLUMN attachment_size INTEGER;
|
||||
ALTER TABLE calendar_events ADD COLUMN attachment_data TEXT;
|
||||
`,
|
||||
21: `
|
||||
CREATE TABLE IF NOT EXISTS budget_loans (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
title TEXT NOT NULL,
|
||||
borrower TEXT NOT NULL,
|
||||
total_amount REAL NOT NULL CHECK(total_amount > 0),
|
||||
installment_count INTEGER NOT NULL CHECK(installment_count > 0),
|
||||
start_month TEXT NOT NULL,
|
||||
notes TEXT,
|
||||
status TEXT NOT NULL DEFAULT 'active'
|
||||
CHECK(status IN ('active', 'paid')),
|
||||
created_by INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
|
||||
updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now'))
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS budget_loan_payments (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
loan_id INTEGER NOT NULL REFERENCES budget_loans(id) ON DELETE CASCADE,
|
||||
installment_number INTEGER NOT NULL CHECK(installment_number > 0),
|
||||
amount REAL NOT NULL CHECK(amount > 0),
|
||||
paid_date TEXT NOT NULL,
|
||||
budget_entry_id INTEGER REFERENCES budget_entries(id) ON DELETE SET NULL,
|
||||
created_by INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
|
||||
UNIQUE(loan_id, installment_number)
|
||||
);
|
||||
|
||||
CREATE TRIGGER IF NOT EXISTS trg_budget_loans_updated_at
|
||||
AFTER UPDATE ON budget_loans FOR EACH ROW
|
||||
BEGIN UPDATE budget_loans SET updated_at = strftime('%Y-%m-%dT%H:%M:%SZ', 'now') WHERE id = OLD.id; END;
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_budget_loans_status ON budget_loans(status);
|
||||
CREATE INDEX IF NOT EXISTS idx_budget_loans_start_month ON budget_loans(start_month);
|
||||
CREATE INDEX IF NOT EXISTS idx_budget_loan_payments_loan ON budget_loan_payments(loan_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_budget_loan_payments_paid_date ON budget_loan_payments(paid_date);
|
||||
`,
|
||||
};
|
||||
|
||||
export { MIGRATIONS_SQL };
|
||||
|
||||
Reference in New Issue
Block a user