platform/angel_orm/example/main.dart

93 lines
2.3 KiB
Dart
Raw Normal View History

import 'package:angel_model/angel_model.dart';
import 'package:angel_orm/angel_orm.dart';
2018-12-01 17:21:34 +00:00
import 'package:angel_serialize/angel_serialize.dart';
part 'main.g.dart';
part 'main.serializer.g.dart';
2018-12-01 17:21:34 +00:00
main() async {
var query = new EmployeeQuery();
query.where
..firstName.equals('Rich')
..lastName.equals('Person')
..or(new EmployeeQueryWhere()..salary.greaterThanOrEqualTo(75000));
2018-08-24 12:30:38 +00:00
2018-12-01 17:21:34 +00:00
var richPerson = await query.getOne(new _FakeExecutor());
print(richPerson.toJson());
}
2018-12-01 17:21:34 +00:00
class _FakeExecutor extends QueryExecutor {
const _FakeExecutor();
2018-08-24 12:30:38 +00:00
2018-12-01 17:21:34 +00:00
@override
Future<List<List>> query(String query) async {
var now = new DateTime.now();
print('_FakeExecutor received query: $query');
return [
[1, 'Rich', 'Person', 100000.0, now, now]
];
}
}
2018-12-01 17:21:34 +00:00
@orm
@serializable
2018-08-24 12:30:38 +00:00
abstract class _Employee extends Model {
String get firstName;
2018-08-24 12:30:38 +00:00
String get lastName;
2018-08-24 12:30:38 +00:00
double get salary;
2018-12-01 17:21:34 +00:00
}
class EmployeeQuery extends Query<Employee, EmployeeQueryWhere> {
@override
final EmployeeQueryWhere where = new EmployeeQueryWhere();
@override
String get tableName => 'employees';
@override
List<String> get fields =>
['id', 'first_name', 'last_name', 'salary', 'created_at', 'updated_at'];
@override
Employee deserialize(List row) {
return new Employee(
id: row[0].toString(),
firstName: row[1] as String,
lastName: row[2] as String,
salary: row[3] as double,
createdAt: row[4] as DateTime,
updatedAt: row[5] as DateTime);
}
}
class EmployeeQueryWhere extends QueryWhere {
@override
Map<String, SqlExpressionBuilder> get expressionBuilders {
return {
'id': id,
'first_name': firstName,
'last_name': lastName,
'salary': salary,
'created_at': createdAt,
'updated_at': updatedAt
};
}
final NumericSqlExpressionBuilder<int> id =
new NumericSqlExpressionBuilder<int>();
final StringSqlExpressionBuilder firstName = new StringSqlExpressionBuilder();
final StringSqlExpressionBuilder lastName = new StringSqlExpressionBuilder();
final NumericSqlExpressionBuilder<double> salary =
new NumericSqlExpressionBuilder<double>();
final DateTimeSqlExpressionBuilder createdAt =
new DateTimeSqlExpressionBuilder('created_at');
2018-12-01 17:21:34 +00:00
final DateTimeSqlExpressionBuilder updatedAt =
new DateTimeSqlExpressionBuilder('updated_at');
}