Admins can enable or revoke store access per viewer; membership syncs to a configurable Google Group without changing app auth. Co-authored-by: Cursor <cursoragent@cursor.com>
39 lines
1.3 KiB
SQL
39 lines
1.3 KiB
SQL
-- 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;
|