Skip to content

OrionActive Record ORM for TypeScript

Eloquent-inspired. Five database drivers. Built from scratch.

Orion

Quick start

bash
npm install @wrsouza/orion pg
ts
// src/database.ts
import { createConnection } from '@wrsouza/orion';

export default createConnection({
  connection: process.env.DATABASE_URL ?? {
    driver:   'postgres',
    host:     process.env.DB_HOST ?? 'localhost',
    database: process.env.DB_NAME ?? 'myapp',
    user:     process.env.DB_USER ?? 'postgres',
    password: process.env.DB_PASS ?? '',
  },
  migrations: { path: './src/database/migrations' },
  preventLazyLoading: process.env.NODE_ENV !== 'production',
});
ts
// src/database/models/User.ts
import { Model, table, map } from '@wrsouza/orion';

@table('users')
export class User extends Model {
  declare id: number;
  declare name: string;
  declare email: string;

  @map('is_active')
  declare isActive: boolean;

  @map('born_at')
  declare bornAt: Date;
}
ts
// Query
const users = await User.where('is_active', true).orderBy('name').paginate(15);
const alice = await User.create({ name: 'Alice', email: 'alice@example.com' });
const page  = await User.with('posts').paginate(20);

Released under the MIT License.