-- Create a trigger function that automatically creates tablo_access when a new tablo is created
CREATE OR REPLACE FUNCTION create_tablo_access_for_owner()
RETURNS TRIGGER
SECURITY DEFINER
AS $$
BEGIN
    -- Insert a tablo_access record for the tablo owner
    INSERT INTO tablo_access (
        tablo_id,
        user_id,
        granted_by,
        is_active,
        is_admin
    ) VALUES (
        NEW.id,           -- tablo_id: the newly created tablo's id
        NEW.owner_id,     -- user_id: the tablo owner gets access
        NEW.owner_id,     -- granted_by: self-granted by the owner
        TRUE,             -- is_active: access is active
        TRUE              -- is_admin: owner has admin privileges
    );
    
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

-- Create the trigger that fires after INSERT on tablos table
CREATE TRIGGER trigger_create_tablo_access
    AFTER INSERT ON tablos
    FOR EACH ROW
    EXECUTE FUNCTION create_tablo_access_for_owner();

-- Add a comment to document the trigger
COMMENT ON TRIGGER trigger_create_tablo_access ON tablos IS 
    'Automatically creates tablo_access record for the tablo owner when a new tablo is created'; 