Spaces:
Sleeping
Sleeping
File size: 2,799 Bytes
aa9892b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | -- 022: ๋ค์ดํฐ๋ธ ์ฑ (iOS/Android) FCM ํธ์ ์ฑ๋ ์ถ๊ฐ
--
-- ๋ฐฐ๊ฒฝ:
-- - 2026-05-05 SQL 017 ์์ Web Push ํ๊ธฐ (push_subscriptions DROP).
-- - 2026-05-10 iOS/Android ๋ค์ดํฐ๋ธ ์ฑ ๋ฐฐํฌ ์๋ฃ โ FCM ์ผ๋ก ํธ์ ๋ถํ.
-- - ํ๊ท ๊ฐ๋ (playlist_scheduling.md): "push_subscriptions ๋ถํ ๊ธ์ง, ์ ํธ์
-- ์ฑ๋์ ๋ณ๋ ํ
์ด๋ธ" โ ๋ณธ ๋ง์ด๊ทธ๋ ์ด์
์ device_push_tokens ๋ผ๋ ์ ์ด๋ฆ ์ฌ์ฉ.
--
-- ์ ์ฉ ์ผ์: 2026-05-10
-- 1) device_push_tokens โ ์ฌ์ฉ์ ๋จ๋ง๋ณ FCM registration token ๋ณด๊ด.
-- ํ ์ฌ์ฉ์๊ฐ ์ฌ๋ฌ ๋จ๋ง ์ฌ์ฉ ๊ฐ๋ฅ (iPhone + iPad + Android ๋ฑ) โ composite key.
CREATE TABLE IF NOT EXISTS device_push_tokens (
user_id UUID NOT NULL REFERENCES auth.users(id) ON DELETE CASCADE,
token TEXT NOT NULL,
platform TEXT NOT NULL CHECK (platform IN ('ios', 'android')),
app_version TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
PRIMARY KEY (user_id, token)
);
CREATE INDEX IF NOT EXISTS idx_device_push_tokens_user
ON device_push_tokens (user_id);
-- ๊ฐ์ ํ ํฐ์ด ๋ค๋ฅธ user ๋ก ์ฎ๊ฒจ๊ฐ๋ ์ผ์ด์ค (๋จ๋ง ์๋/์ฌ๋ก๊ทธ์ธ) โ ํ ํฐ ๊ธฐ์ค
-- ์ผ๋ก๋ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ user ํ ์ ๋ฆฌํ ์ ์๊ฒ.
CREATE INDEX IF NOT EXISTS idx_device_push_tokens_token
ON device_push_tokens (token);
-- RLS โ ๋ณธ์ธ ํ ํฐ๋ง read/write. ๋ฐ์ก์ ์๋ฒ(service_role)๊ฐ ์ง์ query.
ALTER TABLE device_push_tokens ENABLE ROW LEVEL SECURITY;
DROP POLICY IF EXISTS "device_push_tokens_self_select" ON device_push_tokens;
CREATE POLICY "device_push_tokens_self_select" ON device_push_tokens
FOR SELECT USING (auth.uid() = user_id);
DROP POLICY IF EXISTS "device_push_tokens_self_insert" ON device_push_tokens;
CREATE POLICY "device_push_tokens_self_insert" ON device_push_tokens
FOR INSERT WITH CHECK (auth.uid() = user_id);
DROP POLICY IF EXISTS "device_push_tokens_self_update" ON device_push_tokens;
CREATE POLICY "device_push_tokens_self_update" ON device_push_tokens
FOR UPDATE USING (auth.uid() = user_id);
DROP POLICY IF EXISTS "device_push_tokens_self_delete" ON device_push_tokens;
CREATE POLICY "device_push_tokens_self_delete" ON device_push_tokens
FOR DELETE USING (auth.uid() = user_id);
-- 2) playlist_schedules.notify_app_push โ ์ค์ผ์ค ๋ฐ์ฌ ์ FCM ํธ์๋ ๋ณด๋ผ์ง.
-- SQL 017 ์ notify_kakao ์ ๋
๋ฆฝ. ๋ ๋ค ์ผ๋ฉด ๋ ๋ค ๋ฐ์ก.
ALTER TABLE playlist_schedules
ADD COLUMN IF NOT EXISTS notify_app_push BOOLEAN NOT NULL DEFAULT FALSE;
-- 3) care_messages ๋ ๋์ผ ์ฑ๋ ์ถ๊ฐ (์๋ถ ๋ฉ์์ง๋ ํธ์ ์ต์
๊ฐ๋ฅํ๋๋ก).
ALTER TABLE care_messages
ADD COLUMN IF NOT EXISTS notify_app_push BOOLEAN NOT NULL DEFAULT FALSE;
|