Skip to main content

orm 6.0.0-beta.8 copy "orm: ^6.0.0-beta.8" to clipboard
orm: ^6.0.0-beta.8 copied to clipboard

Typed relational data access for Dart, from declaration to migration.

Dart ORM #

Plain Dart models, generated typed tables and explicit database sessions.

6.0.0-beta.8 is a breaking rewrite requiring Dart 3.13. Native SQLite and PostgreSQL 18 are verified on macOS and Linux. When upgrading from earlier betas, migrate model declarations and application APIs, then regenerate clients. Earlier clients and migration definitions have no compatibility layer; existing databases require a separately reviewed baseline.

dart pub add orm:6.0.0-beta.8
import 'package:orm/query.dart';
import 'package:orm/sqlite.dart';
import 'package:orm/migration.dart';

import 'migrations/sqlite/history.dart' as migrations;
import 'models.dart';
import 'models.db.dart';

final db = AppDatabase(SqliteDriver.memory());
await MigrationRunner(db.database, migrations.history).apply();
final user = await db.users.create(username: 'seven', age: 28);
await db.users.update(user.id, nickname: 'Seven');
await db.users.update(user.id, nickname: null);

final cards = await db.users
    .where(username: startsWith('sev'), age: gte(18))
    .orderBy(id: asc)
    .limit(20)
    .select<UserCard>();
print(cards.first.username);

await db.transaction((tx) async {
  await tx.users.update(user.id, active: false);
});
await db.close();

create returns the inserted model. update returns the updated model or null when the key and filters do not match. Omitted fields remain unchanged; explicit null clears nullable fields. Selections are registered named records with direct field access. Values are bound and identifiers are quoted.

From a repository checkout, run the complete example, including schema installation, typed reads, relationship loading and an idempotent order transaction:

dart pub get
dart run bin/orm.dart generate --schema example/models.dart --out example/models.db.dart --name AppDatabase --engine sqlite --check
dart run example/main.dart

Each module has its own public import: schema.dart, query.dart, database.dart, sqlite.dart, postgres.dart, migration.dart and dev.dart. Implementation stays in lib/src/<module>/; modules depend on one another only through those public entrypoints. All libraries are independent Dart files.

240
likes
0
points
2.87k
downloads

Documentation

Documentation

Publisher

verified publisherodroe.dev

Weekly Downloads

Typed relational data access for Dart, from declaration to migration.

Repository (GitHub)
View/report issues

Topics

#orm #database #sqlite #postgresql

License

unknown (license)

Dependencies

analyzer, crypto, dart_style, path, postgres, sqlite3

More

Packages that depend on orm