jdxi_editor.midi.data.programs.database
SQLite database module for storing JD-Xi user programs.
This module provides a more robust storage solution than JSON files, with proper transactions, better querying, and reduced race conditions.
Attributes
Classes
SQLite database for storing user programs. |
Functions
|
Get the global database instance. |
Module Contents
- class jdxi_editor.midi.data.programs.database.ProgramDatabase(db_path: pathlib.Path | None = None)[source]
SQLite database for storing user programs.
- add_or_replace_program(program: jdxi_editor.jdxi.program.program.JDXiProgram) bool[source]
Add or replace a program in the database.
- Parameters:
program – JDXiProgram to add or replace
- Returns:
True if successful, False otherwise
- get_program_by_id(program_id: str) jdxi_editor.jdxi.program.program.JDXiProgram | None[source]
Get a program by its ID.
- Parameters:
program_id – Program ID (e.g., “E01”, “F32”)
- Returns:
JDXiProgram if found, None otherwise
- get_all_programs() List[jdxi_editor.jdxi.program.program.JDXiProgram][source]
Get all programs from the database.
- Returns:
List of JDXiProgram objects
- get_programs_by_bank(bank: str) List[jdxi_editor.jdxi.program.program.JDXiProgram][source]
Get all programs for a specific bank.
- Parameters:
bank – Bank letter (e.g., “E”, “F”, “G”, “H”)
- Returns:
List of JDXiProgram objects
- delete_program(program_id: str) bool[source]
Delete a program from the database.
- Parameters:
program_id – Program ID to delete
- Returns:
True if deleted, False otherwise
- _row_to_program(row: sqlite3.Row) jdxi_editor.jdxi.program.program.JDXiProgram[source]
Convert a database row to a JDXiProgram object.
- create_playlist(name: str, description: str = None) int | None[source]
Create a new playlist.
- Parameters:
name – Playlist name (must be unique)
description – Optional description
- Returns:
Playlist ID if successful, None otherwise
- _get_playlist_program_count(playlist_id: int) int[source]
Get the number of programs in a playlist.
- get_playlist_by_id(playlist_id: int) Dict | None[source]
Get a playlist by ID.
- Parameters:
playlist_id – Playlist ID
- Returns:
Playlist dictionary if found, None otherwise
- update_playlist(playlist_id: int, name: str = None, description: str = None) bool[source]
Update a playlist.
- Parameters:
playlist_id – Playlist ID
name – New name (optional)
description – New description (optional)
- Returns:
True if successful, False otherwise
- delete_playlist(playlist_id: int) bool[source]
Delete a playlist and all its items.
- Parameters:
playlist_id – Playlist ID
- Returns:
True if successful, False otherwise
- add_program_to_playlist(playlist_id: int, program_id: str, position: int = None) bool[source]
Add a program to a playlist.
- Parameters:
playlist_id – Playlist ID
program_id – Program ID (e.g., “E01”)
position – Position in playlist (optional, will append if not provided)
- Returns:
True if successful, False otherwise
- remove_program_from_playlist(playlist_id: int, program_id: str) bool[source]
Remove a program from a playlist.
- Parameters:
playlist_id – Playlist ID
program_id – Program ID
- Returns:
True if successful, False otherwise
- get_playlist_programs(playlist_id: int) List[Dict][source]
Get all programs in a playlist with their MIDI file paths, ordered by position.
- Parameters:
playlist_id – Playlist ID
- Returns:
List of dictionaries with ‘program’ (JDXiProgram) and ‘midi_file_path’ (str)
- update_playlist_item_midi_file(playlist_id: int, program_id: str, midi_file_path: str) bool[source]
Update the MIDI file path for a playlist item.
- Parameters:
playlist_id – Playlist ID
program_id – Program ID
midi_file_path – Path to MIDI file (or None to clear)
- Returns:
True if successful, False otherwise
- update_playlist_item_cheat_preset(playlist_id: int, program_id: str, cheat_preset_id: str | None = None) bool[source]
Update the cheat preset ID for a playlist item.
- Parameters:
playlist_id – Playlist ID
program_id – Program ID
cheat_preset_id – Cheat preset ID (e.g., “113”) or None to clear
- Returns:
True if updated, False otherwise
- migrate_from_json(json_file: pathlib.Path) int[source]
Migrate programs from JSON file to SQLite database.
- Parameters:
json_file – Path to JSON file
- Returns:
Number of programs migrated
- jdxi_editor.midi.data.programs.database._db_instance: ProgramDatabase | None = None[source]
- jdxi_editor.midi.data.programs.database.get_database() ProgramDatabase[source]
Get the global database instance.