-- Бинго «Баланс 2.0» — схема SQLite (применяется сервером при каждом старте, повторно безопасно). -- Хранятся только анонимные данные: случайный id устройства, неделя, номер клетки, ответ опроса. -- Никаких имён, email, IP и времени событий. -- Текущие отметки: одна строка = одна клетка, отмеченная устройством на неделе. -- Первичный ключ не даёт отметить одну клетку дважды за неделю с одного устройства. CREATE TABLE IF NOT EXISTS marks ( device TEXT NOT NULL, week TEXT NOT NULL, -- понедельник недели, 'YYYY-MM-DD' cell INTEGER NOT NULL CHECK (cell BETWEEN 1 AND 16), PRIMARY KEY (device, week, cell) ) WITHOUT ROWID; -- Мини-опрос «Твоя батарейка сейчас?»: один ответ на устройство в неделю (можно поменять). CREATE TABLE IF NOT EXISTS pulse ( device TEXT NOT NULL, week TEXT NOT NULL, answer TEXT NOT NULL CHECK (answer IN ('full', 'mid', 'low')), PRIMARY KEY (device, week) ) WITHOUT ROWID; -- Кэш общей суммы шагов: пересчитывается при каждой отметке, -- поэтому опрос батарейки читает одну строку. CREATE TABLE IF NOT EXISTS totals ( key TEXT PRIMARY KEY, value INTEGER NOT NULL ); INSERT OR IGNORE INTO totals (key, value) VALUES ('steps', 0);