greeta commited on
Commit
9809555
·
verified ·
1 Parent(s): 1e8e39a

Delete schema.sql

Browse files
Files changed (1) hide show
  1. schema.sql +0 -85
schema.sql DELETED
@@ -1,85 +0,0 @@
1
- -- SQL схема для таблицы заданий ФИПИ в Supabase
2
- -- Выполните этот скрипт в SQL Editor вашего проекта Supabase
3
-
4
- -- Создание таблицы для хранения заданий
5
- CREATE TABLE IF NOT EXISTS fipi_tasks (
6
- id BIGSERIAL PRIMARY KEY,
7
- title TEXT NOT NULL,
8
- content TEXT NOT NULL,
9
- source_url TEXT UNIQUE NOT NULL,
10
- task_type TEXT DEFAULT 'other',
11
- images TEXT[] DEFAULT '{}',
12
- variants TEXT[] DEFAULT '{}',
13
- rubert_analysis JSONB DEFAULT '{}',
14
- scraped_at TIMESTAMPTZ DEFAULT NOW(),
15
- created_at TIMESTAMPTZ DEFAULT NOW(),
16
- updated_at TIMESTAMPTZ DEFAULT NOW()
17
- );
18
-
19
- -- Индексы для ускорения поиска
20
- CREATE INDEX IF NOT EXISTS idx_fipi_tasks_task_type ON fipi_tasks(task_type);
21
- CREATE INDEX IF NOT EXISTS idx_fipi_tasks_scraped_at ON fipi_tasks(scraped_at DESC);
22
- CREATE INDEX IF NOT EXISTS idx_fipi_tasks_source_url ON fipi_tasks(source_url);
23
- CREATE INDEX IF NOT EXISTS idx_fipi_tasks_title ON fipi_tasks USING gin(title gin_trgm_ops);
24
- CREATE INDEX IF NOT EXISTS idx_fipi_tasks_content ON fipi_tasks USING gin(content gin_trgm_ops);
25
-
26
- -- Включение расширения для полнотекстового поиска
27
- CREATE EXTENSION IF NOT EXISTS pg_trgm;
28
-
29
- -- RLS (Row Level Security) политики
30
- ALTER TABLE fipi_tasks ENABLE ROW LEVEL SECURITY;
31
-
32
- -- Политика для чтения (публичный доступ)
33
- CREATE POLICY "Public can view all tasks"
34
- ON fipi_tasks
35
- FOR SELECT
36
- USING (true);
37
-
38
- -- Политика для записи (только сервисный ключ)
39
- CREATE POLICY "Service key can insert tasks"
40
- ON fipi_tasks
41
- FOR INSERT
42
- WITH CHECK (true);
43
-
44
- -- Политика для обновления
45
- CREATE POLICY "Service key can update tasks"
46
- ON fipi_tasks
47
- FOR UPDATE
48
- USING (true);
49
-
50
- -- Политика для удаления
51
- CREATE POLICY "Service key can delete tasks"
52
- ON fipi_tasks
53
- FOR DELETE
54
- USING (true);
55
-
56
- -- Триггер для автоматического обновления updated_at
57
- CREATE OR REPLACE FUNCTION update_updated_at_column()
58
- RETURNS TRIGGER AS $$
59
- BEGIN
60
- NEW.updated_at = NOW();
61
- RETURN NEW;
62
- END;
63
- $$ LANGUAGE plpgsql;
64
-
65
- CREATE TRIGGER update_fipi_tasks_updated_at
66
- BEFORE UPDATE ON fipi_tasks
67
- FOR EACH ROW
68
- EXECUTE FUNCTION update_updated_at_column();
69
-
70
- -- Представление для статистики
71
- CREATE OR REPLACE VIEW fipi_tasks_stats AS
72
- SELECT
73
- COUNT(*) as total_tasks,
74
- COUNT(*) FILTER (WHERE task_type = 'writing') as writing_tasks,
75
- COUNT(*) FILTER (WHERE task_type = 'test') as test_tasks,
76
- COUNT(*) FILTER (WHERE task_type = 'listening') as listening_tasks,
77
- COUNT(*) FILTER (WHERE task_type = 'reading') as reading_tasks,
78
- COUNT(*) FILTER (WHERE task_type = 'other') as other_tasks,
79
- MAX(scraped_at) as last_scrape
80
- FROM fipi_tasks;
81
-
82
- -- Комментарий к таблице
83
- COMMENT ON TABLE fipi_tasks IS 'Задания с сайта ФИПИ (fipi.ru) для ЕГЭ и ОГЭ';
84
- COMMENT ON COLUMN fipi_tasks.task_type IS 'Тип задания: writing, test, listening, reading, other';
85
- COMMENT ON COLUMN fipi_tasks.rubert_analysis IS 'Результат анализа через ruBERT (категория, ключевые слова, эмбеддинги)';