From b99c3f19bc562bb1095a87cc0767841ebea1ad2d Mon Sep 17 00:00:00 2001 From: Crimson Date: Wed, 4 Mar 2026 02:46:02 +0500 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B5=D0=BD=D1=82=D0=B0?= =?UTF-8?q?=D1=80=D0=B8=D0=B8=20=D0=B4=D0=BB=D1=8F=20=D0=BD=D0=B0=D1=87?= =?UTF-8?q?=D0=B8=D0=BD=D0=B0=D1=8E=D1=89=D0=B8=D1=85=20=D0=BF=D0=BE=20?= =?UTF-8?q?=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B5=20=D0=91?= =?UTF-8?q?=D0=94=20=D0=B8=20WAL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/db/migrate/20260303180000_create_cards.rb | 9 +++++++++ config/db/migrate/20260303200000_enable_sqlite_wal.rb | 9 +++++++++ config/settings.rb | 6 ++++++ 3 files changed, 24 insertions(+) diff --git a/config/db/migrate/20260303180000_create_cards.rb b/config/db/migrate/20260303180000_create_cards.rb index 7c7077c..0eb69ae 100644 --- a/config/db/migrate/20260303180000_create_cards.rb +++ b/config/db/migrate/20260303180000_create_cards.rb @@ -1,14 +1,23 @@ Sequel.migration do change do + # Создаём таблицу карт. + # + # `change` здесь удобен тем, что Sequel умеет автоматически + # откатить `create_table` при rollback. create_table :cards do primary_key :id + # Базовые поля карточки column :name, String, null: false column :elixir_cost, Integer, null: false column :rarity, String column :type, String + + # 0/1 флаг: карточка в актуальной мете или нет. + # Можно позже заменить на true/false, если решим хранить boolean. column :is_meta, Integer, default: 0 + # Технические таймстемпы для аудита и сортировки column :created_at, DateTime, null: false, default: Sequel::CURRENT_TIMESTAMP column :updated_at, DateTime, null: false, default: Sequel::CURRENT_TIMESTAMP end diff --git a/config/db/migrate/20260303200000_enable_sqlite_wal.rb b/config/db/migrate/20260303200000_enable_sqlite_wal.rb index 115f0e6..4ae9254 100644 --- a/config/db/migrate/20260303200000_enable_sqlite_wal.rb +++ b/config/db/migrate/20260303200000_enable_sqlite_wal.rb @@ -1,11 +1,20 @@ Sequel.migration do up do + # WAL (Write-Ahead Logging) обычно лучше для веб-приложений: + # - чтение и запись меньше блокируют друг друга + # - выше стабильность под параллельной нагрузкой run "PRAGMA journal_mode = WAL;" + + # Нормальный компромисс между скоростью и надёжностью на dev/staging. + # Для максимально консервативного режима можно использовать FULL. run "PRAGMA synchronous = NORMAL;" end down do + # Откат к классическому режиму журнала SQLite. run "PRAGMA journal_mode = DELETE;" + + # Более строгая синхронизация при откате настроек. run "PRAGMA synchronous = FULL;" end end diff --git a/config/settings.rb b/config/settings.rb index d18a61f..72b8c4e 100644 --- a/config/settings.rb +++ b/config/settings.rb @@ -2,6 +2,12 @@ module ClashDeckGenerator2 class Settings < Hanami::Settings + # Главный URL базы данных для приложения. + # + # Берётся из переменной окружения DATABASE_URL (см. .env). + # Пример для текущего проекта: sqlite://db/db.sqlite3 + # + # Важно: Hanami CLI использует это значение в командах db prepare/migrate. setting :database_url, constructor: Types::String end end