feat: add client billing fields to database and Rust backend
This commit is contained in:
@@ -12,6 +12,26 @@ pub fn init_db(conn: &Connection) -> Result<(), rusqlite::Error> {
|
||||
[],
|
||||
)?;
|
||||
|
||||
// Migrate clients table — add new columns (safe to re-run)
|
||||
let migration_columns = [
|
||||
"ALTER TABLE clients ADD COLUMN company TEXT",
|
||||
"ALTER TABLE clients ADD COLUMN phone TEXT",
|
||||
"ALTER TABLE clients ADD COLUMN tax_id TEXT",
|
||||
"ALTER TABLE clients ADD COLUMN payment_terms TEXT",
|
||||
"ALTER TABLE clients ADD COLUMN notes TEXT",
|
||||
];
|
||||
for sql in &migration_columns {
|
||||
match conn.execute(sql, []) {
|
||||
Ok(_) => {}
|
||||
Err(e) => {
|
||||
let msg = e.to_string();
|
||||
if !msg.contains("duplicate column") {
|
||||
return Err(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
conn.execute(
|
||||
"CREATE TABLE IF NOT EXISTS projects (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
@@ -98,7 +118,7 @@ pub fn init_db(conn: &Connection) -> Result<(), rusqlite::Error> {
|
||||
|
||||
// Insert default settings
|
||||
conn.execute(
|
||||
"INSERT OR IGNORE INTO settings (key, value) VALUES ('default_hourly_rate', '50')",
|
||||
"INSERT OR IGNORE INTO settings (key, value) VALUES ('hourly_rate', '50')",
|
||||
[],
|
||||
)?;
|
||||
conn.execute(
|
||||
|
||||
Reference in New Issue
Block a user