Update README, MIGRATION.md, and CLAUDE.md for current feature set
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user