Ctrl K
ComunidadGuías…

drizzle/0076_multi_public_status_pages_manual.sql

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
CREATE TABLE IF NOT EXISTS public_status_pages (
  id text PRIMARY KEY,
  user_id text NOT NULL REFERENCES users(id) ON DELETE CASCADE,
  company_id text REFERENCES companies(id) ON DELETE CASCADE,
  slug varchar(120) NOT NULL,
  title varchar(160),
  summary text,
  is_enabled boolean NOT NULL DEFAULT true,
  created_at timestamptz NOT NULL DEFAULT now(),
  updated_at timestamptz NOT NULL DEFAULT now()
);

CREATE UNIQUE INDEX IF NOT EXISTS public_status_pages_slug_unique
  ON public_status_pages (slug);

CREATE UNIQUE INDEX IF NOT EXISTS public_status_pages_user_company_unique
  ON public_status_pages (user_id, company_id)
  WHERE company_id IS NOT NULL;

CREATE UNIQUE INDEX IF NOT EXISTS public_status_pages_user_workspace_unique
  ON public_status_pages (user_id)
  WHERE company_id IS NULL;

CREATE INDEX IF NOT EXISTS public_status_pages_user_created_idx
  ON public_status_pages (user_id, created_at);

INSERT INTO public_status_pages (
  id,
  user_id,
  company_id,
  slug,
  title,
  summary,
  is_enabled,
  created_at,
  updated_at
)
SELECT
  'legacy-' || md5(settings.user_id || ':' || settings.public_status_slug),
  settings.user_id,
  company.id,
  settings.public_status_slug,
  settings.public_status_title,
  settings.public_status_summary,
  settings.public_status_enabled
    AND (settings.public_status_company_id IS NULL OR company.id IS NOT NULL),
  settings.created_at,
  settings.updated_at
FROM user_settings AS settings
LEFT JOIN companies AS company
  ON company.id = settings.public_status_company_id
  AND company.user_id = settings.user_id
  AND company.deleted_at IS NULL
WHERE settings.public_status_slug IS NOT NULL
  AND length(btrim(settings.public_status_slug)) >= 3
ON CONFLICT DO NOTHING;