Spaces:
Sleeping
Sleeping
Download backend/sql/016_schedule_audio_files.sql from stylevoice/talk: direct link, hf CLI and curl.
- Browser
- Download file 2.41 kB
-
https://huggingface.co/spaces/stylevoice/talk/resolve/main/backend/sql/016_schedule_audio_files.sql
- Command line
-
hf download hf://spaces/stylevoice/talk/backend/sql/016_schedule_audio_files.sql
-
curl -L -o 016_schedule_audio_files.sql https://huggingface.co/spaces/stylevoice/talk/resolve/main/backend/sql/016_schedule_audio_files.sql
2.41 kB
| -- μ€μΌμ€ μμ½ μμ± νμΌ ν΄λΌμ°λ 보κ΄. | |
| -- | |
| -- μ μ± : μ¬μ©μκ° μ€μΌμ€ μμ½ μ λͺ μμ λμ β νλ μ΄λ¦¬μ€νΈ νλͺ©λ€μ wav λ₯Ό | |
| -- λ³ν©ν΄ Supabase Storage μ μ λ‘λ. μλ¦Ό ν΄λ¦ μ κ·Έ λ¨μΌ νμΌ μ¬μ β TTS | |
| -- μ¬ν©μ± λΆν 0, cache miss 0. | |
| -- | |
| -- μ°¨λ³ν λ©μμ§μ μΌμΉ: μμ λν / Voice Contents λ λΉμ μ₯ κ·Έλλ‘, | |
| -- μ€μΌμ€ μμ½μ μ¬μ©μ λͺ μ λμ + ν΄λΌμ°λ λ³΄κ΄ λͺ μ. | |
| ALTER TABLE public.playlist_schedules | |
| ADD COLUMN IF NOT EXISTS audio_file_url TEXT, -- public/signed URL | |
| ADD COLUMN IF NOT EXISTS audio_file_path TEXT, -- storage path (μμ μ©) | |
| ADD COLUMN IF NOT EXISTS audio_uploaded_at TIMESTAMPTZ; | |
| -- μ€μΌμ€ cascade μμ μ audio_file_path κ° μ΄μμλ storage νμΌ cleanup μ | |
| -- λ³λ cron λλ schedule_service.delete_schedule μμ μ²λ¦¬. | |
| -- βββββββββ Supabase Storage bucket βββββββββ | |
| -- bucket μμ±μ Dashboard μμ μ§μ νκ±°λ, μλ INSERT λ‘ κ°λ₯. | |
| INSERT INTO storage.buckets (id, name, public) | |
| VALUES ('scheduled-audio', 'scheduled-audio', false) | |
| ON CONFLICT (id) DO NOTHING; | |
| -- RLS: λ³ΈμΈ ν΄λ(<user_id>/) λ§ μ½κΈ°/μ°κΈ°/μμ . signed URL μ RLS μ°ν. | |
| DROP POLICY IF EXISTS scheduled_audio_own_select ON storage.objects; | |
| CREATE POLICY scheduled_audio_own_select ON storage.objects | |
| FOR SELECT TO authenticated | |
| USING ( | |
| bucket_id = 'scheduled-audio' | |
| AND (auth.uid()::text = (storage.foldername(name))[1]) | |
| ); | |
| DROP POLICY IF EXISTS scheduled_audio_own_insert ON storage.objects; | |
| CREATE POLICY scheduled_audio_own_insert ON storage.objects | |
| FOR INSERT TO authenticated | |
| WITH CHECK ( | |
| bucket_id = 'scheduled-audio' | |
| AND (auth.uid()::text = (storage.foldername(name))[1]) | |
| ); | |
| DROP POLICY IF EXISTS scheduled_audio_own_update ON storage.objects; | |
| CREATE POLICY scheduled_audio_own_update ON storage.objects | |
| FOR UPDATE TO authenticated | |
| USING ( | |
| bucket_id = 'scheduled-audio' | |
| AND (auth.uid()::text = (storage.foldername(name))[1]) | |
| ); | |
| DROP POLICY IF EXISTS scheduled_audio_own_delete ON storage.objects; | |
| CREATE POLICY scheduled_audio_own_delete ON storage.objects | |
| FOR DELETE TO authenticated | |
| USING ( | |
| bucket_id = 'scheduled-audio' | |
| AND (auth.uid()::text = (storage.foldername(name))[1]) | |
| ); | |