ss14-migrations
Handles dual-engine database migrations for SS14, ensuring consistency between SQLite and PostgreSQL models.
Install
mkdir -p .claude/skills/ss14-migrations && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/13845" && unzip -o skill.zip -d .claude/skills/ss14-migrations && rm skill.zipInstalls to .claude/skills/ss14-migrations
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Руководство по созданию и управлению миграциями баз данных в SS14 (PostgreSQL и SQLite)Key capabilities
- →Create database migrations for SQLite
- →Create database migrations for PostgreSQL
- →Verify migration files for data loss warnings
- →Check compatibility of SQL with specific database engines
- →Remove local migrations before committing
How it works
The skill generates distinct database migration files for both SQLite and PostgreSQL based on changes in the C# data model, ensuring compatibility with each engine's specific data types and SQL dialects.
Inputs & outputs
When to use ss14-migrations
- →Add a new database column in SS14
- →Migrate existing SQL tables
- →Fix startup migration errors
About this skill
🚀 Миграции Баз Данных SS14 (Database Migrations)
Этот навык описывает процесс создания и применения миграций базы данных в Space Station 14. Поскольку SS14 поддерживает и PostgreSQL, и SQLite, все изменения должны быть мигрированы для обоих движков.
🎯 Когда использовать этот навык
- При изменении моделей базы данных (
Model.cs). - При добавлении новых таблиц или столбцов.
- При переименовании или удалении существующих структур БД.
- Когда сервер падает при запуске с ошибкой "Applying Migrations".
⚔️ Система Двойной Миграции
SS14 поддерживает два отдельных набора миграций:
- SQLite Config:
Content.Server.Database/Migrations/Sqlite - PostgreSQL Config:
Content.Server.Database/Migrations/Postgres
Это необходимо, потому что у движков разные типы данных, фичи и диалекты SQL. Одна миграция обычно не может быть применена к обоим сразу.
🛠️ Скрипты-помощники
В репозитории есть скрипты для упрощения добавления миграций сразу в оба контекста:
- Windows (PowerShell):
Content.Server.Database/add-migration.ps1 - Linux/Mac (Bash):
Content.Server.Database/add-migration.sh
📝 Создание Миграции
Предварительные требования
- Запустите базу данных (если используете локальный Postgres).
- Убедитесь, что ваши изменения в
Model.csкомпилируются.
Шаги
-
Перейдите в директорию проекта базы данных:
cd Content.Server.Database -
Запустите скрипт с понятным именем (CamelCase):
./add-migration.ps1 MyNewFeatureЕсли скрипт упал или нужен ручной контроль, вот эквивалентные команды
dotnet ef:# Создание миграции для SQLite dotnet ef migrations add --context SqliteServerDbContext -o Migrations/Sqlite MyNewFeature # Создание миграции для Postgres dotnet ef migrations add --context PostgresServerDbContext -o Migrations/Postgres MyNewFeature -
Проверьте Созданные Файлы:
Migrations/Sqlite/YYYYMMDDHHMMSS_MyNewFeature.csMigrations/Postgres/YYYYMMDDHHMMSS_MyNewFeature.cs
✅ Чек-лист Проверки
- Предупреждения о потере данных: EF Core предупредил, что данные могут быть потеряны (например, при удалении столбца)?
- Совместимость Типов:
- Убедитесь, что миграции SQLite не пытаются использовать типы Postgres, такие как
inetилиjsonb, без конвертации (это должно обрабатываться вDbContext).
- Убедитесь, что миграции SQLite не пытаются использовать типы Postgres, такие как
- Raw SQL: Если вы использовали
migrationBuilder.Sql("..."), убедитесь, что SQL совместим с конкретным движком этой миграции.
🚫 Антипаттерны (Чего НЕ делать)
❌ 1. Забыть про один из движков
Симптом: Сервер работает локально (SQLite), но падает на проде (Postgres) или наоборот. Почему: Рассинхрон схемы БД. EF Core не найдет нужную миграцию. Как надо: Всегда проверяйте, что в обеих папках есть файл миграции с одним таймстампом/именем.
❌ 2. Сложные изменения схемы в SQLite
Проблема: SQLite имеет ограниченную поддержку ALTER TABLE (например, нельзя переименовать столбец или изменить его тип без пересоздания таблицы).
Последствия: EF Core попытается создать временную таблицу, скопировать все данные, удалить старую и переименовать новую. Это очень медленно на больших таблицах и опасно.
Как надо: Избегайте сложных изменений (rename column, change column type) для SQLite, если возможно. Лучше добавить новый столбец и пометить старый как устаревший (Obsolete).
❌ 3. Циклические зависимости при билде
Проблема: Добавление миграции требует сборки проекта, но проект не собирается, так как вы используете новое поле в коде, которого еще нет в БД (или наоборот). Правильный поток:
- Измените
Model.cs(добавьте свойство). - Соберите проект (код компилируется, но БД рассинхронизирована).
- Создайте миграцию.
- Обновите БД (происходит автоматически при старте сервера).
❌ 4. Изменение уже влитых миграций
Плохо: Редактировать файл миграции, который уже был влит в master и задеплоен.
Почему: Это сломает историю миграций у всех остальных разработчиков и на серверах. __EFMigrationsHistory будет содержать хэш старой версии, и EF Core упадет.
Как надо: Если нашли баг в старой миграции — создайте новую миграцию, которая исправляет проблему.
🗑️ Удаление (откат) локальной миграции
Если вы создали миграцию, но передумали (и еще не закоммитили/не влили её):
# Удаляет последнюю миграцию из контекста
dotnet ef migrations remove --context SqliteServerDbContext
dotnet ef migrations remove --context PostgresServerDbContext
When not to use it
- →When the database changes are not for SS14
- →When only one database engine (SQLite or PostgreSQL) is used
Prerequisites
Limitations
- →All changes must be migrated for both PostgreSQL and SQLite.
- →SQLite has limited support for ALTER TABLE operations.
- →Editing already committed migration files is forbidden.
How it compares
This skill automates the creation of dual-engine migrations and provides specific checks for database compatibility, unlike a generic migration tool that might only support one database type or require manual adaptation.
Compared to similar skills
ss14-migrations side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| ss14-migrations (this skill) | 0 | 5mo | No flags | Intermediate |
| drizzle-orm | 32 | 2mo | No flags | Intermediate |
| database-design | 6 | 6mo | Review | Intermediate |
| database-schema-designer | 6 | 6mo | No flags | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
drizzle-orm
EpicenterHQ
Drizzle ORM patterns for type branding and custom types. Use when working with Drizzle column definitions, branded types, or custom type conversions.
database-design
davila7
Database design principles and decision-making. Schema design, indexing strategy, ORM selection, serverless databases.
database-schema-designer
davila7
Design robust, scalable database schemas for SQL and NoSQL databases. Provides normalization guidelines, indexing strategies, migration patterns, constraint design, and performance optimization. Ensures data integrity, query performance, and maintainable data models.
database-migrations-sql-migrations
sickn33
SQL database migrations with zero-downtime strategies for PostgreSQL, MySQL, SQL Server
postgresql-syntax-reference
pgschema
Consult PostgreSQL's parser and grammar (gram.y) to understand SQL syntax, DDL statement structure, and parsing rules when implementing pgschema features
databases
mrgoonie
Work with MongoDB (document database, BSON documents, aggregation pipelines, Atlas cloud) and PostgreSQL (relational database, SQL queries, psql CLI, pgAdmin). Use when designing database schemas, writing queries and aggregations, optimizing indexes for performance, performing database migrations, configuring replication and sharding, implementing backup and restore strategies, managing database users and permissions, analyzing query performance, or administering production databases.