summaryrefslogblamecommitdiff
path: root/makima/migrations/20250110000000_create_owners_table.sql
blob: 7b0d696103ce168fee160f06dc1d2eee22edef40 (plain) (tree)
























                                                                                                            
-- Create owners table for multi-tenant support
-- Owners are the logical entities that own resources (files, tasks, daemons)
-- Users belong to owners via groups

CREATE TABLE IF NOT EXISTS owners (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    name VARCHAR(255) NOT NULL,
    -- 'personal' for individual users, 'organization' for teams
    owner_type VARCHAR(32) NOT NULL DEFAULT 'personal',
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),

    CONSTRAINT valid_owner_type CHECK (owner_type IN ('personal', 'organization'))
);

CREATE INDEX idx_owners_owner_type ON owners(owner_type);

-- Trigger to update updated_at timestamp (reuse existing function)
CREATE TRIGGER update_owners_updated_at
    BEFORE UPDATE ON owners
    FOR EACH ROW
    EXECUTE FUNCTION update_updated_at_column();

COMMENT ON TABLE owners IS 'Logical entities that own resources. Users access owners via group membership.';
COMMENT ON COLUMN owners.owner_type IS 'Type of owner: personal (single user) or organization (team)';