30 lines
1.2 KiB
SQL
30 lines
1.2 KiB
SQL
CREATE TABLE learnings (
|
|
guid UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
summary TEXT NOT NULL,
|
|
details TEXT,
|
|
category TEXT,
|
|
area TEXT,
|
|
status TEXT NOT NULL DEFAULT 'provisional',
|
|
priority TEXT DEFAULT 'medium',
|
|
confidence TEXT DEFAULT 'hypothesis',
|
|
action_required BOOLEAN DEFAULT false,
|
|
source_type TEXT,
|
|
source_ref TEXT,
|
|
project_id UUID REFERENCES projects(guid) ON DELETE SET NULL,
|
|
related_thought_id UUID REFERENCES thoughts(guid) ON DELETE SET NULL,
|
|
related_skill_id UUID REFERENCES skills(guid) ON DELETE SET NULL,
|
|
reviewed_by TEXT,
|
|
reviewed_at TIMESTAMP WITH TIME ZONE,
|
|
duplicate_of UUID REFERENCES learnings(guid) ON DELETE SET NULL,
|
|
supersedes UUID REFERENCES learnings(guid) ON DELETE SET NULL,
|
|
tags TEXT[],
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT now(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT now()
|
|
);
|
|
|
|
CREATE INDEX idx_learnings_project_id ON learnings(project_id);
|
|
CREATE INDEX idx_learnings_category ON learnings(category);
|
|
CREATE INDEX idx_learnings_status ON learnings(status);
|
|
CREATE INDEX idx_learnings_tags ON learnings USING GIN(tags);
|
|
CREATE INDEX idx_learnings_search ON learnings USING GIN(to_tsvector('simple', summary || ' ' || coalesce(details, '')));
|