-- MoFA PostgreSQL Schema-- Copy and execute this SQL to initialize your databaseCREATE TABLE IF NOT EXISTS agents ( id VARCHAR(255) PRIMARY KEY, name VARCHAR(255) NOT NULL, state VARCHAR(50) NOT NULL, started_at TIMESTAMP NOT NULL, provider VARCHAR(100), model VARCHAR(100), description TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);CREATE TABLE IF NOT EXISTS sessions ( session_id VARCHAR(255) PRIMARY KEY, agent_id VARCHAR(255), created_at TIMESTAMP NOT NULL, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, metadata JSONB, FOREIGN KEY (agent_id) REFERENCES agents(id) ON DELETE CASCADE);CREATE TABLE IF NOT EXISTS messages ( id SERIAL PRIMARY KEY, session_id VARCHAR(255) NOT NULL, role VARCHAR(50) NOT NULL, content TEXT NOT NULL, timestamp TIMESTAMP NOT NULL, FOREIGN KEY (session_id) REFERENCES sessions(session_id) ON DELETE CASCADE);CREATE INDEX idx_sessions_agent ON sessions(agent_id);CREATE INDEX idx_messages_session ON messages(session_id);CREATE INDEX idx_messages_timestamp ON messages(timestamp);
-- MoFA POSTGRES Schema-- Copy and execute this SQL to initialize your databaseCREATE TABLE IF NOT EXISTS agents ( id VARCHAR(255) PRIMARY KEY, name VARCHAR(255) NOT NULL, state VARCHAR(50) NOT NULL, started_at TIMESTAMP NOT NULL, provider VARCHAR(100), model VARCHAR(100), description TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);-- Additional tables and indexes...
-- MoFA MYSQL Schema-- Copy and execute this SQL to initialize your databaseCREATE TABLE IF NOT EXISTS agents ( id VARCHAR(255) PRIMARY KEY, name VARCHAR(255) NOT NULL, state VARCHAR(50) NOT NULL, started_at TIMESTAMP NOT NULL, provider VARCHAR(100), model VARCHAR(100), description TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);-- Additional tables and indexes...
-- MoFA SQLITE Schema-- Copy and execute this SQL to initialize your databaseCREATE TABLE IF NOT EXISTS agents ( id TEXT PRIMARY KEY, name TEXT NOT NULL, state TEXT NOT NULL, started_at TEXT NOT NULL, provider TEXT, model TEXT, description TEXT, created_at TEXT DEFAULT CURRENT_TIMESTAMP, updated_at TEXT DEFAULT CURRENT_TIMESTAMP);-- Additional tables and indexes...
-- Session lookups by agentCREATE INDEX idx_sessions_agent ON sessions(agent_id);-- Message lookups by sessionCREATE INDEX idx_messages_session ON messages(session_id);-- Time-based message queriesCREATE INDEX idx_messages_timestamp ON messages(timestamp);
Create a dedicated database user with minimal permissions:
-- PostgreSQLCREATE USER mofa_app WITH PASSWORD 'secure_password';GRANT CONNECT ON DATABASE mofa TO mofa_app;GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO mofa_app;GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO mofa_app;-- MySQLCREATE USER 'mofa_app'@'localhost' IDENTIFIED BY 'secure_password';GRANT SELECT, INSERT, UPDATE, DELETE ON mofa.* TO 'mofa_app'@'localhost';FLUSH PRIVILEGES;