CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-mikro-orm--cli

Command-line interface tool for MikroORM TypeScript ORM providing database management, migrations, schema operations, and entity generation

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

helper-api.mddocs/

Helper API

MikroORM CLI Helper API provides programmatic access to CLI functionality for custom tooling, scripts, and integrations. The CLIHelper class offers static methods for common ORM operations used throughout the CLI commands.

Capabilities

Configuration Management

Load and validate MikroORM configuration from various sources and contexts.

/**
 * Load ORM configuration with context and path resolution
 */
static async getConfiguration<D extends IDatabaseDriver = IDatabaseDriver>(
  contextName?: string,
  configPaths?: string[],
  options?: Partial<Options<D>>
): Promise<Configuration<D>>;

Usage Examples:

import { CLIHelper } from '@mikro-orm/cli';

// Load default configuration
const config = await CLIHelper.getConfiguration();

// Load specific context
const prodConfig = await CLIHelper.getConfiguration('production');

// Load with custom config paths
const config = await CLIHelper.getConfiguration('default', ['./custom.config.js']);

// Load with additional options
const config = await CLIHelper.getConfiguration('default', undefined, {
  debug: true,
  discovery: { warnWhenNoEntities: false }
});

ORM Instance Management

Initialize MikroORM instances with CLI-specific configuration and settings.

/**
 * Initialize MikroORM instance with CLI settings
 */
static async getORM<D extends IDatabaseDriver = IDatabaseDriver>(
  contextName?: string,
  configPaths?: string[],
  opts?: Partial<Options<D>>
): Promise<MikroORM<D>>;

Usage Examples:

import { CLIHelper } from '@mikro-orm/cli';

// Initialize default ORM instance
const orm = await CLIHelper.getORM();

// Initialize with specific context
const orm = await CLIHelper.getORM('development');

// Initialize with custom options
const orm = await CLIHelper.getORM('default', undefined, {
  pool: { min: 1, max: 2 },
  discovery: { warnWhenNoEntities: false }
});

// Don't forget to close when done
await orm.close(true);

Database Connectivity

Test database connections and validate connectivity status.

/**
 * Check database connection status
 */
static async isDBConnected(config: Configuration, reason?: false): Promise<boolean>;
static async isDBConnected(config: Configuration, reason: true): Promise<true | string>;

Usage Examples:

import { CLIHelper } from '@mikro-orm/cli';

const config = await CLIHelper.getConfiguration();

// Simple boolean check
const connected = await CLIHelper.isDBConnected(config);
if (connected) {
  console.log('Database is connected');
}

// Get connection status with reason
const status = await CLIHelper.isDBConnected(config, true);
if (status === true) {
  console.log('Connection successful');
} else {
  console.log(`Connection failed: ${status}`);
}

System Information

Retrieve system and dependency information for debugging and diagnostics.

/**
 * Get Node.js version
 */
static getNodeVersion(): string;

/**
 * Get database driver dependencies
 */
static getDriverDependencies(config: Configuration): string[];

/**
 * Get module version information
 */
static async getModuleVersion(name: string): Promise<string>;

Usage Examples:

import { CLIHelper } from '@mikro-orm/cli';

// Get Node.js version
const nodeVersion = CLIHelper.getNodeVersion();
console.log(`Node.js: ${nodeVersion}`);

// Get driver dependencies
const config = await CLIHelper.getConfiguration();
const drivers = CLIHelper.getDriverDependencies(config);
console.log('Drivers:', drivers);

// Get specific module version
const tsVersion = await CLIHelper.getModuleVersion('typescript');
console.log(`TypeScript: ${tsVersion}`);

Output and Display

Format and display information with consistent styling and formatting.

/**
 * Output text with optional syntax highlighting
 */
static dump(text: string, config?: Configuration): void;

/**
 * Display formatted table
 */
static dumpTable(options: TableOptions): void;

/**
 * Display dependency information
 */
static async dumpDependencies(): Promise<void>;

/**
 * Show CLI help
 */
static showHelp(): void;

Usage Examples:

import { CLIHelper } from '@mikro-orm/cli';

// Simple text output
CLIHelper.dump('Operation completed successfully');

// Output with highlighting (if configured)
const config = await CLIHelper.getConfiguration();
CLIHelper.dump('SELECT * FROM users;', config);

// Display table
CLIHelper.dumpTable({
  columns: ['Name', 'Version', 'Status'],
  rows: [
    ['mikro-orm', '6.5.2', 'installed'],
    ['typescript', '5.2.0', 'installed']
  ],
  empty: 'No packages found'
});

// Display system dependencies
await CLIHelper.dumpDependencies();

// Show help
CLIHelper.showHelp();

Configuration Path Management

Manage and discover configuration file paths.

/**
 * Get standard configuration file paths
 */
static getConfigPaths(): string[];

Usage Examples:

import { CLIHelper } from '@mikro-orm/cli';

// Get standard config paths
const paths = CLIHelper.getConfigPaths();
console.log('Searching config paths:', paths);

// Use with configuration loading
const config = await CLIHelper.getConfiguration('default', paths);

Types and Interfaces

// Table formatting options
interface TableOptions {
  columns: string[];      // Column headers
  rows: string[][];      // Table data rows
  empty: string;         // Message when no rows
}

// Database driver interface
interface IDatabaseDriver {
  // Driver-specific implementation
}

// Configuration options
interface Options<D extends IDatabaseDriver> {
  debug?: boolean;
  discovery?: {
    warnWhenNoEntities?: boolean;
  };
  pool?: {
    min?: number;
    max?: number;
  };
  connect?: boolean;
  allowGlobalContext?: boolean;
  preferTs?: boolean;
  entities?: any[];
  entitiesTs?: any[];
  // ... other MikroORM options
}

Error Handling

Common Errors

  • Configuration not found: When config files don't exist at specified paths
  • Invalid context: When requested context doesn't exist in configuration
  • Connection failures: Database connectivity issues
  • Module not found: When checking versions of uninstalled packages
  • Permission errors: File system access issues

Error Examples

import { CLIHelper } from '@mikro-orm/cli';

try {
  const config = await CLIHelper.getConfiguration('invalid-context');
} catch (error) {
  console.error('Configuration error:', error.message);
}

try {
  const orm = await CLIHelper.getORM();
  // ... use ORM
} catch (error) {
  console.error('ORM initialization failed:', error.message);
} finally {
  // Ensure proper cleanup
  if (orm) await orm.close(true);
}

Integration Examples

Custom CLI Script

#!/usr/bin/env node
import { CLIHelper } from '@mikro-orm/cli';

async function customMigrationCheck() {
  try {
    const orm = await CLIHelper.getORM();
    const migrator = orm.getMigrator();
    
    const pending = await migrator.getPendingMigrations();
    if (pending.length > 0) {
      CLIHelper.dump(`Found ${pending.length} pending migrations`);
      process.exit(1);
    }
    
    CLIHelper.dump('Database is up to date');
    await orm.close(true);
  } catch (error) {
    CLIHelper.dump(`Error: ${error.message}`);
    process.exit(1);
  }
}

customMigrationCheck();

Build Process Integration

import { CLIHelper } from '@mikro-orm/cli';

export async function validateDatabaseSetup(): Promise<boolean> {
  try {
    const config = await CLIHelper.getConfiguration();
    const connected = await CLIHelper.isDBConnected(config);
    
    if (!connected) {
      console.error('Database connection failed');
      return false;
    }
    
    // Additional validation...
    return true;
  } catch (error) {
    console.error('Setup validation failed:', error.message);
    return false;
  }
}

Best Practices

Resource Management

  • Always close ORM instances when done: await orm.close(true)
  • Handle configuration errors gracefully
  • Use try-catch blocks for async operations
  • Clean up resources in finally blocks

Performance Considerations

  • Reuse configuration objects when possible
  • Use connection pooling options for multiple operations
  • Close database connections promptly
  • Cache system information when making multiple calls

Error Handling

  • Provide meaningful error messages
  • Log errors appropriately for debugging
  • Handle network timeouts and connection failures
  • Validate inputs before processing

docs

cache.md

database.md

debug.md

entities.md

helper-api.md

index.md

migrations.md

schema.md

seeders.md

tile.json