ormed_cli 0.1.0-dev copy "ormed_cli: ^0.1.0-dev" to clipboard
ormed_cli: ^0.1.0-dev copied to clipboard

Command-line tooling for the routed ORM (migrations generator & runner).

ormed_cli #

License: MIT Documentation Buy Me A Coffee

Command-line interface for the ormed ORM. Provides migration management, schema operations, seeding, and project scaffolding—similar to Laravel's Artisan CLI.

Installation #

dev_dependencies:
  ormed_cli: ^0.1.0

The CLI is available as the orm executable:

dart run ormed_cli:orm <command>

Commands #

Project Initialization #

# Scaffold orm.yaml, migration registry, and directories
dart run ormed_cli:orm init

# Overwrite existing files
dart run ormed_cli:orm init --force

# Scan and register existing migrations/seeders
dart run ormed_cli:orm init --populate-existing

Migration Management #

# Create a new migration
dart run ormed_cli:orm make --name create_users_table
dart run ormed_cli:orm make --name create_posts_table --create --table posts
dart run ormed_cli:orm make --name add_column --format sql  # SQL format instead of Dart

# Run pending migrations
dart run ormed_cli:orm migrate
dart run ormed_cli:orm migrate --pretend      # Preview SQL without executing
dart run ormed_cli:orm migrate --step         # Apply one migration at a time
dart run ormed_cli:orm migrate --seed         # Run default seeder after
dart run ormed_cli:orm migrate --force        # Skip production confirmation

# Rollback migrations
dart run ormed_cli:orm migrate:rollback              # Rollback 1 migration
dart run ormed_cli:orm migrate:rollback --steps 3    # Rollback 3 migrations
dart run ormed_cli:orm migrate:rollback --batch 2    # Rollback specific batch
dart run ormed_cli:orm migrate:rollback --pretend    # Preview rollback SQL

# Reset/Refresh
dart run ormed_cli:orm migrate:reset      # Rollback ALL migrations
dart run ormed_cli:orm migrate:refresh    # Reset + re-migrate
dart run ormed_cli:orm migrate:fresh      # Drop all tables + re-migrate
dart run ormed_cli:orm migrate:fresh --seed

# Migration status
dart run ormed_cli:orm migrate:status
dart run ormed_cli:orm migrate:status --pending  # Only show pending

# Export SQL files
dart run ormed_cli:orm migrate:export        # Export pending migrations
dart run ormed_cli:orm migrate:export --all  # Export all migrations

Database Operations #

# Run seeders
dart run ormed_cli:orm seed
dart run ormed_cli:orm seed --class UserSeeder  # Specific seeder
dart run ormed_cli:orm seed --pretend           # Preview SQL

# Wipe database
dart run ormed_cli:orm db:wipe --force
dart run ormed_cli:orm db:wipe --drop-views

# Schema operations
dart run ormed_cli:orm schema:dump
dart run ormed_cli:orm schema:dump --prune  # Delete migration files after dump
dart run ormed_cli:orm schema:describe
dart run ormed_cli:orm schema:describe --json

Multi-Database Support #

# Target specific connection
dart run ormed_cli:orm migrate --connection analytics
dart run ormed_cli:orm seed --connection analytics
dart run ormed_cli:orm migrate:status --connection analytics

Configuration (orm.yaml) #

The init command scaffolds this configuration file:

driver:
  type: sqlite                              # sqlite, mysql, postgres
  options:
    database: database.sqlite               # Connection-specific options

migrations:
  directory: lib/src/database/migrations    # Migration files location
  registry: lib/src/database/migrations.dart # Migration registry file
  ledger_table: orm_migrations              # Table tracking applied migrations
  schema_dump: database/schema.sql          # Schema dump output
  format: dart                              # Migration format: dart or sql

seeds:
  directory: lib/src/database/seeders
  registry: lib/src/database/seeders.dart

Multi-Connection Configuration #

connections:
  default:
    type: sqlite
    options:
      database: main.sqlite
  analytics:
    type: postgres
    options:
      host: localhost
      port: 5432
      database: analytics
      username: user
      password: secret

default_connection: default

Directory Structure #

After running init:

project/
├── orm.yaml
├── database/
│   └── schema.sql
└── lib/src/database/
    ├── migrations/
    │   └── m_YYYYMMDDHHMMSS_migration_name.dart
    ├── migrations.dart   (registry)
    ├── seeders/
    │   └── database_seeder.dart
    └── seeders.dart      (registry)

Migration Formats #

Dart Migrations (default) #

class CreateUsersTable extends Migration {
  @override
  void up(SchemaBuilder schema) {
    schema.create('users', (table) {
      table.id();
      table.string('email').unique();
      table.timestamps();
    });
  }

  @override
  void down(SchemaBuilder schema) {
    schema.drop('users');
  }
}

SQL Migrations #

m_20251220120000_create_users_table/
├── up.sql
└── down.sql

Global Options #

Most commands support these flags:

Flag Description
--config, -c Path to orm.yaml
--database, -d Override database connection
--connection Select connection from orm.yaml
--path Override migration registry path
--force, -f Skip production confirmation
--pretend Preview SQL without executing
--graceful Treat errors as warnings

Creating Seeders #

dart run ormed_cli:orm make --name UserSeeder --seeder
class UserSeeder extends DatabaseSeeder {
  @override
  Future<void> run() async {
    await seed<User>([
      {'email': 'admin@example.com', 'name': 'Admin'},
      {'email': 'user@example.com', 'name': 'User'},
    ]);
  }
}
0
likes
0
points
27
downloads

Publisher

unverified uploader

Weekly Downloads

Command-line tooling for the routed ORM (migrations generator & runner).

Repository (GitHub)
View/report issues

Topics

#orm #cli #migrations

Documentation

Documentation

Funding

Consider supporting this project:

www.buymeacoffee.com

License

unknown (license)

Dependencies

args, artisanal, file, meta, ormed, ormed_mysql, ormed_postgres, ormed_sqlite, path, yaml

More

Packages that depend on ormed_cli