Expand character model with additional attributes and advanced customization options
- Added fields such as `nickname`, `age`, `gender`, `species`, `nationality`, `status`, and others to enhance character customization. - Modified localization files to include new field labels and placeholders. - Updated `CharacterComponent` and `CharacterDetail` components with UI elements for the newly added attributes. - Introduced "Advanced Mode" toggle to manage visibility of extended customization options. - Refactored database models and repository methods (`addNewCharacter`, `updateCharacter`, and `fetchCharacters`) to handle the extended schema. - Improved data encryption and decryption workflows for secure storage of added attributes. - Enhanced user experience by reorganizing character customization layouts.
This commit is contained in:
@@ -13,13 +13,26 @@ type Database = sqlite3.Database;
|
||||
// MIGRATIONS
|
||||
// =============================================================================
|
||||
|
||||
const schemaVersion = 1;
|
||||
const schemaVersion = 2;
|
||||
|
||||
/**
|
||||
* DEV ONLY - S'exécute à chaque refresh, pas besoin de version
|
||||
* Mets ta query, test, efface après
|
||||
*/
|
||||
const devQueries: string[] = [];
|
||||
const devQueries: string[] = [
|
||||
// Nouveaux champs de personnages
|
||||
`ALTER TABLE book_characters ADD COLUMN nickname TEXT DEFAULT NULL`,
|
||||
`ALTER TABLE book_characters ADD COLUMN age TEXT DEFAULT NULL`,
|
||||
`ALTER TABLE book_characters ADD COLUMN gender TEXT DEFAULT NULL`,
|
||||
`ALTER TABLE book_characters ADD COLUMN species TEXT DEFAULT NULL`,
|
||||
`ALTER TABLE book_characters ADD COLUMN nationality TEXT DEFAULT NULL`,
|
||||
`ALTER TABLE book_characters ADD COLUMN status TEXT DEFAULT NULL`,
|
||||
`ALTER TABLE book_characters ADD COLUMN speech_pattern TEXT DEFAULT NULL`,
|
||||
`ALTER TABLE book_characters ADD COLUMN catchphrase TEXT DEFAULT NULL`,
|
||||
`ALTER TABLE book_characters ADD COLUMN residence TEXT DEFAULT NULL`,
|
||||
`ALTER TABLE book_characters ADD COLUMN notes TEXT DEFAULT NULL`,
|
||||
`ALTER TABLE book_characters ADD COLUMN color TEXT DEFAULT NULL`,
|
||||
];
|
||||
|
||||
const isDev:boolean = !app.isPackaged;
|
||||
|
||||
@@ -86,6 +99,19 @@ function migrateFromOldSystem(db: Database): void {
|
||||
// Add spells_enabled column to book_tools if missing
|
||||
addColumn(db, 'book_tools', 'spells_enabled', 'INTEGER NOT NULL DEFAULT 0');
|
||||
|
||||
// Add new character fields if missing
|
||||
addColumn(db, 'book_characters', 'nickname', 'TEXT DEFAULT NULL');
|
||||
addColumn(db, 'book_characters', 'age', 'TEXT DEFAULT NULL');
|
||||
addColumn(db, 'book_characters', 'gender', 'TEXT DEFAULT NULL');
|
||||
addColumn(db, 'book_characters', 'species', 'TEXT DEFAULT NULL');
|
||||
addColumn(db, 'book_characters', 'nationality', 'TEXT DEFAULT NULL');
|
||||
addColumn(db, 'book_characters', 'status', 'TEXT DEFAULT NULL');
|
||||
addColumn(db, 'book_characters', 'speech_pattern', 'TEXT DEFAULT NULL');
|
||||
addColumn(db, 'book_characters', 'catchphrase', 'TEXT DEFAULT NULL');
|
||||
addColumn(db, 'book_characters', 'residence', 'TEXT DEFAULT NULL');
|
||||
addColumn(db, 'book_characters', 'notes', 'TEXT DEFAULT NULL');
|
||||
addColumn(db, 'book_characters', 'color', 'TEXT DEFAULT NULL');
|
||||
|
||||
// Create book_spell_tags table if missing
|
||||
db.exec(`
|
||||
CREATE TABLE IF NOT EXISTS book_spell_tags (
|
||||
@@ -208,6 +234,21 @@ export function runMigrations(db: Database): void {
|
||||
db.exec(`CREATE INDEX IF NOT EXISTS idx_spells_user ON book_spells(user_id)`);
|
||||
}
|
||||
|
||||
// v2 - Add new character fields (nickname, age, gender, species, nationality, status, etc.)
|
||||
if (currentVersion < 2) {
|
||||
addColumn(db, 'book_characters', 'nickname', 'TEXT DEFAULT NULL');
|
||||
addColumn(db, 'book_characters', 'age', 'TEXT DEFAULT NULL');
|
||||
addColumn(db, 'book_characters', 'gender', 'TEXT DEFAULT NULL');
|
||||
addColumn(db, 'book_characters', 'species', 'TEXT DEFAULT NULL');
|
||||
addColumn(db, 'book_characters', 'nationality', 'TEXT DEFAULT NULL');
|
||||
addColumn(db, 'book_characters', 'status', 'TEXT DEFAULT NULL');
|
||||
addColumn(db, 'book_characters', 'speech_pattern', 'TEXT DEFAULT NULL');
|
||||
addColumn(db, 'book_characters', 'catchphrase', 'TEXT DEFAULT NULL');
|
||||
addColumn(db, 'book_characters', 'residence', 'TEXT DEFAULT NULL');
|
||||
addColumn(db, 'book_characters', 'notes', 'TEXT DEFAULT NULL');
|
||||
addColumn(db, 'book_characters', 'color', 'TEXT DEFAULT NULL');
|
||||
}
|
||||
|
||||
setDbVersion(db, schemaVersion);
|
||||
}
|
||||
|
||||
@@ -346,12 +387,23 @@ export function initializeSchema(db: Database): void {
|
||||
user_id TEXT NOT NULL,
|
||||
first_name TEXT NOT NULL,
|
||||
last_name TEXT,
|
||||
nickname TEXT,
|
||||
age TEXT,
|
||||
gender TEXT,
|
||||
species TEXT,
|
||||
nationality TEXT,
|
||||
status TEXT,
|
||||
category TEXT NOT NULL,
|
||||
title TEXT,
|
||||
image TEXT,
|
||||
role TEXT,
|
||||
biography TEXT,
|
||||
history TEXT,
|
||||
speech_pattern TEXT,
|
||||
catchphrase TEXT,
|
||||
residence TEXT,
|
||||
notes TEXT,
|
||||
color TEXT,
|
||||
last_update INTEGER DEFAULT 0,
|
||||
FOREIGN KEY (book_id) REFERENCES erit_books(book_id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user