SQL
CREATE TABLE quotes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
trainer_id INTEGER NOT NULL REFERENCES trainers(id) ON DELETE CASCADE,
student_id INTEGER NOT NULL REFERENCES students(id) ON DELETE CASCADE,
title TEXT NOT NULL,
intro TEXT,
-- persönliche Anrede/Einleitung in Mail & Angebotsseite
lines TEXT NOT NULL DEFAULT '[]',
-- JSON: [{ label,
qty,
price_cents }]
total_cents INTEGER NOT NULL DEFAULT 0,
valid_until TEXT,
-- ISO-Datum; danach nicht mehr annehmbar
status TEXT NOT NULL DEFAULT 'draft'
CHECK(status IN ('draft','sent','accepted','declined','expired','cancelled')),
token TEXT UNIQUE,
-- öffentlicher Annahme-Link
auto_invoice INTEGER NOT NULL DEFAULT 1,
proposed_service_id INTEGER REFERENCES services(id) ON DELETE SET NULL,
proposed_starts_at TEXT,
-- optionaler Terminvorschlag
invoice_id INTEGER,
-- nach Annahme
booking_id INTEGER,
-- nach Annahme (wenn Terminvorschlag)
sent_at TEXT,
decided_at TEXT,
created_at TEXT NOT NULL DEFAULT (datetime('now')),
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
)
Columns
| Column | Data type | Allow null | Primary key | Actions |
|---|---|---|---|---|
id |
INTEGER |
✓ | ✓ | Rename | Drop |
trainer_id |
INTEGER |
Rename | Drop | ||
student_id |
INTEGER |
Rename | Drop | ||
title |
TEXT |
Rename | Drop | ||
intro |
TEXT |
✓ | Rename | Drop | |
lines |
TEXT |
Rename | Drop | ||
total_cents |
INTEGER |
Rename | Drop | ||
valid_until |
TEXT |
✓ | Rename | Drop | |
status |
TEXT |
Rename | Drop | ||
token |
TEXT |
✓ | Rename | Drop | |
auto_invoice |
INTEGER |
Rename | Drop | ||
proposed_service_id |
INTEGER |
✓ | Rename | Drop | |
proposed_starts_at |
TEXT |
✓ | Rename | Drop | |
invoice_id |
INTEGER |
✓ | Rename | Drop | |
booking_id |
INTEGER |
✓ | Rename | Drop | |
sent_at |
TEXT |
✓ | Rename | Drop | |
decided_at |
TEXT |
✓ | Rename | Drop | |
created_at |
TEXT |
Rename | Drop | ||
updated_at |
TEXT |
Rename | Drop |
Foreign Keys
| Column | Destination |
|---|---|
proposed_service_id |
services.id |
student_id |
students.id |
trainer_id |
trainers.id |
Indexes
| Name | Columns | Unique | SQL | Drop? |
|---|---|---|---|---|
| idx_quotes_trainer |
|
SQL | Drop | |
| sqlite_autoindex_quotes_1 |
token
|
✓ | SQL | Drop |