← back to Ventura Claw Leads

db/migrations/007_business_invitations.sql

20 lines

-- Multi-user-per-business via invite-teammate flow.
-- The existing schema (003_business_users_and_claims.sql) already has
-- UNIQUE (business_id, email) on business_users so multiple users per
-- business is allowed at the table level — we just lacked a flow to
-- create the second+ user. This migration adds that flow.

CREATE TABLE IF NOT EXISTS business_invitations (
  id              BIGSERIAL PRIMARY KEY,
  token           TEXT UNIQUE NOT NULL,                   -- HMAC, 32 chars
  business_id     BIGINT NOT NULL REFERENCES businesses(id) ON DELETE CASCADE,
  email           TEXT NOT NULL,                          -- recipient
  invited_by_user_id BIGINT NOT NULL REFERENCES business_users(id) ON DELETE SET NULL,
  issued_at       TIMESTAMPTZ NOT NULL DEFAULT now(),
  expires_at      TIMESTAMPTZ NOT NULL,
  consumed_at     TIMESTAMPTZ,
  ip_hash         TEXT
);
CREATE INDEX IF NOT EXISTS business_invitations_business_idx ON business_invitations (business_id);
CREATE INDEX IF NOT EXISTS business_invitations_active_idx ON business_invitations (token) WHERE consumed_at IS NULL;