dart_orm 0.0.6 copy "dart_orm: ^0.0.6" to clipboard
dart_orm: ^0.0.6 copied to clipboard

outdatedDart 1 only

Easy-to-use and easy-to-setup database ORM for dart.

Build Status

Dart ORM #

Easy-to-use and easy-to-setup database ORM for dart.

It is in the very beginning stage of development and not ready for production use. Feel free to contribute!

Feature tour #

If you want to jump to example code click here: https://github.com/ustims/DartORM/blob/master/example/example.dart

Annotations #

import 'package:dart_orm/orm.dart' as ORM;

@ORM.DBTable('users')
class User extends ORM.Model {
  // Every field that needs to be stored in database should be annotated with @DBField
  @ORM.DBField()
  @ORM.DBFieldPrimaryKey()
  int id;

  @ORM.DBField()
  String givenName;

  // column name can be overridden
  @ORM.DBField('family_name')
  String familyName;
}

With such annotated class when you first run ORM.Migrator.migrate()

it will execute such statement:

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    given_name text,
    family_name text
);

Migrations, schema versions and diffs will be implemented later.

Inserts and updates #

Every ORM.Model has .save() method which will update/insert a new row.

If class instance has 'id' field with not-null value, .save() will execute 'UPDATE' statement with 'WHERE id = $id'.

If class instance has null 'id' field, 'INSERT' statement will be executed.

User u = new User();
u.givenName = 'Sergey';
u.familyName = 'Ustimenko';

var saveResult = await u.save();

This statement will be executed on save():

INSERT INTO users (
    given_name,
    family_name)
VALUES (
    'Sergey',
    'Ustimenko'
);

Finding records #

ORM has two classes for finding records: Find and FindOne.

Constructors receives a class that extend ORM.Model.


ORM.Find f = new ORM.Find(User)
  ..where(new ORM.LowerThan('id', 3)
    .and(new ORM.Equals('givenName', 'Sergey')
      .or(new ORM.Equals('familyName', 'Ustimenko'))
    )
  )
  ..orderBy('id', 'DESC')
  ..setLimit(10);

List foundUsers = await f.execute();

for(User u in foundUsers){
  print('Found user:');
  print(u);
}

This will result such statement executed on the database:

SELECT *
FROM users
WHERE id < 3 AND (given_name = 'Sergey' OR family_name = 'Ustimenko')
ORDER BY id DESC LIMIT 10

Multiple database adapters support #

Postgresql adapter is build-in for now but will be extracted soon.

MongoDB adapter was extracted to separate package: https://pub.dartlang.org/packages/dart_orm_adapter_mongodb

and can be used like this:

import 'package:dart_orm_adapter_mongodb/dart_orm_adapter_mongodb.dart';

...

String mongoUser = 'dart_orm_test_user';
String mongoPass = 'dart_orm_test_user';
String mongoDBName = 'dart_orm_test';

MongoDBAdapter mongoAdapter = new MongoDBAdapter(
  'mongodb://$mongoUser:$mongoPass@127.0.0.1/$mongoDBName');
await mongoAdapter.connect();

ORM.Model.ormAdapter = mongoAdapter;

Roadmap #

  • mysql adapter
  • memory & file adapters
  • models relations
  • migration system
1
likes
0
points
25
downloads

Publisher

unverified uploader

Weekly Downloads

Easy-to-use and easy-to-setup database ORM for dart.

Repository (GitHub)
View/report issues

License

unknown (license)

More

Packages that depend on dart_orm