Update README, MIGRATION.md, and CLAUDE.md for current feature set

This commit is contained in:
2026-04-15 03:55:14 -05:00
parent 75d0e05f59
commit 8721254476
3 changed files with 85 additions and 3 deletions
+76
View File
@@ -1,5 +1,81 @@
# Schema Migrations
## Adding battery metadata fields, device type, and history tables
These columns and tables were added over several feature commits. `create_all()` does not add columns to existing tables, so existing installations need the `ALTER TABLE` commands below. New tables (`capacity_test`, `charge_log`) are created automatically by `create_all()` on next restart for SQLite — the explicit SQL below is provided for reference and for MariaDB operators who manage schema manually.
**Always snapshot first:**
```bash
cp batteries.db batteries.db.$(date +%Y-%m-%d).snapshot
```
**SQLite:**
```bash
sqlite3 batteries.db "ALTER TABLE device ADD COLUMN device_type VARCHAR(50);"
sqlite3 batteries.db "ALTER TABLE battery ADD COLUMN size VARCHAR(20);"
sqlite3 batteries.db "ALTER TABLE battery ADD COLUMN chemistry VARCHAR(20);"
sqlite3 batteries.db "ALTER TABLE battery ADD COLUMN capacity_mah INTEGER;"
sqlite3 batteries.db "ALTER TABLE battery ADD COLUMN tested_capacity_mah INTEGER;"
sqlite3 batteries.db "ALTER TABLE battery ADD COLUMN tested_date VARCHAR(10);"
sqlite3 batteries.db "ALTER TABLE battery ADD COLUMN charge_cycles INTEGER;"
sqlite3 batteries.db "ALTER TABLE battery ADD COLUMN purchase_date VARCHAR(10);"
sqlite3 batteries.db "ALTER TABLE battery ADD COLUMN storage_location VARCHAR(100);"
```
New tables (auto-created on restart, shown here for reference):
```python
import sqlite3
conn = sqlite3.connect('batteries.db')
conn.execute('''CREATE TABLE IF NOT EXISTS capacity_test (
id INTEGER PRIMARY KEY AUTOINCREMENT,
battery_id INTEGER NOT NULL REFERENCES battery(id) ON DELETE CASCADE,
tested_capacity_mah INTEGER NOT NULL,
tested_date VARCHAR(10) NOT NULL,
notes TEXT
)''')
conn.execute('''CREATE TABLE IF NOT EXISTS charge_log (
id INTEGER PRIMARY KEY AUTOINCREMENT,
battery_id INTEGER NOT NULL REFERENCES battery(id) ON DELETE CASCADE,
charged_date VARCHAR(10) NOT NULL,
increment_cycles INTEGER NOT NULL DEFAULT 0,
notes TEXT
)''')
conn.commit(); conn.close()
```
**MariaDB / MySQL:**
```sql
ALTER TABLE device ADD COLUMN device_type VARCHAR(50) NULL;
ALTER TABLE battery ADD COLUMN size VARCHAR(20) NULL;
ALTER TABLE battery ADD COLUMN chemistry VARCHAR(20) NULL;
ALTER TABLE battery ADD COLUMN capacity_mah INT NULL;
ALTER TABLE battery ADD COLUMN tested_capacity_mah INT NULL;
ALTER TABLE battery ADD COLUMN tested_date VARCHAR(10) NULL;
ALTER TABLE battery ADD COLUMN charge_cycles INT NULL;
ALTER TABLE battery ADD COLUMN purchase_date VARCHAR(10) NULL;
ALTER TABLE battery ADD COLUMN storage_location VARCHAR(100) NULL;
CREATE TABLE IF NOT EXISTS capacity_test (
id INT AUTO_INCREMENT PRIMARY KEY,
battery_id INT NOT NULL,
tested_capacity_mah INT NOT NULL,
tested_date VARCHAR(10) NOT NULL,
notes TEXT,
CONSTRAINT fk_ct_battery FOREIGN KEY (battery_id) REFERENCES battery(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS charge_log (
id INT AUTO_INCREMENT PRIMARY KEY,
battery_id INT NOT NULL,
charged_date VARCHAR(10) NOT NULL,
increment_cycles INT NOT NULL DEFAULT 0,
notes TEXT,
CONSTRAINT fk_cl_battery FOREIGN KEY (battery_id) REFERENCES battery(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
---
## Adding battery_pct_log table
This table was added to track battery percentage change history.