Before starting with the ORM, it is highly recommended to familiar one's self with package:angel_serialize, as it is the foundation for package:angel_orm:
The generator will produce a TodoQuery class, which contains fields corresponding to each field declared in _Todo. Each of TodoQuery's fields is a subclass of SqlExpressionBuilder, corresponding to the given type. For example, TodoQuery would look something like:
classTodoQueryextendsQuery<Todo, TodoQueryWhere> {BooleanSqlExpressionBuilderget isComplete;StringSqlExpressionBuilderget text;NumericSqlExpressionBuilder<int> get score;}
Thus, you can query the database using plain-old-Dart-objects (PODO's):
The glue holding everything together is the QueryExecutor interface. To support the ORM for any arbitrary database, simply extend the class and implement its abstract methods.
Consumers of a QueryExecutor typically inject it into the app's dependency injection container:
At the time of this writing, there is only support for PostgreSQL, though more databases may be added eventually.