mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-12 02:02:13 +03:00
50 lines
1.8 KiB
PL/PgSQL
50 lines
1.8 KiB
PL/PgSQL
-- Init script for PostgreSQL + pgvector (local AlloyDB AI simulation)
|
|
-- Run on container start: docker-compose -f docker-compose.chroma.yml up -d postgres-pgvector
|
|
|
|
-- Enable pgvector extension
|
|
CREATE EXTENSION IF NOT EXISTS vector;
|
|
|
|
-- Create memories table with vector support
|
|
CREATE TABLE IF NOT EXISTS memories (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
agent_id VARCHAR(255) NOT NULL DEFAULT 'openclaw-serpent',
|
|
content TEXT NOT NULL,
|
|
embedding VECTOR(1536),
|
|
metadata JSONB DEFAULT '{}',
|
|
tags TEXT[] DEFAULT '{}',
|
|
source VARCHAR(50) DEFAULT 'alloydb',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Create indexes for performance
|
|
CREATE INDEX IF NOT EXISTS idx_memories_embedding ON memories USING ivfflat (embedding vector_cosine_ops);
|
|
CREATE INDEX IF NOT EXISTS idx_memories_tags ON memories USING GIN(tags);
|
|
CREATE INDEX IF NOT EXISTS idx_memories_agent ON memories(agent_id);
|
|
CREATE INDEX IF NOT EXISTS idx_memories_created ON memories(created_at DESC);
|
|
|
|
-- Create function for auto-updating updated_at
|
|
CREATE OR REPLACE FUNCTION update_updated_at_column()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
NEW.updated_at = CURRENT_TIMESTAMP;
|
|
RETURN NEW;
|
|
END;
|
|
$$ language 'plpgsql';
|
|
|
|
-- Create trigger
|
|
DROP TRIGGER IF EXISTS update_memories_updated_at ON memories;
|
|
CREATE TRIGGER update_memories_updated_at
|
|
BEFORE UPDATE ON memories
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION update_updated_at_column();
|
|
|
|
-- Insert test data (optional)
|
|
-- INSERT INTO memories (content, tags) VALUES
|
|
-- ('Hero section uses GSAP fade-up with 1.2s duration', ARRAY['motion', 'design']),
|
|
-- ('Switched to Space Grotesk font', ARRAY['typography', 'design']);
|
|
|
|
-- Verify setup
|
|
SELECT 'pgvector initialized successfully' as status;
|
|
SELECT COUNT(*) as total_memories FROM memories;
|