init_db.sql (37 lines of code) (raw):
CREATE DATABASE lor_e;
\c lor_e;
CREATE EXTENSION vector;
CREATE TABLE IF NOT EXISTS issues (
id SERIAL PRIMARY KEY,
source_id VARCHAR NOT NULL UNIQUE,
source VARCHAR NOT NULL,
title TEXT NOT NULL,
body TEXT NOT NULL,
is_pull_request BOOLEAN NOT NULL,
number INT NOT NULL,
html_url VARCHAR NOT NULL,
url VARCHAR NOT NULL,
embedding vector(1024) NOT NULL,
created_at timestamp with time zone NOT NULL DEFAULT (current_timestamp AT TIME ZONE 'UTC'),
updated_at timestamp with time zone NOT NULL DEFAULT (current_timestamp AT TIME ZONE 'UTC')
);
CREATE TABLE IF NOT EXISTS comments (
id SERIAL PRIMARY KEY,
source_id VARCHAR NOT NULL UNIQUE,
issue_id INT NOT NULL REFERENCES issues(id) ON DELETE CASCADE,
body TEXT NOT NULL,
url VARCHAR NOT NULL,
created_at timestamp with time zone NOT NULL DEFAULT (current_timestamp AT TIME ZONE 'UTC'),
updated_at timestamp with time zone NOT NULL DEFAULT (current_timestamp AT TIME ZONE 'UTC')
);
CREATE INDEX IF NOT EXISTS issues_source_id_idx ON issues (source_id);
CREATE INDEX IF NOT EXISTS comments_source_id_idx ON comments (source_id);
CREATE INDEX IF NOT EXISTS issues_embedding_hnsw_idx ON issues USING hnsw (embedding vector_cosine_ops);
CREATE TABLE IF NOT EXISTS jobs (
id SERIAL PRIMARY KEY,
repository_id VARCHAR NOT NULL UNIQUE,
data JSONB NOT NULL,
created_at timestamp with time zone NOT NULL DEFAULT (current_timestamp AT TIME ZONE 'UTC'),
updated_at timestamp with time zone NOT NULL DEFAULT (current_timestamp AT TIME ZONE 'UTC')
);
CREATE INDEX IF NOT EXISTS jobs_repository_id_idx ON jobs (repository_id);