mirror of
https://github.com/DeBrosOfficial/network.git
synced 2026-01-30 14:03:02 +00:00
75 lines
3.3 KiB
PL/PgSQL
75 lines
3.3 KiB
PL/PgSQL
-- Migration 006: Per-Namespace SQLite Databases
|
|
-- This migration creates infrastructure for isolated SQLite databases per namespace
|
|
|
|
BEGIN;
|
|
|
|
-- Namespace SQLite databases registry
|
|
CREATE TABLE IF NOT EXISTS namespace_sqlite_databases (
|
|
id TEXT PRIMARY KEY, -- UUID
|
|
namespace TEXT NOT NULL, -- Namespace that owns this database
|
|
database_name TEXT NOT NULL, -- Database name (unique per namespace)
|
|
home_node_id TEXT NOT NULL, -- Node ID where database file resides
|
|
file_path TEXT NOT NULL, -- Absolute path on home node
|
|
size_bytes BIGINT DEFAULT 0, -- Current database size
|
|
backup_cid TEXT, -- Latest backup CID in IPFS
|
|
last_backup_at TIMESTAMP, -- Last backup timestamp
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
created_by TEXT NOT NULL, -- Wallet address that created the database
|
|
|
|
UNIQUE(namespace, database_name)
|
|
);
|
|
|
|
-- Indexes for database lookups
|
|
CREATE INDEX IF NOT EXISTS idx_sqlite_databases_namespace ON namespace_sqlite_databases(namespace);
|
|
CREATE INDEX IF NOT EXISTS idx_sqlite_databases_home_node ON namespace_sqlite_databases(home_node_id);
|
|
CREATE INDEX IF NOT EXISTS idx_sqlite_databases_name ON namespace_sqlite_databases(namespace, database_name);
|
|
|
|
-- SQLite database backups history
|
|
CREATE TABLE IF NOT EXISTS namespace_sqlite_backups (
|
|
id TEXT PRIMARY KEY, -- UUID
|
|
database_id TEXT NOT NULL, -- References namespace_sqlite_databases.id
|
|
backup_cid TEXT NOT NULL, -- IPFS CID of backup file
|
|
size_bytes BIGINT NOT NULL, -- Backup file size
|
|
backup_type TEXT NOT NULL, -- 'manual', 'scheduled', 'migration'
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
created_by TEXT NOT NULL,
|
|
|
|
FOREIGN KEY (database_id) REFERENCES namespace_sqlite_databases(id) ON DELETE CASCADE
|
|
);
|
|
|
|
-- Index for backup history queries
|
|
CREATE INDEX IF NOT EXISTS idx_sqlite_backups_database ON namespace_sqlite_backups(database_id, created_at DESC);
|
|
|
|
-- Namespace quotas for resource management (future use)
|
|
CREATE TABLE IF NOT EXISTS namespace_quotas (
|
|
namespace TEXT PRIMARY KEY,
|
|
|
|
-- Storage quotas
|
|
max_sqlite_databases INTEGER DEFAULT 10, -- Max SQLite databases per namespace
|
|
max_storage_bytes BIGINT DEFAULT 5368709120, -- 5GB default
|
|
max_ipfs_pins INTEGER DEFAULT 1000, -- Max pinned IPFS objects
|
|
|
|
-- Compute quotas
|
|
max_deployments INTEGER DEFAULT 20, -- Max concurrent deployments
|
|
max_cpu_percent INTEGER DEFAULT 200, -- Total CPU quota (2 cores)
|
|
max_memory_mb INTEGER DEFAULT 2048, -- Total memory quota
|
|
|
|
-- Rate limits
|
|
max_rqlite_queries_per_minute INTEGER DEFAULT 1000,
|
|
max_olric_ops_per_minute INTEGER DEFAULT 10000,
|
|
|
|
-- Current usage (updated periodically)
|
|
current_storage_bytes BIGINT DEFAULT 0,
|
|
current_deployments INTEGER DEFAULT 0,
|
|
current_sqlite_databases INTEGER DEFAULT 0,
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Mark migration as applied
|
|
INSERT OR IGNORE INTO schema_migrations(version) VALUES (6);
|
|
|
|
COMMIT;
|