Mobile support to come.
..20260117042027_create_users.down.sql20260117042027_create_users.up.sql20260117043157_create_organizations.down.sql20260117043157_create_organizations.up.sql20260118222626_create_repositories.down.sql20260118222626_create_repositories.up.sql20260125182548_create_questions.down.sql20260125182548_create_questions.up.sql20260126215900_create_votes.down.sql20260126215900_create_votes.up.sql20260201050312_create_oauth.down.sql20260201050312_create_oauth.up.sql20260206190315_create_commits.down.sql20260206190315_create_commits.up.sql20260207120000_disable_auth_user_trigger.down.sql20260207120000_disable_auth_user_trigger.up.sql
-- Create repository owner type enum
CREATE TYPE repository_owner_type AS ENUM ('user', 'organization');
-- Create repository visibility enum
CREATE TYPE repository_visibility AS ENUM ('public', 'private');
-- Create repositories table
CREATE TABLE IF NOT EXISTS repositories (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name VARCHAR(100) NOT NULL,
owner_id UUID NOT NULL,
owner_name VARCHAR(100) NOT NULL,
owner_type repository_owner_type NOT NULL,
visibility repository_visibility NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
UNIQUE(owner_id, name)
);
-- Create indexes for better query performance
CREATE INDEX idx_repositories_name ON repositories(name);
CREATE INDEX idx_repositories_owner_id ON repositories(owner_id);
CREATE INDEX idx_repositories_visibility ON repositories(visibility);