-- Google Play Closed Testing group membership tracking on viewer users. CREATE TYPE "GooglePlaySyncStatus" AS ENUM ( 'NOT_ENABLED', 'PENDING_ADD', 'ACTIVE', 'PENDING_REMOVE', 'REMOVED', 'ERROR' ); ALTER TABLE "viewer_users" ADD COLUMN "google_play_email" TEXT, ADD COLUMN "google_play_access" BOOLEAN NOT NULL DEFAULT false, ADD COLUMN "google_play_membership_id" TEXT, ADD COLUMN "google_play_sync_status" "GooglePlaySyncStatus" NOT NULL DEFAULT 'NOT_ENABLED', ADD COLUMN "google_play_last_synced_at" TIMESTAMP(3), ADD COLUMN "google_play_sync_error" TEXT; CREATE TABLE "google_play_access_audit_logs" ( "id" TEXT NOT NULL, "admin_user_id" TEXT, "admin_email" TEXT, "viewer_user_id" TEXT NOT NULL, "target_email" TEXT NOT NULL, "action" TEXT NOT NULL, "result" TEXT NOT NULL, "membership_id" TEXT, "error_message" TEXT, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "google_play_access_audit_logs_pkey" PRIMARY KEY ("id") ); CREATE INDEX "google_play_access_audit_logs_viewer_user_id_created_at_idx" ON "google_play_access_audit_logs"("viewer_user_id", "created_at"); ALTER TABLE "google_play_access_audit_logs" ADD CONSTRAINT "google_play_access_audit_logs_viewer_user_id_fkey" FOREIGN KEY ("viewer_user_id") REFERENCES "viewer_users"("id") ON DELETE CASCADE ON UPDATE CASCADE;