-- =============================================================================
-- Superset 唯讀用戶設定
-- 用於 UAT 和 GCP 環境的 PostgreSQL 資料庫
-- =============================================================================

-- 建立唯讀用戶 (在 UAT 資料庫執行)
-- 連線到 momo_analytics 資料庫後執行

-- 1. 建立唯讀角色
CREATE ROLE superset_readonly WITH LOGIN PASSWORD 'Wooo_Superset_RO_2026';

-- 2. 授予連線權限
GRANT CONNECT ON DATABASE momo_analytics TO superset_readonly;

-- 3. 授予 schema 使用權限
GRANT USAGE ON SCHEMA public TO superset_readonly;

-- 4. 授予所有現有資料表的 SELECT 權限
GRANT SELECT ON ALL TABLES IN SCHEMA public TO superset_readonly;

-- 5. 設定預設權限 (新建立的資料表也會自動授權)
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO superset_readonly;

-- 6. 授予序列讀取權限 (某些查詢可能需要)
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO superset_readonly;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON SEQUENCES TO superset_readonly;

-- =============================================================================
-- 驗證權限
-- =============================================================================
-- 使用 superset_readonly 用戶連線後測試：
-- SELECT * FROM products LIMIT 5;
-- SELECT * FROM daily_sales_snapshot LIMIT 5;
-- SELECT * FROM price_records LIMIT 5;

-- =============================================================================
-- 連線字串 (供 Superset 使用)
-- =============================================================================
-- UAT 環境:
-- postgresql+psycopg2://superset_readonly:Wooo_Superset_RO_2026@momo-postgres:5432/momo_analytics
--
-- GCP 環境 (需要從 UAT 連線):
-- postgresql+psycopg2://superset_readonly:Wooo_Superset_RO_2026@35.194.233.141:5432/momo_analytics

-- =============================================================================
-- 撤銷權限 (如需移除)
-- =============================================================================
-- REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM superset_readonly;
-- REVOKE ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public FROM superset_readonly;
-- REVOKE USAGE ON SCHEMA public FROM superset_readonly;
-- REVOKE CONNECT ON DATABASE momo_analytics FROM superset_readonly;
-- DROP ROLE superset_readonly;
