feat(sim-builder): фаза 3 — БД custom_sims + CRUD API с валидацией спеки и проверкой владения
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
-- ═══════════════════════════════════════════════════════════════
|
||||
-- 071: Custom simulations (Конструктор симуляций / SimForge), Фаза 3.
|
||||
--
|
||||
-- Учитель/админ собирает интерактивную 2D-симуляцию из ДАННЫХ (JSON-спека:
|
||||
-- params[], objects[], physics{}, …) и сохраняет её здесь. Спека хранится как
|
||||
-- TEXT(JSON) в spec_json; её схема/лимиты валидируются на входе сервером
|
||||
-- (validateSpec), БЕЗ исполнения. status='draft' видит только владелец;
|
||||
-- status='published' — публичная (видна всем в каталоге /lab, Фаза 5).
|
||||
--
|
||||
-- owner_id ON DELETE CASCADE — спеки удаляются вместе с автором.
|
||||
-- ═══════════════════════════════════════════════════════════════
|
||||
|
||||
CREATE TABLE IF NOT EXISTS custom_sims (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
owner_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
title TEXT,
|
||||
description TEXT,
|
||||
subject TEXT, -- курикулум (напр. 'physics')
|
||||
grade INTEGER, -- класс
|
||||
cat TEXT, -- категория каталога (math|phys|chem|bio|game)
|
||||
spec_json TEXT NOT NULL, -- JSON-спека (данные, не код)
|
||||
status TEXT NOT NULL DEFAULT 'draft', -- draft | published
|
||||
version INTEGER NOT NULL DEFAULT 1, -- ++ на каждом update
|
||||
created_at TEXT DEFAULT (datetime('now')),
|
||||
updated_at TEXT
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_custom_sims_owner ON custom_sims (owner_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_custom_sims_status ON custom_sims (status);
|
||||
Reference in New Issue
Block a user