mirror of
https://github.com/lucasrcsantana/story-generator.git
synced 2025-12-17 13:57:51 +00:00
Some checks are pending
Docker Build and Push / build (push) Waiting to run
- Cria estrutura completa de banco de dados para exerc��cios f��nicos - Implementa tabelas para categorias, tipos, exerc��cios e palavras - Adiciona sistema de progresso e conquistas do estudante - Configura pol��ticas de seguran��a RLS para prote����o dos dados - Otimiza performance com ��ndices e relacionamentos apropriados BREAKING CHANGE: Nova estrutura de banco de dados para exerc��cios f��nicos
124 lines
4.1 KiB
SQL
124 lines
4.1 KiB
SQL
-- Enable RLS
|
|
ALTER TABLE phonics_exercise_categories ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE phonics_exercise_types ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE phonics_exercises ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE phonics_words ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE phonics_exercise_words ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE media_types ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE phonics_exercise_media ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE student_phonics_progress ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE student_phonics_attempts ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE student_phonics_attempt_answers ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE achievement_types ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE phonics_achievements ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE student_phonics_achievements ENABLE ROW LEVEL SECURITY;
|
|
|
|
-- Políticas para categorias
|
|
CREATE POLICY "Categorias visíveis para usuários autenticados"
|
|
ON phonics_exercise_categories FOR SELECT
|
|
TO authenticated
|
|
USING (true);
|
|
|
|
-- Políticas para tipos de exercícios
|
|
CREATE POLICY "Tipos de exercícios visíveis para usuários autenticados"
|
|
ON phonics_exercise_types FOR SELECT
|
|
TO authenticated
|
|
USING (true);
|
|
|
|
-- Políticas para exercícios
|
|
CREATE POLICY "Exercícios visíveis para usuários autenticados"
|
|
ON phonics_exercises FOR SELECT
|
|
TO authenticated
|
|
USING (is_active = true);
|
|
|
|
-- Políticas para palavras
|
|
CREATE POLICY "Palavras visíveis para usuários autenticados"
|
|
ON phonics_words FOR SELECT
|
|
TO authenticated
|
|
USING (true);
|
|
|
|
-- Políticas para relação exercício-palavras
|
|
CREATE POLICY "Relações exercício-palavras visíveis para usuários autenticados"
|
|
ON phonics_exercise_words FOR SELECT
|
|
TO authenticated
|
|
USING (true);
|
|
|
|
-- Políticas para tipos de mídia
|
|
CREATE POLICY "Tipos de mídia visíveis para usuários autenticados"
|
|
ON media_types FOR SELECT
|
|
TO authenticated
|
|
USING (true);
|
|
|
|
-- Políticas para mídia dos exercícios
|
|
CREATE POLICY "Mídia dos exercícios visível para usuários autenticados"
|
|
ON phonics_exercise_media FOR SELECT
|
|
TO authenticated
|
|
USING (true);
|
|
|
|
-- Políticas para progresso do estudante
|
|
CREATE POLICY "Progresso visível apenas para o próprio estudante"
|
|
ON student_phonics_progress FOR SELECT
|
|
TO authenticated
|
|
USING (auth.uid() = student_id);
|
|
|
|
CREATE POLICY "Progresso pode ser inserido pelo próprio estudante"
|
|
ON student_phonics_progress FOR INSERT
|
|
TO authenticated
|
|
WITH CHECK (auth.uid() = student_id);
|
|
|
|
CREATE POLICY "Progresso pode ser atualizado pelo próprio estudante"
|
|
ON student_phonics_progress FOR UPDATE
|
|
TO authenticated
|
|
USING (auth.uid() = student_id)
|
|
WITH CHECK (auth.uid() = student_id);
|
|
|
|
-- Políticas para tentativas
|
|
CREATE POLICY "Tentativas visíveis apenas para o próprio estudante"
|
|
ON student_phonics_attempts FOR SELECT
|
|
TO authenticated
|
|
USING (auth.uid() = student_id);
|
|
|
|
CREATE POLICY "Tentativas podem ser inseridas pelo próprio estudante"
|
|
ON student_phonics_attempts FOR INSERT
|
|
TO authenticated
|
|
WITH CHECK (auth.uid() = student_id);
|
|
|
|
-- Políticas para respostas das tentativas
|
|
CREATE POLICY "Respostas visíveis apenas para o próprio estudante"
|
|
ON student_phonics_attempt_answers FOR SELECT
|
|
TO authenticated
|
|
USING (EXISTS (
|
|
SELECT 1 FROM student_phonics_attempts
|
|
WHERE id = attempt_id AND student_id = auth.uid()
|
|
));
|
|
|
|
CREATE POLICY "Respostas podem ser inseridas pelo próprio estudante"
|
|
ON student_phonics_attempt_answers FOR INSERT
|
|
TO authenticated
|
|
WITH CHECK (EXISTS (
|
|
SELECT 1 FROM student_phonics_attempts
|
|
WHERE id = attempt_id AND student_id = auth.uid()
|
|
));
|
|
|
|
-- Políticas para tipos de conquistas
|
|
CREATE POLICY "Tipos de conquistas visíveis para usuários autenticados"
|
|
ON achievement_types FOR SELECT
|
|
TO authenticated
|
|
USING (true);
|
|
|
|
-- Políticas para conquistas
|
|
CREATE POLICY "Conquistas visíveis para usuários autenticados"
|
|
ON phonics_achievements FOR SELECT
|
|
TO authenticated
|
|
USING (true);
|
|
|
|
-- Políticas para conquistas do estudante
|
|
CREATE POLICY "Conquistas do estudante visíveis apenas para o próprio estudante"
|
|
ON student_phonics_achievements FOR SELECT
|
|
TO authenticated
|
|
USING (auth.uid() = student_id);
|
|
|
|
CREATE POLICY "Conquistas podem ser inseridas pelo próprio estudante"
|
|
ON student_phonics_achievements FOR INSERT
|
|
TO authenticated
|
|
WITH CHECK (auth.uid() = student_id); |