27 lines
1.1 KiB
SQL
27 lines
1.1 KiB
SQL
-- Many-to-many join table between thoughts and learnings.
|
|
-- Allows a learning to reference multiple source thoughts and a thought to
|
|
-- expose multiple related learnings, queryable in both directions.
|
|
|
|
CREATE SEQUENCE IF NOT EXISTS public.identity_thought_learning_links_id
|
|
INCREMENT 1
|
|
MINVALUE 1
|
|
MAXVALUE 9223372036854775807
|
|
START 1
|
|
CACHE 1;
|
|
|
|
CREATE TABLE IF NOT EXISTS public.thought_learning_links (
|
|
id bigint NOT NULL DEFAULT nextval('public.identity_thought_learning_links_id'),
|
|
thought_id bigint NOT NULL REFERENCES public.thoughts(id) ON DELETE CASCADE,
|
|
learning_id bigint NOT NULL REFERENCES public.learnings(id) ON DELETE CASCADE,
|
|
relation text NOT NULL DEFAULT 'source',
|
|
created_at timestamptz NOT NULL DEFAULT now(),
|
|
CONSTRAINT thought_learning_links_pkey PRIMARY KEY (id),
|
|
CONSTRAINT thought_learning_links_unique UNIQUE (thought_id, learning_id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_thought_learning_links_thought_id
|
|
ON public.thought_learning_links (thought_id);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_thought_learning_links_learning_id
|
|
ON public.thought_learning_links (learning_id);
|