mirror of
https://github.com/lordmathis/llamactl.git
synced 2025-12-23 01:24:24 +00:00
Implement SQLite database persistence for instance management
This commit is contained in:
7
pkg/database/migrations/001_initial_schema.down.sql
Normal file
7
pkg/database/migrations/001_initial_schema.down.sql
Normal file
@@ -0,0 +1,7 @@
|
||||
-- Drop indexes first
|
||||
DROP INDEX IF EXISTS idx_instances_backend_type;
|
||||
DROP INDEX IF EXISTS idx_instances_status;
|
||||
DROP INDEX IF EXISTS idx_instances_name;
|
||||
|
||||
-- Drop tables
|
||||
DROP TABLE IF EXISTS instances;
|
||||
43
pkg/database/migrations/001_initial_schema.up.sql
Normal file
43
pkg/database/migrations/001_initial_schema.up.sql
Normal file
@@ -0,0 +1,43 @@
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- Instances Table: Central configuration and state for LLM backends
|
||||
-- -----------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS instances (
|
||||
-- Primary identification
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
name TEXT NOT NULL UNIQUE,
|
||||
|
||||
-- Backend configuration
|
||||
backend_type TEXT NOT NULL CHECK(backend_type IN ('llama_cpp', 'mlx_lm', 'vllm')),
|
||||
backend_config_json TEXT NOT NULL, -- Backend-specific options (150+ fields for llama_cpp, etc.)
|
||||
|
||||
-- Instance state
|
||||
status TEXT NOT NULL CHECK(status IN ('stopped', 'running', 'failed', 'restarting', 'shutting_down')) DEFAULT 'stopped',
|
||||
|
||||
-- Timestamps (created_at stored as Unix timestamp for compatibility with existing JSON format)
|
||||
created_at INTEGER NOT NULL,
|
||||
updated_at INTEGER NOT NULL,
|
||||
|
||||
-- Common instance options (extracted from Instance.Options)
|
||||
-- NOT NULL with defaults to match config behavior (nil pointers use these defaults)
|
||||
auto_restart INTEGER NOT NULL DEFAULT 0, -- Boolean: Enable automatic restart on failure
|
||||
max_restarts INTEGER NOT NULL DEFAULT -1, -- Maximum restart attempts (-1 = unlimited)
|
||||
restart_delay INTEGER NOT NULL DEFAULT 0, -- Delay between restarts in seconds
|
||||
on_demand_start INTEGER NOT NULL DEFAULT 0, -- Boolean: Enable on-demand instance start
|
||||
idle_timeout INTEGER NOT NULL DEFAULT 0, -- Idle timeout in minutes before auto-stop
|
||||
docker_enabled INTEGER NOT NULL DEFAULT 0, -- Boolean: Run instance in Docker container
|
||||
command_override TEXT, -- Custom command to override default backend command (nullable)
|
||||
|
||||
-- JSON fields for complex structures (nullable - empty when not set)
|
||||
nodes TEXT, -- JSON array of node names for remote instances
|
||||
environment TEXT, -- JSON map of environment variables
|
||||
|
||||
-- Future extensibility hook
|
||||
owner_user_id TEXT NULL -- Future: OIDC user ID for ownership
|
||||
);
|
||||
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- Indexes for performance
|
||||
-- -----------------------------------------------------------------------------
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_instances_name ON instances(name);
|
||||
CREATE INDEX IF NOT EXISTS idx_instances_status ON instances(status);
|
||||
CREATE INDEX IF NOT EXISTS idx_instances_backend_type ON instances(backend_type);
|
||||
Reference in New Issue
Block a user