База даних і ORM
SnakeFlow сам визначає ORM або інструмент міграцій за залежностями проєкту та показує відповідні дії в меню Database.
Автовизначені інструменти
| Мова | Що виявляється |
|---|---|
| Node.js | Prisma, Drizzle ORM, TypeORM, Knex |
| Python | Alembic/SQLAlchemy, Django ORM, Tortoise/aerich |
| Go | ent, goose, golang-migrate |
| Rust | Diesel, SeaORM, sqlx-cli |
| PHP | Laravel Artisan, Doctrine Migrations |
| .NET | Entity Framework Core (dotnet ef) |
| Ruby | Rails ActiveRecord (rails db:*) |
| Java | Flyway, Liquibase (Maven і Gradle) |
Власні дії
Повністю замінити автовизначення:
"devManager.database.actions": [ { "label": "Prisma Studio", "command": "${exec} prisma studio", "icon": "database", "cwd": "${dir}" }, { "label": "Generate Client", "command": "${exec} prisma generate", "icon": "zap", "cwd": "${dir}" }, { "label": "Migrate Dev", "command": "${exec} prisma migrate dev", "icon": "arrow-up", "cwd": "${dir}" }, { "label": "DB Reset", "command": "${exec} prisma migrate reset", "icon": "trash", "cwd": "${dir}", "dangerous": true }]Підстановка змінних
| Змінна | Значення |
|---|---|
${exec} | Менеджер пакетів: npx / pnpm exec / yarn / bunx |
${name} | Назва проєкту з налаштувань |
${dir} | Абсолютний шлях до кореня проєкту |
Поля дії
| Поле | Опис |
|---|---|
label | Текст у меню |
command | Shell-команда |
icon | Codicon VS Code (опційно) |
cwd | Робоча директорія (за замовчуванням — корінь) |
dangerous | true — підтвердження перед запуском |
Приклад Django
"devManager.database.actions": [ { "label": "Migrate", "command": "python manage.py migrate", "cwd": "${dir}/backend" }, { "label": "Make Migrations", "command": "python manage.py makemigrations", "cwd": "${dir}/backend" }, { "label": "DB Shell", "command": "python manage.py dbshell", "cwd": "${dir}/backend" }]Приклад Rails
"devManager.database.actions": [ { "label": "Migrate", "command": "rails db:migrate" }, { "label": "Rollback", "command": "rails db:rollback" }, { "label": "Seed", "command": "rails db:seed" }, { "label": "DB Drop", "command": "rails db:drop", "dangerous": true }]