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