-- CreateTable
CREATE TABLE IF NOT EXISTS "CompanyPhone" (
    "id" TEXT NOT NULL,
    "companyId" TEXT NOT NULL,
    "label" TEXT,
    "phone" TEXT NOT NULL,
    "sortOrder" INTEGER NOT NULL DEFAULT 0,
    "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "updatedAt" TIMESTAMP(3) NOT NULL,

    CONSTRAINT "CompanyPhone_pkey" PRIMARY KEY ("id")
);

-- CreateTable
CREATE TABLE IF NOT EXISTS "CompanyLocation" (
    "id" TEXT NOT NULL,
    "companyId" TEXT NOT NULL,
    "name" TEXT,
    "address" TEXT NOT NULL,
    "phone" TEXT,
    "lat" DOUBLE PRECISION,
    "lng" DOUBLE PRECISION,
    "cityId" TEXT,
    "municipalityId" TEXT,
    "neighborhoodId" TEXT,
    "sortOrder" INTEGER NOT NULL DEFAULT 0,
    "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "updatedAt" TIMESTAMP(3) NOT NULL,

    CONSTRAINT "CompanyLocation_pkey" PRIMARY KEY ("id")
);

-- CreateIndex
CREATE INDEX IF NOT EXISTS "CompanyPhone_companyId_sortOrder_idx" ON "CompanyPhone"("companyId", "sortOrder");

-- CreateIndex
CREATE INDEX IF NOT EXISTS "CompanyLocation_companyId_sortOrder_idx" ON "CompanyLocation"("companyId", "sortOrder");

-- CreateIndex
CREATE INDEX IF NOT EXISTS "CompanyLocation_cityId_municipalityId_neighborhoodId_idx" ON "CompanyLocation"("cityId", "municipalityId", "neighborhoodId");

ALTER TABLE IF EXISTS public."CompanyPhone" ENABLE ROW LEVEL SECURITY;
ALTER TABLE IF EXISTS public."CompanyLocation" ENABLE ROW LEVEL SECURITY;

-- AddForeignKey
DO $$
BEGIN
  IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'CompanyPhone_companyId_fkey') THEN
    ALTER TABLE "CompanyPhone" ADD CONSTRAINT "CompanyPhone_companyId_fkey" FOREIGN KEY ("companyId") REFERENCES "Company"("id") ON DELETE CASCADE ON UPDATE CASCADE;
  END IF;
  IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'CompanyLocation_companyId_fkey') THEN
    ALTER TABLE "CompanyLocation" ADD CONSTRAINT "CompanyLocation_companyId_fkey" FOREIGN KEY ("companyId") REFERENCES "Company"("id") ON DELETE CASCADE ON UPDATE CASCADE;
  END IF;
  IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'CompanyLocation_cityId_fkey') THEN
    ALTER TABLE "CompanyLocation" ADD CONSTRAINT "CompanyLocation_cityId_fkey" FOREIGN KEY ("cityId") REFERENCES "RegionNode"("id") ON DELETE SET NULL ON UPDATE CASCADE;
  END IF;
  IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'CompanyLocation_municipalityId_fkey') THEN
    ALTER TABLE "CompanyLocation" ADD CONSTRAINT "CompanyLocation_municipalityId_fkey" FOREIGN KEY ("municipalityId") REFERENCES "RegionNode"("id") ON DELETE SET NULL ON UPDATE CASCADE;
  END IF;
  IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'CompanyLocation_neighborhoodId_fkey') THEN
    ALTER TABLE "CompanyLocation" ADD CONSTRAINT "CompanyLocation_neighborhoodId_fkey" FOREIGN KEY ("neighborhoodId") REFERENCES "RegionNode"("id") ON DELETE SET NULL ON UPDATE CASCADE;
  END IF;
END $$;
