Migrated angel_migration_runner

This commit is contained in:
thomashii@dukefirehawk.com 2021-05-02 23:34:47 +08:00
parent ad4558cd0f
commit 106528a93b
33 changed files with 1255 additions and 1289 deletions

View file

@ -6,10 +6,10 @@ import 'package:angel_orm_test/src/models/car.dart';
@Expose('/api/cars')
class CarController extends Controller {
@Expose('/luxury')
Future<List<Car>> getLuxuryCars(QueryExecutor connection) {
Future<List<Car?>> getLuxuryCars(QueryExecutor connection) {
var query = new CarQuery();
query.where
..familyFriendly.equals(false)
?..familyFriendly.equals(false)
..createdAt.year.greaterThanOrEqualTo(2014)
..make.isIn(['Ferrari', 'Lamborghini', 'Mustang', 'Lexus']);
return query.get(connection);

View file

@ -5,11 +5,11 @@ import 'models/book.dart';
import 'util.dart';
belongsToTests(FutureOr<QueryExecutor> Function() createExecutor,
{FutureOr<void> Function(QueryExecutor) close}) {
QueryExecutor executor;
Author jkRowling;
Author jameson;
Book deathlyHallows;
{FutureOr<void> Function(QueryExecutor)? close}) {
late QueryExecutor executor;
Author? jkRowling;
Author? jameson;
Book? deathlyHallows;
close ??= (_) => null;
setUp(() async {
@ -25,128 +25,128 @@ belongsToTests(FutureOr<QueryExecutor> Function() createExecutor,
// And a book
var bookQuery = new BookQuery();
bookQuery.values
..authorId = int.parse(jkRowling.id)
..partnerAuthorId = int.parse(jameson.id)
..authorId = int.parse(jkRowling!.id!)
..partnerAuthorId = int.parse(jameson!.id!)
..name = 'Deathly Hallows';
deathlyHallows = await bookQuery.insert(executor);
});
tearDown(() => close(executor));
tearDown(() => close!(executor));
group('selects', () {
test('select all', () async {
var query = new BookQuery();
var books = await query.get(executor);
List<Book?> books = await query.get(executor);
expect(books, hasLength(1));
var book = books.first;
var book = books.first!;
print(book.toJson());
expect(book.id, deathlyHallows.id);
expect(book.name, deathlyHallows.name);
expect(book.id, deathlyHallows!.id);
expect(book.name, deathlyHallows!.name);
var author = book.author;
var author = book.author!;
print(AuthorSerializer.toMap(author));
expect(author.id, jkRowling.id);
expect(author.name, jkRowling.name);
expect(author.id, jkRowling!.id);
expect(author.name, jkRowling!.name);
});
test('select one', () async {
var query = new BookQuery();
query.where.id.equals(int.parse(deathlyHallows.id));
query.where!.id.equals(int.parse(deathlyHallows!.id!));
print(query.compile(Set()));
var book = await query.getOne(executor);
var book = await (query.getOne(executor) as FutureOr<Book>);
print(book.toJson());
expect(book.id, deathlyHallows.id);
expect(book.name, deathlyHallows.name);
expect(book.id, deathlyHallows!.id);
expect(book.name, deathlyHallows!.name);
var author = book.author;
var author = book.author!;
print(AuthorSerializer.toMap(author));
expect(author.id, jkRowling.id);
expect(author.name, jkRowling.name);
expect(author.id, jkRowling!.id);
expect(author.name, jkRowling!.name);
});
test('where clause', () async {
var query = new BookQuery()
..where.name.equals('Goblet of Fire')
..orWhere((w) => w.authorId.equals(int.parse(jkRowling.id)));
..where!.name.equals('Goblet of Fire')
..orWhere((w) => w!.authorId.equals(int.parse(jkRowling!.id!)));
print(query.compile(Set()));
var books = await query.get(executor);
List<Book?> books = await query.get(executor);
expect(books, hasLength(1));
var book = books.first;
var book = books.first!;
print(book.toJson());
expect(book.id, deathlyHallows.id);
expect(book.name, deathlyHallows.name);
expect(book.id, deathlyHallows!.id);
expect(book.name, deathlyHallows!.name);
var author = book.author;
var author = book.author!;
print(AuthorSerializer.toMap(author));
expect(author.id, jkRowling.id);
expect(author.name, jkRowling.name);
expect(author.id, jkRowling!.id);
expect(author.name, jkRowling!.name);
});
test('union', () async {
var query1 = new BookQuery()..where.name.like('Deathly%');
var query2 = new BookQuery()..where.authorId.equals(-1);
var query1 = new BookQuery()..where!.name.like('Deathly%');
var query2 = new BookQuery()..where!.authorId.equals(-1);
var query3 = new BookQuery()
..where.name.isIn(['Goblet of Fire', 'Order of the Phoenix']);
..where!.name.isIn(['Goblet of Fire', 'Order of the Phoenix']);
query1
..union(query2)
..unionAll(query3);
print(query1.compile(Set()));
var books = await query1.get(executor);
List<Book?> books = await query1.get(executor);
expect(books, hasLength(1));
var book = books.first;
var book = books.first!;
print(book.toJson());
expect(book.id, deathlyHallows.id);
expect(book.name, deathlyHallows.name);
expect(book.id, deathlyHallows!.id);
expect(book.name, deathlyHallows!.name);
var author = book.author;
var author = book.author!;
print(AuthorSerializer.toMap(author));
expect(author.id, jkRowling.id);
expect(author.name, jkRowling.name);
expect(author.id, jkRowling!.id);
expect(author.name, jkRowling!.name);
});
test('order by', () async {
var query = AuthorQuery()..orderBy(AuthorFields.name, descending: true);
var authors = await query.get(executor);
List<Author?> authors = await query.get(executor);
expect(authors, [jkRowling, jameson]);
});
});
test('insert sets relationship', () {
expect(deathlyHallows.author, jkRowling);
expect(deathlyHallows!.author, jkRowling);
//expect(deathlyHallows.author, isNotNull);
//expect(deathlyHallows.author.name, rowling.name);
});
test('delete stream', () async {
printSeparator('Delete stream test');
var query = new BookQuery()..where.name.equals(deathlyHallows.name);
var query = new BookQuery()..where!.name.equals(deathlyHallows!.name!);
print(query.compile(Set(), preamble: 'DELETE', withFields: false));
var books = await query.delete(executor);
List<Book?> books = await query.delete(executor);
expect(books, hasLength(1));
var book = books.first;
expect(book.id, deathlyHallows.id);
var book = books.first!;
expect(book.id, deathlyHallows!.id);
expect(book.author, isNotNull);
expect((book.author).name, jkRowling.name);
expect(book.author!.name, jkRowling!.name);
});
test('update book', () async {
var cloned = deathlyHallows.copyWith(name: "Sorcerer's Stone");
var cloned = deathlyHallows!.copyWith(name: "Sorcerer's Stone");
var query = new BookQuery()
..where.id.equals(int.parse(cloned.id))
..where!.id.equals(int.parse(cloned.id!))
..values.copyFrom(cloned);
var book = await query.updateOne(executor);
var book = await (query.updateOne(executor) as FutureOr<Book>);
print(book.toJson());
expect(book.name, cloned.name);
expect(book.author, isNotNull);
expect(book.author.name, jkRowling.name);
expect(book.author!.name, jkRowling!.name);
});
group('joined subquery', () {
@ -155,13 +155,13 @@ belongsToTests(FutureOr<QueryExecutor> Function() createExecutor,
// that should return correctly.
test('returns empty on false subquery', () async {
printSeparator('False subquery test');
var query = BookQuery()..author.where.name.equals('Billie Jean');
var query = BookQuery()..author!.where!.name.equals('Billie Jean');
expect(await query.get(executor), isEmpty);
});
test('returns values on true subquery', () async {
printSeparator('True subquery test');
var query = BookQuery()..author.where.name.like('%Rowling%');
var query = BookQuery()..author!.where!.name.like('%Rowling%');
expect(await query.get(executor), [deathlyHallows]);
});
});

View file

@ -5,9 +5,9 @@ import 'models/custom_expr.dart';
import 'util.dart';
customExprTests(FutureOr<QueryExecutor> Function() createExecutor,
{FutureOr<void> Function(QueryExecutor) close}) {
QueryExecutor executor;
Numbers numbersModel;
{FutureOr<void> Function(QueryExecutor)? close}) {
late QueryExecutor executor;
Numbers? numbersModel;
close ??= (_) => null;
@ -22,22 +22,22 @@ customExprTests(FutureOr<QueryExecutor> Function() createExecutor,
numbersModel = await nQuery.insert(executor);
});
tearDown(() => close(executor));
tearDown(() => close!(executor));
test('fetches correct result', () async {
expect(numbersModel.two, 2);
expect(numbersModel!.two, 2);
});
test('in relation', () async {
var abcQuery = AlphabetQuery();
abcQuery.values
..value = 'abc'
..numbersId = numbersModel.idAsInt
..createdAt = numbersModel.createdAt
..updatedAt = numbersModel.updatedAt;
var abc = await abcQuery.insert(executor);
..numbersId = numbersModel!.idAsInt
..createdAt = numbersModel!.createdAt
..updatedAt = numbersModel!.updatedAt;
var abc = await (abcQuery.insert(executor) as FutureOr<Alphabet>);
expect(abc.numbers, numbersModel);
expect(abc.numbers.two, 2);
expect(abc.numbers!.two, 2);
expect(abc.value, 'abc');
});
}

View file

@ -4,15 +4,15 @@ import 'package:test/test.dart';
import 'models/unorthodox.dart';
edgeCaseTests(FutureOr<QueryExecutor> Function() createExecutor,
{FutureOr<void> Function(QueryExecutor) close}) {
QueryExecutor executor;
{FutureOr<void> Function(QueryExecutor)? close}) {
late QueryExecutor executor;
close ??= (_) => null;
setUp(() async {
executor = await createExecutor();
});
tearDown(() => close(executor));
tearDown(() => close!(executor));
test('can create object with no id', () async {
var query = UnorthodoxQuery()..values.name = 'Hey';
@ -21,7 +21,7 @@ edgeCaseTests(FutureOr<QueryExecutor> Function() createExecutor,
});
group('relations on non-model', () {
Unorthodox unorthodox;
Unorthodox? unorthodox;
setUp(() async {
var query = UnorthodoxQuery()..values.name = 'Hey';
@ -29,64 +29,64 @@ edgeCaseTests(FutureOr<QueryExecutor> Function() createExecutor,
});
test('belongs to', () async {
var query = WeirdJoinQuery()..values.joinName = unorthodox.name;
var model = await query.insert(executor);
var query = WeirdJoinQuery()..values.joinName = unorthodox!.name;
var model = await (query.insert(executor) as FutureOr<WeirdJoin>);
print(model.toJson());
expect(model.id, isNotNull); // Postgres should set this.
expect(model.unorthodox, unorthodox);
});
group('layered', () {
WeirdJoin weirdJoin;
Song girlBlue;
WeirdJoin? weirdJoin;
Song? girlBlue;
setUp(() async {
var wjQuery = WeirdJoinQuery()..values.joinName = unorthodox.name;
var wjQuery = WeirdJoinQuery()..values.joinName = unorthodox!.name;
weirdJoin = await wjQuery.insert(executor);
var gbQuery = SongQuery()
..values.weirdJoinId = weirdJoin.id
..values.weirdJoinId = weirdJoin!.id
..values.title = 'Girl Blue';
girlBlue = await gbQuery.insert(executor);
});
test('has one', () async {
var query = WeirdJoinQuery()..where.id.equals(weirdJoin.id);
var wj = await query.getOne(executor);
var query = WeirdJoinQuery()..where!.id.equals(weirdJoin!.id!);
var wj = await (query.getOne(executor) as FutureOr<WeirdJoin>);
print(wj.toJson());
expect(wj.song, girlBlue);
});
test('has many', () async {
var numbas = <Numba>[];
var numbas = <Numba?>[];
for (int i = 0; i < 15; i++) {
var query = NumbaQuery()
..values.parent = weirdJoin.id
..values.parent = weirdJoin!.id
..values.i = i;
var model = await query.insert(executor);
numbas.add(model);
}
var query = WeirdJoinQuery()..where.id.equals(weirdJoin.id);
var wj = await query.getOne(executor);
var query = WeirdJoinQuery()..where!.id.equals(weirdJoin!.id!);
var wj = await (query.getOne(executor) as FutureOr<WeirdJoin>);
print(wj.toJson());
expect(wj.numbas, numbas);
});
test('many to many', () async {
var fooQuery = FooQuery()..values.bar = 'baz';
var fooBar = await fooQuery.insert(executor).then((foo) => foo.bar);
var fooBar = await fooQuery.insert(executor).then((foo) => foo!.bar!);
var pivotQuery = FooPivotQuery()
..values.weirdJoinId = weirdJoin.id
..values.weirdJoinId = weirdJoin!.id
..values.fooBar = fooBar;
await pivotQuery.insert(executor);
fooQuery = FooQuery()..where.bar.equals('baz');
fooQuery = FooQuery()..where!.bar.equals('baz');
var foo = await fooQuery.getOne(executor);
var foo = await (fooQuery.getOne(executor) as FutureOr<Foo>);
print(foo.toJson());
print(weirdJoin.toJson());
expect(foo.weirdJoins[0].id, weirdJoin.id);
print(weirdJoin!.toJson());
expect(foo.weirdJoins![0]!.id, weirdJoin!.id);
});
});
});

View file

@ -4,8 +4,8 @@ import 'package:test/test.dart';
import 'models/has_car.dart';
enumAndNestedTests(FutureOr<QueryExecutor> Function() createExecutor,
{FutureOr<void> Function(QueryExecutor) close}) {
QueryExecutor executor;
{FutureOr<void> Function(QueryExecutor)? close}) {
late QueryExecutor executor;
close ??= (_) => null;
setUp(() async {
@ -14,12 +14,12 @@ enumAndNestedTests(FutureOr<QueryExecutor> Function() createExecutor,
test('insert', () async {
var query = HasCarQuery()..values.type = CarType.sedan;
var result = await query.insert(executor);
var result = await (query.insert(executor) as FutureOr<HasCar>);
expect(result.type, CarType.sedan);
});
group('query', () {
HasCar initialValue;
HasCar? initialValue;
setUp(() async {
var query = HasCarQuery();
@ -29,10 +29,10 @@ enumAndNestedTests(FutureOr<QueryExecutor> Function() createExecutor,
test('query by enum', () async {
// Check for mismatched type
var query = HasCarQuery()..where.type.equals(CarType.atv);
var query = HasCarQuery()..where!.type.equals(CarType.atv);
expect(await query.get(executor), isEmpty);
query = HasCarQuery()..where.type.equals(initialValue.type);
query = HasCarQuery()..where!.type.equals(initialValue!.type);
expect(await query.getOne(executor), initialValue);
});
});

View file

@ -4,10 +4,10 @@ import 'package:test/test.dart';
import 'models/tree.dart';
hasManyTests(FutureOr<QueryExecutor> Function() createExecutor,
{FutureOr<void> Function(QueryExecutor) close}) {
QueryExecutor executor;
Tree appleTree;
int treeId;
{FutureOr<void> Function(QueryExecutor)? close}) {
late QueryExecutor executor;
Tree? appleTree;
late int treeId;
close ??= (_) => null;
setUp(() async {
@ -15,24 +15,24 @@ hasManyTests(FutureOr<QueryExecutor> Function() createExecutor,
executor = await createExecutor();
appleTree = await query.insert(executor);
treeId = int.parse(appleTree.id);
treeId = int.parse(appleTree!.id!);
});
tearDown(() => close(executor));
tearDown(() => close!(executor));
test('list is empty if there is nothing', () {
expect(appleTree.rings, 10);
expect(appleTree.fruits, isEmpty);
expect(appleTree!.rings, 10);
expect(appleTree!.fruits, isEmpty);
});
group('mutations', () {
Fruit apple, banana;
Fruit? apple, banana;
void verify(Tree tree) {
print(tree.fruits.map(FruitSerializer.toMap).toList());
print(tree.fruits!.map(FruitSerializer.toMap).toList());
expect(tree.fruits, hasLength(2));
expect(tree.fruits[0].commonName, apple.commonName);
expect(tree.fruits[1].commonName, banana.commonName);
expect(tree.fruits![0].commonName, apple!.commonName);
expect(tree.fruits![1].commonName, banana!.commonName);
}
setUp(() async {
@ -49,31 +49,31 @@ hasManyTests(FutureOr<QueryExecutor> Function() createExecutor,
});
test('can fetch any children', () async {
var query = new TreeQuery()..where.id.equals(treeId);
var tree = await query.getOne(executor);
var query = new TreeQuery()..where!.id.equals(treeId);
var tree = await (query.getOne(executor) as FutureOr<Tree>);
verify(tree);
});
test('sets on update', () async {
var tq = new TreeQuery()
..where.id.equals(treeId)
..where!.id.equals(treeId)
..values.rings = 24;
var tree = await tq.updateOne(executor);
var tree = await (tq.updateOne(executor) as FutureOr<Tree>);
verify(tree);
expect(tree.rings, 24);
});
test('sets on delete', () async {
var tq = new TreeQuery()..where.id.equals(treeId);
var tree = await tq.deleteOne(executor);
var tq = new TreeQuery()..where!.id.equals(treeId);
var tree = await (tq.deleteOne(executor) as FutureOr<Tree>);
verify(tree);
});
test('returns empty on false subquery', () async {
var tq = new TreeQuery()
..where.id.equals(treeId)
..fruits.where.commonName.equals('Kiwi');
var tree = await tq.getOne(executor);
..where!.id.equals(treeId)
..fruits!.where!.commonName.equals('Kiwi');
var tree = await (tq.getOne(executor) as FutureOr<Tree>);
expect(tree.fruits, isEmpty);
});
});

View file

@ -4,22 +4,22 @@ import 'package:test/test.dart';
import 'models/has_map.dart';
hasMapTests(FutureOr<QueryExecutor> Function() createExecutor,
{FutureOr<void> Function(QueryExecutor) close}) {
QueryExecutor executor;
{FutureOr<void> Function(QueryExecutor)? close}) {
late QueryExecutor executor;
close ??= (_) => null;
setUp(() async {
executor = await createExecutor();
});
tearDown(() => close(executor));
tearDown(() => close!(executor));
test('insert', () async {
var query = HasMapQuery();
query.values
..value = {'foo': 'bar'}
..list = ['1', 2, 3.0];
var model = await query.insert(executor);
var model = await (query.insert(executor) as FutureOr<HasMap>);
print(model.toJson());
expect(model, HasMap(value: {'foo': 'bar'}, list: ['1', 2, 3.0]));
});
@ -29,7 +29,7 @@ hasMapTests(FutureOr<QueryExecutor> Function() createExecutor,
query.values
..value = {'foo': 'bar'}
..list = ['1', 2, 3.0];
var model = await query.insert(executor);
var model = await (query.insert(executor) as FutureOr<HasMap>);
print(model.toJson());
query = HasMapQuery()..values.copyFrom(model);
@ -37,7 +37,7 @@ hasMapTests(FutureOr<QueryExecutor> Function() createExecutor,
});
group('query', () {
HasMap initialValue;
HasMap? initialValue;
setUp(() async {
var query = HasMapQuery();
@ -54,37 +54,37 @@ hasMapTests(FutureOr<QueryExecutor> Function() createExecutor,
test('map equals', () async {
var query = HasMapQuery();
query.where.value.equals({'foo': 'bar'});
query.where!.value.equals({'foo': 'bar'});
expect(await query.get(executor), [initialValue]);
query = HasMapQuery();
query.where.value.equals({'foo': 'baz'});
query.where!.value.equals({'foo': 'baz'});
expect(await query.get(executor), isEmpty);
});
test('list equals', () async {
var query = HasMapQuery();
query.where.list.equals(['1', 2, 3.0]);
query.where!.list.equals(['1', 2, 3.0]);
expect(await query.get(executor), [initialValue]);
query = HasMapQuery();
query.where.list.equals(['10', 20, 30.0]);
query.where!.list.equals(['10', 20, 30.0]);
expect(await query.get(executor), isEmpty);
});
test('property equals', () async {
var query = HasMapQuery()..where.value['foo'].asString.equals('bar');
var query = HasMapQuery()..where!.value['foo'].asString!.equals('bar');
expect(await query.get(executor), [initialValue]);
query = HasMapQuery()..where.value['foo'].asString.equals('baz');
query = HasMapQuery()..where!.value['foo'].asString!.equals('baz');
expect(await query.get(executor), []);
});
test('index equals', () async {
var query = HasMapQuery()..where.list[0].asString.equals('1');
var query = HasMapQuery()..where!.list[0].asString!.equals('1');
expect(await query.get(executor), [initialValue]);
query = HasMapQuery()..where.list[1].asInt.equals(3);
query = HasMapQuery()..where!.list[1].asInt!.equals(3);
expect(await query.get(executor), []);
});
});

View file

@ -4,9 +4,9 @@ import 'package:test/test.dart';
import 'models/leg.dart';
hasOneTests(FutureOr<QueryExecutor> Function() createExecutor,
{FutureOr<void> Function(QueryExecutor) close}) {
QueryExecutor executor;
Leg originalLeg;
{FutureOr<void> Function(QueryExecutor)? close}) {
late QueryExecutor executor;
Leg? originalLeg;
close ??= (_) => null;
setUp(() async {
@ -15,82 +15,82 @@ hasOneTests(FutureOr<QueryExecutor> Function() createExecutor,
originalLeg = await query.insert(executor);
});
tearDown(() => close(executor));
tearDown(() => close!(executor));
test('sets to null if no child', () async {
print(LegQuery().compile(Set()));
var query = new LegQuery()..where.id.equals(int.parse(originalLeg.id));
var leg = await query.getOne(executor);
var query = new LegQuery()..where!.id.equals(int.parse(originalLeg!.id!));
var leg = await (query.getOne(executor) as FutureOr<Leg>);
print(leg.toJson());
expect(leg.name, originalLeg.name);
expect(leg.id, originalLeg.id);
expect(leg.name, originalLeg!.name);
expect(leg.id, originalLeg!.id);
expect(leg.foot, isNull);
});
test('can fetch one foot', () async {
var footQuery = new FootQuery()
..values.legId = int.parse(originalLeg.id)
..values.legId = int.parse(originalLeg!.id!)
..values.nToes = 5.64;
var legQuery = new LegQuery()..where.id.equals(int.parse(originalLeg.id));
var foot = await footQuery.insert(executor);
var leg = await legQuery.getOne(executor);
var legQuery = new LegQuery()..where!.id.equals(int.parse(originalLeg!.id!));
var foot = await (footQuery.insert(executor) as FutureOr<Foot>);
var leg = await (legQuery.getOne(executor) as FutureOr<Leg>);
expect(leg.name, originalLeg.name);
expect(leg.id, originalLeg.id);
expect(leg.name, originalLeg!.name);
expect(leg.id, originalLeg!.id);
expect(leg.foot, isNotNull);
expect(leg.foot.id, foot.id);
expect(leg.foot.nToes, foot.nToes);
expect(leg.foot!.id, foot.id);
expect(leg.foot!.nToes, foot.nToes);
});
test('only fetches one foot even if there are multiple', () async {
var footQuery = new FootQuery()
..values.legId = int.parse(originalLeg.id)
..values.legId = int.parse(originalLeg!.id!)
..values.nToes = 24;
var legQuery = new LegQuery()..where.id.equals(int.parse(originalLeg.id));
var foot = await footQuery.insert(executor);
var leg = await legQuery.getOne(executor);
expect(leg.name, originalLeg.name);
expect(leg.id, originalLeg.id);
var legQuery = new LegQuery()..where!.id.equals(int.parse(originalLeg!.id!));
var foot = await (footQuery.insert(executor) as FutureOr<Foot>);
var leg = await (legQuery.getOne(executor) as FutureOr<Leg>);
expect(leg.name, originalLeg!.name);
expect(leg.id, originalLeg!.id);
expect(leg.foot, isNotNull);
expect(leg.foot.id, foot.id);
expect(leg.foot.nToes, foot.nToes);
expect(leg.foot!.id, foot.id);
expect(leg.foot!.nToes, foot.nToes);
});
test('sets foot on update', () async {
var footQuery = new FootQuery()
..values.legId = int.parse(originalLeg.id)
..values.legId = int.parse(originalLeg!.id!)
..values.nToes = 5.64;
var legQuery = new LegQuery()
..where.id.equals(int.parse(originalLeg.id))
..values.copyFrom(originalLeg.copyWith(name: 'Right'));
var foot = await footQuery.insert(executor);
var leg = await legQuery.updateOne(executor);
..where!.id.equals(int.parse(originalLeg!.id!))
..values.copyFrom(originalLeg!.copyWith(name: 'Right'));
var foot = await (footQuery.insert(executor) as FutureOr<Foot>);
var leg = await (legQuery.updateOne(executor) as FutureOr<Leg>);
print(leg.toJson());
expect(leg.name, 'Right');
expect(leg.foot, isNotNull);
expect(leg.foot.id, foot.id);
expect(leg.foot.nToes, foot.nToes);
expect(leg.foot!.id, foot.id);
expect(leg.foot!.nToes, foot.nToes);
});
test('sets foot on delete', () async {
var footQuery = new FootQuery()
..values.legId = int.parse(originalLeg.id)
..values.legId = int.parse(originalLeg!.id!)
..values.nToes = 5.64;
var legQuery = new LegQuery()..where.id.equals(int.parse(originalLeg.id));
var foot = await footQuery.insert(executor);
var leg = await legQuery.deleteOne(executor);
var legQuery = new LegQuery()..where!.id.equals(int.parse(originalLeg!.id!));
var foot = await (footQuery.insert(executor) as FutureOr<Foot>);
var leg = await (legQuery.deleteOne(executor) as FutureOr<Leg>);
print(leg.toJson());
expect(leg.name, originalLeg.name);
expect(leg.name, originalLeg!.name);
expect(leg.foot, isNotNull);
expect(leg.foot.id, foot.id);
expect(leg.foot.nToes, foot.nToes);
expect(leg.foot!.id, foot.id);
expect(leg.foot!.nToes, foot.nToes);
});
test('sets null on false subquery', () async {
var legQuery = new LegQuery()
..where.id.equals(originalLeg.idAsInt)
..foot.where.legId.equals(originalLeg.idAsInt + 1024);
var leg = await legQuery.getOne(executor);
..where!.id.equals(originalLeg!.idAsInt!)
..foot!.where!.legId.equals(originalLeg!.idAsInt! + 1024);
var leg = await (legQuery.getOne(executor) as FutureOr<Leg>);
expect(leg.foot, isNull);
});
}

View file

@ -6,10 +6,10 @@ import 'models/user.dart';
import 'util.dart';
manyToManyTests(FutureOr<QueryExecutor> Function() createExecutor,
{FutureOr<void> Function(QueryExecutor) close}) {
QueryExecutor executor;
Role canPub, canSub;
User thosakwe;
{FutureOr<void> Function(QueryExecutor)? close}) {
late QueryExecutor executor;
Role? canPub, canSub;
User? thosakwe;
close ??= (_) => null;
Future<void> dumpQuery(String query) async {
@ -18,7 +18,8 @@ manyToManyTests(FutureOr<QueryExecutor> Function() createExecutor,
print('==================================================');
print(' DUMPING QUERY');
print(query);
var rows = await executor.query(null, query, {});
//var rows = await executor.query(null, query, {});
var rows = await executor.query('', query, {});
print('\n${rows.length} row(s):');
rows.forEach((r) => print(' * $r'));
print('==================================================\n\n');
@ -65,16 +66,16 @@ manyToManyTests(FutureOr<QueryExecutor> Function() createExecutor,
printSeparator('Allow thosakwe to publish');
var thosakwePubQuery = RoleUserQuery();
thosakwePubQuery.values
..userId = int.parse(thosakwe.id)
..roleId = int.parse(canPub.id);
..userId = int.parse(thosakwe!.id!)
..roleId = int.parse(canPub!.id!);
await thosakwePubQuery.insert(executor);
// Allow thosakwe to subscribe...
printSeparator('Allow thosakwe to subscribe');
var thosakweSubQuery = RoleUserQuery();
thosakweSubQuery.values
..userId = int.parse(thosakwe.id)
..roleId = int.parse(canSub.id);
..userId = int.parse(thosakwe!.id!)
..roleId = int.parse(canSub!.id!);
await thosakweSubQuery.insert(executor);
// Print all users...
@ -90,16 +91,16 @@ manyToManyTests(FutureOr<QueryExecutor> Function() createExecutor,
print('==================================================\n\n');
});
tearDown(() => close(executor));
tearDown(() => close!(executor));
Future<User> fetchThosakwe() async {
var query = UserQuery()..where.id.equals(int.parse(thosakwe.id));
Future<User?> fetchThosakwe() async {
var query = UserQuery()..where!.id.equals(int.parse(thosakwe!.id!));
return await query.getOne(executor);
}
test('fetch roles for user', () async {
printSeparator('Fetch roles for user test');
var user = await fetchThosakwe();
var user = await (fetchThosakwe() as FutureOr<User>);
expect(user.roles, hasLength(2));
expect(user.roles, contains(canPub));
expect(user.roles, contains(canSub));
@ -107,8 +108,8 @@ manyToManyTests(FutureOr<QueryExecutor> Function() createExecutor,
test('fetch users for role', () async {
for (var role in [canPub, canSub]) {
var query = RoleQuery()..where.id.equals(role.idAsInt);
var r = await query.getOne(executor);
var query = RoleQuery()..where!.id.equals(role!.idAsInt!);
var r = await (query.getOne(executor) as FutureOr<Role>);
expect(r.users.toList(), [thosakwe]);
}
});
@ -121,12 +122,12 @@ manyToManyTests(FutureOr<QueryExecutor> Function() createExecutor,
..username = 'Prince'
..password = 'Rogers'
..email = 'Nelson';
var user = await userQuery.insert(executor);
var user = await (userQuery.insert(executor) as FutureOr<User>);
expect(user.roles, isEmpty);
// Fetch again, just to be doubly sure.
var query = UserQuery()..where.id.equals(user.idAsInt);
var fetched = await query.getOne(executor);
var query = UserQuery()..where!.id.equals(user.idAsInt!);
var fetched = await (query.getOne(executor) as FutureOr<User>);
expect(fetched.roles, isEmpty);
});
}

View file

@ -10,12 +10,12 @@ part 'book.g.dart';
@orm
class _Book extends Model {
@BelongsTo(joinType: JoinType.inner)
_Author author;
_Author? author;
@BelongsTo(localKey: "partner_author_id", joinType: JoinType.inner)
_Author partnerAuthor;
_Author? partnerAuthor;
String name;
String? name;
}
@serializable
@ -23,5 +23,5 @@ class _Book extends Model {
abstract class _Author extends Model {
@Column(length: 255, indexType: IndexType.unique)
@SerializableField(defaultValue: 'Tobe Osakwe')
String get name;
String? get name;
}

View file

@ -50,8 +50,8 @@ class AuthorMigration extends Migration {
// OrmGenerator
// **************************************************************************
class BookQuery extends Query<Book, BookQueryWhere> {
BookQuery({Query parent, Set<String> trampoline}) : super(parent: parent) {
class BookQuery extends Query<Book?, BookQueryWhere?> {
BookQuery({Query? parent, Set<String>? trampoline}) : super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
_where = BookQueryWhere(this);
@ -68,11 +68,11 @@ class BookQuery extends Query<Book, BookQueryWhere> {
@override
final BookQueryValues values = BookQueryValues();
BookQueryWhere _where;
BookQueryWhere? _where;
AuthorQuery _author;
AuthorQuery? _author;
AuthorQuery _partnerAuthor;
AuthorQuery? _partnerAuthor;
@override
get casts {
@ -97,7 +97,7 @@ class BookQuery extends Query<Book, BookQueryWhere> {
}
@override
BookQueryWhere get where {
BookQueryWhere? get where {
return _where;
}
@ -106,13 +106,13 @@ class BookQuery extends Query<Book, BookQueryWhere> {
return BookQueryWhere(this);
}
static Book parseRow(List row) {
static Book? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = Book(
id: row[0].toString(),
createdAt: (row[1] as DateTime),
updatedAt: (row[2] as DateTime),
name: (row[5] as String));
createdAt: (row[1] as DateTime?),
updatedAt: (row[2] as DateTime?),
name: (row[5] as String?));
if (row.length > 6) {
model = model.copyWith(
author: AuthorQuery.parseRow(row.skip(6).take(4).toList()));
@ -129,11 +129,11 @@ class BookQuery extends Query<Book, BookQueryWhere> {
return parseRow(row);
}
AuthorQuery get author {
AuthorQuery? get author {
return _author;
}
AuthorQuery get partnerAuthor {
AuthorQuery? get partnerAuthor {
return _partnerAuthor;
}
}
@ -172,51 +172,52 @@ class BookQueryValues extends MapQueryValues {
return {};
}
String get id {
return (values['id'] as String);
String? get id {
return (values['id'] as String?);
}
set id(String value) => values['id'] = value;
DateTime get createdAt {
return (values['created_at'] as DateTime);
set id(String? value) => values['id'] = value;
DateTime? get createdAt {
return (values['created_at'] as DateTime?);
}
set createdAt(DateTime value) => values['created_at'] = value;
DateTime get updatedAt {
return (values['updated_at'] as DateTime);
set createdAt(DateTime? value) => values['created_at'] = value;
DateTime? get updatedAt {
return (values['updated_at'] as DateTime?);
}
set updatedAt(DateTime value) => values['updated_at'] = value;
int get authorId {
return (values['author_id'] as int);
set updatedAt(DateTime? value) => values['updated_at'] = value;
int? get authorId {
return (values['author_id'] as int?);
}
set authorId(int value) => values['author_id'] = value;
int get partnerAuthorId {
return (values['partner_author_id'] as int);
set authorId(int? value) => values['author_id'] = value;
int? get partnerAuthorId {
return (values['partner_author_id'] as int?);
}
set partnerAuthorId(int value) => values['partner_author_id'] = value;
String get name {
return (values['name'] as String);
set partnerAuthorId(int? value) => values['partner_author_id'] = value;
String? get name {
return (values['name'] as String?);
}
set name(String value) => values['name'] = value;
set name(String? value) => values['name'] = value;
void copyFrom(Book model) {
createdAt = model.createdAt;
updatedAt = model.updatedAt;
name = model.name;
if (model.author != null) {
values['author_id'] = model.author.id;
values['author_id'] = model.author!.id;
}
if (model.partnerAuthor != null) {
values['partner_author_id'] = model.partnerAuthor.id;
values['partner_author_id'] = model.partnerAuthor!.id;
}
}
}
class AuthorQuery extends Query<Author, AuthorQueryWhere> {
AuthorQuery({Query parent, Set<String> trampoline}) : super(parent: parent) {
class AuthorQuery extends Query<Author?, AuthorQueryWhere?> {
AuthorQuery({Query? parent, Set<String>? trampoline})
: super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
_where = AuthorQueryWhere(this);
@ -225,7 +226,7 @@ class AuthorQuery extends Query<Author, AuthorQueryWhere> {
@override
final AuthorQueryValues values = AuthorQueryValues();
AuthorQueryWhere _where;
AuthorQueryWhere? _where;
@override
get casts {
@ -243,7 +244,7 @@ class AuthorQuery extends Query<Author, AuthorQueryWhere> {
}
@override
AuthorQueryWhere get where {
AuthorQueryWhere? get where {
return _where;
}
@ -252,13 +253,13 @@ class AuthorQuery extends Query<Author, AuthorQueryWhere> {
return AuthorQueryWhere(this);
}
static Author parseRow(List row) {
static Author? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = Author(
id: row[0].toString(),
createdAt: (row[1] as DateTime),
updatedAt: (row[2] as DateTime),
name: (row[3] as String));
createdAt: (row[1] as DateTime?),
updatedAt: (row[2] as DateTime?),
name: (row[3] as String?));
return model;
}
@ -295,26 +296,26 @@ class AuthorQueryValues extends MapQueryValues {
return {};
}
String get id {
return (values['id'] as String);
String? get id {
return (values['id'] as String?);
}
set id(String value) => values['id'] = value;
DateTime get createdAt {
return (values['created_at'] as DateTime);
set id(String? value) => values['id'] = value;
DateTime? get createdAt {
return (values['created_at'] as DateTime?);
}
set createdAt(DateTime value) => values['created_at'] = value;
DateTime get updatedAt {
return (values['updated_at'] as DateTime);
set createdAt(DateTime? value) => values['created_at'] = value;
DateTime? get updatedAt {
return (values['updated_at'] as DateTime?);
}
set updatedAt(DateTime value) => values['updated_at'] = value;
String get name {
return (values['name'] as String);
set updatedAt(DateTime? value) => values['updated_at'] = value;
String? get name {
return (values['name'] as String?);
}
set name(String value) => values['name'] = value;
set name(String? value) => values['name'] = value;
void copyFrom(Author model) {
createdAt = model.createdAt;
updatedAt = model.updatedAt;
@ -338,32 +339,32 @@ class Book extends _Book {
/// A unique identifier corresponding to this item.
@override
String id;
String? id;
/// The time at which this item was created.
@override
DateTime createdAt;
DateTime? createdAt;
/// The last time at which this item was updated.
@override
DateTime updatedAt;
DateTime? updatedAt;
@override
_Author author;
_Author? author;
@override
_Author partnerAuthor;
_Author? partnerAuthor;
@override
String name;
String? name;
Book copyWith(
{String id,
DateTime createdAt,
DateTime updatedAt,
_Author author,
_Author partnerAuthor,
String name}) {
{String? id,
DateTime? createdAt,
DateTime? updatedAt,
_Author? author,
_Author? partnerAuthor,
String? name}) {
return Book(
id: id ?? this.id,
createdAt: createdAt ?? this.createdAt,
@ -404,21 +405,21 @@ class Author extends _Author {
/// A unique identifier corresponding to this item.
@override
String id;
String? id;
/// The time at which this item was created.
@override
DateTime createdAt;
DateTime? createdAt;
/// The last time at which this item was updated.
@override
DateTime updatedAt;
DateTime? updatedAt;
@override
final String name;
final String? name;
Author copyWith(
{String id, DateTime createdAt, DateTime updatedAt, String name}) {
{String? id, DateTime? createdAt, DateTime? updatedAt, String? name}) {
return Author(
id: id ?? this.id,
createdAt: createdAt ?? this.createdAt,
@ -444,7 +445,7 @@ class Author extends _Author {
return "Author(id=$id, createdAt=$createdAt, updatedAt=$updatedAt, name=$name)";
}
Map<String, dynamic> toJson() {
Map<String, dynamic>? toJson() {
return AuthorSerializer.toMap(this);
}
}
@ -478,15 +479,15 @@ class BookSerializer extends Codec<Book, Map> {
get decoder => const BookDecoder();
static Book fromMap(Map map) {
return Book(
id: map['id'] as String,
id: map['id'] as String?,
createdAt: map['created_at'] != null
? (map['created_at'] is DateTime
? (map['created_at'] as DateTime)
? (map['created_at'] as DateTime?)
: DateTime.parse(map['created_at'].toString()))
: null,
updatedAt: map['updated_at'] != null
? (map['updated_at'] is DateTime
? (map['updated_at'] as DateTime)
? (map['updated_at'] as DateTime?)
: DateTime.parse(map['updated_at'].toString()))
: null,
author: map['author'] != null
@ -495,13 +496,10 @@ class BookSerializer extends Codec<Book, Map> {
partnerAuthor: map['partner_author'] != null
? AuthorSerializer.fromMap(map['partner_author'] as Map)
: null,
name: map['name'] as String);
name: map['name'] as String?);
}
static Map<String, dynamic> toMap(_Book model) {
if (model == null) {
return null;
}
return {
'id': model.id,
'created_at': model.createdAt?.toIso8601String(),
@ -538,11 +536,11 @@ abstract class BookFields {
const AuthorSerializer authorSerializer = AuthorSerializer();
class AuthorEncoder extends Converter<Author, Map> {
class AuthorEncoder extends Converter<Author, Map?> {
const AuthorEncoder();
@override
Map convert(Author model) => AuthorSerializer.toMap(model);
Map? convert(Author model) => AuthorSerializer.toMap(model);
}
class AuthorDecoder extends Converter<Map, Author> {
@ -552,7 +550,7 @@ class AuthorDecoder extends Converter<Map, Author> {
Author convert(Map map) => AuthorSerializer.fromMap(map);
}
class AuthorSerializer extends Codec<Author, Map> {
class AuthorSerializer extends Codec<Author, Map?> {
const AuthorSerializer();
@override
@ -561,21 +559,21 @@ class AuthorSerializer extends Codec<Author, Map> {
get decoder => const AuthorDecoder();
static Author fromMap(Map map) {
return Author(
id: map['id'] as String,
id: map['id'] as String?,
createdAt: map['created_at'] != null
? (map['created_at'] is DateTime
? (map['created_at'] as DateTime)
? (map['created_at'] as DateTime?)
: DateTime.parse(map['created_at'].toString()))
: null,
updatedAt: map['updated_at'] != null
? (map['updated_at'] is DateTime
? (map['updated_at'] as DateTime)
? (map['updated_at'] as DateTime?)
: DateTime.parse(map['updated_at'].toString()))
: null,
name: map['name'] as String ?? 'Tobe Osakwe');
name: map['name'] as String? ?? 'Tobe Osakwe');
}
static Map<String, dynamic> toMap(_Author model) {
static Map<String, dynamic>? toMap(_Author? model) {
if (model == null) {
return null;
}

View file

@ -9,8 +9,8 @@ part 'car.g.dart';
@serializable
@orm
class _Car extends Model {
String make;
String description;
bool familyFriendly;
DateTime recalledAt;
String? make;
String? description;
bool? familyFriendly;
DateTime? recalledAt;
}

View file

@ -30,8 +30,8 @@ class CarMigration extends Migration {
// OrmGenerator
// **************************************************************************
class CarQuery extends Query<Car, CarQueryWhere> {
CarQuery({Query parent, Set<String> trampoline}) : super(parent: parent) {
class CarQuery extends Query<Car?, CarQueryWhere?> {
CarQuery({Query? parent, Set<String>? trampoline}) : super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
_where = CarQueryWhere(this);
@ -40,7 +40,7 @@ class CarQuery extends Query<Car, CarQueryWhere> {
@override
final CarQueryValues values = CarQueryValues();
CarQueryWhere _where;
CarQueryWhere? _where;
@override
get casts {
@ -66,7 +66,7 @@ class CarQuery extends Query<Car, CarQueryWhere> {
}
@override
CarQueryWhere get where {
CarQueryWhere? get where {
return _where;
}
@ -75,16 +75,16 @@ class CarQuery extends Query<Car, CarQueryWhere> {
return CarQueryWhere(this);
}
static Car parseRow(List row) {
static Car? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = Car(
id: row[0].toString(),
createdAt: (row[1] as DateTime),
updatedAt: (row[2] as DateTime),
make: (row[3] as String),
description: (row[4] as String),
familyFriendly: (row[5] as bool),
recalledAt: (row[6] as DateTime));
createdAt: (row[1] as DateTime?),
updatedAt: (row[2] as DateTime?),
make: (row[3] as String?),
description: (row[4] as String?),
familyFriendly: (row[5] as bool?),
recalledAt: (row[6] as DateTime?));
return model;
}
@ -138,41 +138,41 @@ class CarQueryValues extends MapQueryValues {
return {};
}
String get id {
return (values['id'] as String);
String? get id {
return (values['id'] as String?);
}
set id(String value) => values['id'] = value;
DateTime get createdAt {
return (values['created_at'] as DateTime);
set id(String? value) => values['id'] = value;
DateTime? get createdAt {
return (values['created_at'] as DateTime?);
}
set createdAt(DateTime value) => values['created_at'] = value;
DateTime get updatedAt {
return (values['updated_at'] as DateTime);
set createdAt(DateTime? value) => values['created_at'] = value;
DateTime? get updatedAt {
return (values['updated_at'] as DateTime?);
}
set updatedAt(DateTime value) => values['updated_at'] = value;
String get make {
return (values['make'] as String);
set updatedAt(DateTime? value) => values['updated_at'] = value;
String? get make {
return (values['make'] as String?);
}
set make(String value) => values['make'] = value;
String get description {
return (values['description'] as String);
set make(String? value) => values['make'] = value;
String? get description {
return (values['description'] as String?);
}
set description(String value) => values['description'] = value;
bool get familyFriendly {
return (values['family_friendly'] as bool);
set description(String? value) => values['description'] = value;
bool? get familyFriendly {
return (values['family_friendly'] as bool?);
}
set familyFriendly(bool value) => values['family_friendly'] = value;
DateTime get recalledAt {
return (values['recalled_at'] as DateTime);
set familyFriendly(bool? value) => values['family_friendly'] = value;
DateTime? get recalledAt {
return (values['recalled_at'] as DateTime?);
}
set recalledAt(DateTime value) => values['recalled_at'] = value;
set recalledAt(DateTime? value) => values['recalled_at'] = value;
void copyFrom(Car model) {
createdAt = model.createdAt;
updatedAt = model.updatedAt;
@ -200,36 +200,36 @@ class Car extends _Car {
/// A unique identifier corresponding to this item.
@override
String id;
String? id;
/// The time at which this item was created.
@override
DateTime createdAt;
DateTime? createdAt;
/// The last time at which this item was updated.
@override
DateTime updatedAt;
DateTime? updatedAt;
@override
String make;
String? make;
@override
String description;
String? description;
@override
bool familyFriendly;
bool? familyFriendly;
@override
DateTime recalledAt;
DateTime? recalledAt;
Car copyWith(
{String id,
DateTime createdAt,
DateTime updatedAt,
String make,
String description,
bool familyFriendly,
DateTime recalledAt}) {
{String? id,
DateTime? createdAt,
DateTime? updatedAt,
String? make,
String? description,
bool? familyFriendly,
DateTime? recalledAt}) {
return Car(
id: id ?? this.id,
createdAt: createdAt ?? this.createdAt,
@ -303,31 +303,28 @@ class CarSerializer extends Codec<Car, Map> {
get decoder => const CarDecoder();
static Car fromMap(Map map) {
return Car(
id: map['id'] as String,
id: map['id'] as String?,
createdAt: map['created_at'] != null
? (map['created_at'] is DateTime
? (map['created_at'] as DateTime)
? (map['created_at'] as DateTime?)
: DateTime.parse(map['created_at'].toString()))
: null,
updatedAt: map['updated_at'] != null
? (map['updated_at'] is DateTime
? (map['updated_at'] as DateTime)
? (map['updated_at'] as DateTime?)
: DateTime.parse(map['updated_at'].toString()))
: null,
make: map['make'] as String,
description: map['description'] as String,
familyFriendly: map['family_friendly'] as bool,
make: map['make'] as String?,
description: map['description'] as String?,
familyFriendly: map['family_friendly'] as bool?,
recalledAt: map['recalled_at'] != null
? (map['recalled_at'] is DateTime
? (map['recalled_at'] as DateTime)
? (map['recalled_at'] as DateTime?)
: DateTime.parse(map['recalled_at'].toString()))
: null);
}
static Map<String, dynamic> toMap(_Car model) {
if (model == null) {
return null;
}
return {
'id': model.id,
'created_at': model.createdAt?.toIso8601String(),

View file

@ -8,14 +8,14 @@ part 'custom_expr.g.dart';
@orm
class _Numbers extends Model {
@Column(expression: 'SELECT 2')
int two;
int? two;
}
@serializable
@orm
class _Alphabet extends Model {
String value;
String? value;
@belongsTo
_Numbers numbers;
_Numbers? numbers;
}

View file

@ -46,8 +46,9 @@ class AlphabetMigration extends Migration {
// OrmGenerator
// **************************************************************************
class NumbersQuery extends Query<Numbers, NumbersQueryWhere> {
NumbersQuery({Query parent, Set<String> trampoline}) : super(parent: parent) {
class NumbersQuery extends Query<Numbers?, NumbersQueryWhere?> {
NumbersQuery({Query? parent, Set<String>? trampoline})
: super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
expressions['two'] = 'SELECT 2';
@ -57,7 +58,7 @@ class NumbersQuery extends Query<Numbers, NumbersQueryWhere> {
@override
final NumbersQueryValues values = NumbersQueryValues();
NumbersQueryWhere _where;
NumbersQueryWhere? _where;
@override
get casts {
@ -75,7 +76,7 @@ class NumbersQuery extends Query<Numbers, NumbersQueryWhere> {
}
@override
NumbersQueryWhere get where {
NumbersQueryWhere? get where {
return _where;
}
@ -84,13 +85,13 @@ class NumbersQuery extends Query<Numbers, NumbersQueryWhere> {
return NumbersQueryWhere(this);
}
static Numbers parseRow(List row) {
static Numbers? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = Numbers(
id: row[0].toString(),
createdAt: (row[1] as DateTime),
updatedAt: (row[2] as DateTime),
two: (row[3] as int));
createdAt: (row[1] as DateTime?),
updatedAt: (row[2] as DateTime?),
two: (row[3] as int?));
return model;
}
@ -124,29 +125,29 @@ class NumbersQueryValues extends MapQueryValues {
return {};
}
String get id {
return (values['id'] as String);
String? get id {
return (values['id'] as String?);
}
set id(String value) => values['id'] = value;
DateTime get createdAt {
return (values['created_at'] as DateTime);
set id(String? value) => values['id'] = value;
DateTime? get createdAt {
return (values['created_at'] as DateTime?);
}
set createdAt(DateTime value) => values['created_at'] = value;
DateTime get updatedAt {
return (values['updated_at'] as DateTime);
set createdAt(DateTime? value) => values['created_at'] = value;
DateTime? get updatedAt {
return (values['updated_at'] as DateTime?);
}
set updatedAt(DateTime value) => values['updated_at'] = value;
set updatedAt(DateTime? value) => values['updated_at'] = value;
void copyFrom(Numbers model) {
createdAt = model.createdAt;
updatedAt = model.updatedAt;
}
}
class AlphabetQuery extends Query<Alphabet, AlphabetQueryWhere> {
AlphabetQuery({Query parent, Set<String> trampoline})
class AlphabetQuery extends Query<Alphabet?, AlphabetQueryWhere?> {
AlphabetQuery({Query? parent, Set<String>? trampoline})
: super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
@ -160,9 +161,9 @@ class AlphabetQuery extends Query<Alphabet, AlphabetQueryWhere> {
@override
final AlphabetQueryValues values = AlphabetQueryValues();
AlphabetQueryWhere _where;
AlphabetQueryWhere? _where;
NumbersQuery _numbers;
NumbersQuery? _numbers;
@override
get casts {
@ -180,7 +181,7 @@ class AlphabetQuery extends Query<Alphabet, AlphabetQueryWhere> {
}
@override
AlphabetQueryWhere get where {
AlphabetQueryWhere? get where {
return _where;
}
@ -189,13 +190,13 @@ class AlphabetQuery extends Query<Alphabet, AlphabetQueryWhere> {
return AlphabetQueryWhere(this);
}
static Alphabet parseRow(List row) {
static Alphabet? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = Alphabet(
id: row[0].toString(),
createdAt: (row[1] as DateTime),
updatedAt: (row[2] as DateTime),
value: (row[3] as String));
createdAt: (row[1] as DateTime?),
updatedAt: (row[2] as DateTime?),
value: (row[3] as String?));
if (row.length > 5) {
model = model.copyWith(
numbers: NumbersQuery.parseRow(row.skip(5).take(4).toList()));
@ -208,7 +209,7 @@ class AlphabetQuery extends Query<Alphabet, AlphabetQueryWhere> {
return parseRow(row);
}
NumbersQuery get numbers {
NumbersQuery? get numbers {
return _numbers;
}
}
@ -243,37 +244,37 @@ class AlphabetQueryValues extends MapQueryValues {
return {};
}
String get id {
return (values['id'] as String);
String? get id {
return (values['id'] as String?);
}
set id(String value) => values['id'] = value;
DateTime get createdAt {
return (values['created_at'] as DateTime);
set id(String? value) => values['id'] = value;
DateTime? get createdAt {
return (values['created_at'] as DateTime?);
}
set createdAt(DateTime value) => values['created_at'] = value;
DateTime get updatedAt {
return (values['updated_at'] as DateTime);
set createdAt(DateTime? value) => values['created_at'] = value;
DateTime? get updatedAt {
return (values['updated_at'] as DateTime?);
}
set updatedAt(DateTime value) => values['updated_at'] = value;
String get value {
return (values['value'] as String);
set updatedAt(DateTime? value) => values['updated_at'] = value;
String? get value {
return (values['value'] as String?);
}
set value(String value) => values['value'] = value;
int get numbersId {
return (values['numbers_id'] as int);
set value(String? value) => values['value'] = value;
int? get numbersId {
return (values['numbers_id'] as int?);
}
set numbersId(int value) => values['numbers_id'] = value;
set numbersId(int? value) => values['numbers_id'] = value;
void copyFrom(Alphabet model) {
createdAt = model.createdAt;
updatedAt = model.updatedAt;
value = model.value;
if (model.numbers != null) {
values['numbers_id'] = model.numbers.id;
values['numbers_id'] = model.numbers!.id;
}
}
}
@ -288,21 +289,21 @@ class Numbers extends _Numbers {
/// A unique identifier corresponding to this item.
@override
String id;
String? id;
/// The time at which this item was created.
@override
DateTime createdAt;
DateTime? createdAt;
/// The last time at which this item was updated.
@override
DateTime updatedAt;
DateTime? updatedAt;
@override
int two;
int? two;
Numbers copyWith(
{String id, DateTime createdAt, DateTime updatedAt, int two}) {
{String? id, DateTime? createdAt, DateTime? updatedAt, int? two}) {
return Numbers(
id: id ?? this.id,
createdAt: createdAt ?? this.createdAt,
@ -328,7 +329,7 @@ class Numbers extends _Numbers {
return "Numbers(id=$id, createdAt=$createdAt, updatedAt=$updatedAt, two=$two)";
}
Map<String, dynamic> toJson() {
Map<String, dynamic>? toJson() {
return NumbersSerializer.toMap(this);
}
}
@ -339,28 +340,28 @@ class Alphabet extends _Alphabet {
/// A unique identifier corresponding to this item.
@override
String id;
String? id;
/// The time at which this item was created.
@override
DateTime createdAt;
DateTime? createdAt;
/// The last time at which this item was updated.
@override
DateTime updatedAt;
DateTime? updatedAt;
@override
String value;
String? value;
@override
_Numbers numbers;
_Numbers? numbers;
Alphabet copyWith(
{String id,
DateTime createdAt,
DateTime updatedAt,
String value,
_Numbers numbers}) {
{String? id,
DateTime? createdAt,
DateTime? updatedAt,
String? value,
_Numbers? numbers}) {
return Alphabet(
id: id ?? this.id,
createdAt: createdAt ?? this.createdAt,
@ -399,11 +400,11 @@ class Alphabet extends _Alphabet {
const NumbersSerializer numbersSerializer = NumbersSerializer();
class NumbersEncoder extends Converter<Numbers, Map> {
class NumbersEncoder extends Converter<Numbers, Map?> {
const NumbersEncoder();
@override
Map convert(Numbers model) => NumbersSerializer.toMap(model);
Map? convert(Numbers model) => NumbersSerializer.toMap(model);
}
class NumbersDecoder extends Converter<Map, Numbers> {
@ -413,7 +414,7 @@ class NumbersDecoder extends Converter<Map, Numbers> {
Numbers convert(Map map) => NumbersSerializer.fromMap(map);
}
class NumbersSerializer extends Codec<Numbers, Map> {
class NumbersSerializer extends Codec<Numbers, Map?> {
const NumbersSerializer();
@override
@ -422,21 +423,21 @@ class NumbersSerializer extends Codec<Numbers, Map> {
get decoder => const NumbersDecoder();
static Numbers fromMap(Map map) {
return Numbers(
id: map['id'] as String,
id: map['id'] as String?,
createdAt: map['created_at'] != null
? (map['created_at'] is DateTime
? (map['created_at'] as DateTime)
? (map['created_at'] as DateTime?)
: DateTime.parse(map['created_at'].toString()))
: null,
updatedAt: map['updated_at'] != null
? (map['updated_at'] is DateTime
? (map['updated_at'] as DateTime)
? (map['updated_at'] as DateTime?)
: DateTime.parse(map['updated_at'].toString()))
: null,
two: map['two'] as int);
two: map['two'] as int?);
}
static Map<String, dynamic> toMap(_Numbers model) {
static Map<String, dynamic>? toMap(_Numbers? model) {
if (model == null) {
return null;
}
@ -486,27 +487,24 @@ class AlphabetSerializer extends Codec<Alphabet, Map> {
get decoder => const AlphabetDecoder();
static Alphabet fromMap(Map map) {
return Alphabet(
id: map['id'] as String,
id: map['id'] as String?,
createdAt: map['created_at'] != null
? (map['created_at'] is DateTime
? (map['created_at'] as DateTime)
? (map['created_at'] as DateTime?)
: DateTime.parse(map['created_at'].toString()))
: null,
updatedAt: map['updated_at'] != null
? (map['updated_at'] is DateTime
? (map['updated_at'] as DateTime)
? (map['updated_at'] as DateTime?)
: DateTime.parse(map['updated_at'].toString()))
: null,
value: map['value'] as String,
value: map['value'] as String?,
numbers: map['numbers'] != null
? NumbersSerializer.fromMap(map['numbers'] as Map)
: null);
}
static Map<String, dynamic> toMap(_Alphabet model) {
if (model == null) {
return null;
}
return {
'id': model.id,
'created_at': model.createdAt?.toIso8601String(),

View file

@ -9,20 +9,20 @@ part 'email_indexed.g.dart';
@orm
abstract class _Role {
@PrimaryKey(columnType: ColumnType.varChar)
String get role;
String? get role;
@ManyToMany(_RoleUser)
List<_User> get users;
List<_User?>? get users;
}
@serializable
@orm
abstract class _RoleUser {
@belongsTo
_Role get role;
_Role? get role;
@belongsTo
_User get user;
_User? get user;
}
@serializable
@ -30,10 +30,10 @@ abstract class _RoleUser {
abstract class _User {
// @PrimaryKey(columnType: ColumnType.varChar)
@primaryKey
String get email;
String get name;
String get password;
String? get email;
String? get name;
String? get password;
@ManyToMany(_RoleUser)
List<_Role> get roles;
List<_Role?>? get roles;
}

View file

@ -59,8 +59,8 @@ class UserMigration extends Migration {
// OrmGenerator
// **************************************************************************
class RoleQuery extends Query<Role, RoleQueryWhere> {
RoleQuery({Query parent, Set<String> trampoline}) : super(parent: parent) {
class RoleQuery extends Query<Role?, RoleQueryWhere?> {
RoleQuery({Query? parent, Set<String>? trampoline}) : super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
_where = RoleQueryWhere(this);
@ -75,7 +75,7 @@ class RoleQuery extends Query<Role, RoleQueryWhere> {
@override
final RoleQueryValues values = RoleQueryValues();
RoleQueryWhere _where;
RoleQueryWhere? _where;
@override
get casts {
@ -93,7 +93,7 @@ class RoleQuery extends Query<Role, RoleQueryWhere> {
}
@override
RoleQueryWhere get where {
RoleQueryWhere? get where {
return _where;
}
@ -102,9 +102,9 @@ class RoleQuery extends Query<Role, RoleQueryWhere> {
return RoleQueryWhere(this);
}
static Role parseRow(List row) {
static Role? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = Role(role: (row[0] as String));
var model = Role(role: (row[0] as String?));
if (row.length > 1) {
model = model.copyWith(
users: [UserQuery.parseRow(row.skip(1).take(3).toList())]
@ -121,24 +121,24 @@ class RoleQuery extends Query<Role, RoleQueryWhere> {
@override
bool canCompile(trampoline) {
return (!(trampoline.contains('roles') &&
trampoline.contains('role_users')));
return (!(trampoline?.contains('roles') == true &&
trampoline?.contains('role_users') == true));
}
@override
get(QueryExecutor executor) {
return super.get(executor).then((result) {
return result.fold<List<Role>>([], (out, model) {
var idx = out.indexWhere((m) => m.role == model.role);
return result.fold<List<Role?>>([], (out, model) {
var idx = out.indexWhere((m) => m!.role == model!.role);
if (idx == -1) {
return out..add(model);
} else {
var l = out[idx];
var l = out[idx]!;
return out
..[idx] = l.copyWith(
users: List<_User>.from(l.users ?? [])
..addAll(model.users ?? []));
users: List<_User?>.from(l.users ?? [])
..addAll(model!.users ?? []));
}
});
});
@ -147,17 +147,17 @@ class RoleQuery extends Query<Role, RoleQueryWhere> {
@override
update(QueryExecutor executor) {
return super.update(executor).then((result) {
return result.fold<List<Role>>([], (out, model) {
var idx = out.indexWhere((m) => m.role == model.role);
return result.fold<List<Role?>>([], (out, model) {
var idx = out.indexWhere((m) => m!.role == model!.role);
if (idx == -1) {
return out..add(model);
} else {
var l = out[idx];
var l = out[idx]!;
return out
..[idx] = l.copyWith(
users: List<_User>.from(l.users ?? [])
..addAll(model.users ?? []));
users: List<_User?>.from(l.users ?? [])
..addAll(model!.users ?? []));
}
});
});
@ -166,17 +166,17 @@ class RoleQuery extends Query<Role, RoleQueryWhere> {
@override
delete(QueryExecutor executor) {
return super.delete(executor).then((result) {
return result.fold<List<Role>>([], (out, model) {
var idx = out.indexWhere((m) => m.role == model.role);
return result.fold<List<Role?>>([], (out, model) {
var idx = out.indexWhere((m) => m!.role == model!.role);
if (idx == -1) {
return out..add(model);
} else {
var l = out[idx];
var l = out[idx]!;
return out
..[idx] = l.copyWith(
users: List<_User>.from(l.users ?? [])
..addAll(model.users ?? []));
users: List<_User?>.from(l.users ?? [])
..addAll(model!.users ?? []));
}
});
});
@ -201,18 +201,18 @@ class RoleQueryValues extends MapQueryValues {
return {};
}
String get role {
return (values['role'] as String);
String? get role {
return (values['role'] as String?);
}
set role(String value) => values['role'] = value;
set role(String? value) => values['role'] = value;
void copyFrom(Role model) {
role = model.role;
}
}
class RoleUserQuery extends Query<RoleUser, RoleUserQueryWhere> {
RoleUserQuery({Query parent, Set<String> trampoline})
class RoleUserQuery extends Query<RoleUser?, RoleUserQueryWhere?> {
RoleUserQuery({Query? parent, Set<String>? trampoline})
: super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
@ -229,11 +229,11 @@ class RoleUserQuery extends Query<RoleUser, RoleUserQueryWhere> {
@override
final RoleUserQueryValues values = RoleUserQueryValues();
RoleUserQueryWhere _where;
RoleUserQueryWhere? _where;
RoleQuery _role;
RoleQuery? _role;
UserQuery _user;
UserQuery? _user;
@override
get casts {
@ -251,7 +251,7 @@ class RoleUserQuery extends Query<RoleUser, RoleUserQueryWhere> {
}
@override
RoleUserQueryWhere get where {
RoleUserQueryWhere? get where {
return _where;
}
@ -260,7 +260,7 @@ class RoleUserQuery extends Query<RoleUser, RoleUserQueryWhere> {
return RoleUserQueryWhere(this);
}
static RoleUser parseRow(List row) {
static RoleUser? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = RoleUser();
if (row.length > 2) {
@ -279,11 +279,11 @@ class RoleUserQuery extends Query<RoleUser, RoleUserQueryWhere> {
return parseRow(row);
}
RoleQuery get role {
RoleQuery? get role {
return _role;
}
UserQuery get user {
UserQuery? get user {
return _user;
}
}
@ -309,28 +309,28 @@ class RoleUserQueryValues extends MapQueryValues {
return {};
}
String get roleRole {
return (values['role_role'] as String);
String? get roleRole {
return (values['role_role'] as String?);
}
set roleRole(String value) => values['role_role'] = value;
String get userEmail {
return (values['user_email'] as String);
set roleRole(String? value) => values['role_role'] = value;
String? get userEmail {
return (values['user_email'] as String?);
}
set userEmail(String value) => values['user_email'] = value;
set userEmail(String? value) => values['user_email'] = value;
void copyFrom(RoleUser model) {
if (model.role != null) {
values['role_role'] = model.role.role;
values['role_role'] = model.role!.role;
}
if (model.user != null) {
values['user_email'] = model.user.email;
values['user_email'] = model.user!.email;
}
}
}
class UserQuery extends Query<User, UserQueryWhere> {
UserQuery({Query parent, Set<String> trampoline}) : super(parent: parent) {
class UserQuery extends Query<User?, UserQueryWhere?> {
UserQuery({Query? parent, Set<String>? trampoline}) : super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
_where = UserQueryWhere(this);
@ -345,7 +345,7 @@ class UserQuery extends Query<User, UserQueryWhere> {
@override
final UserQueryValues values = UserQueryValues();
UserQueryWhere _where;
UserQueryWhere? _where;
@override
get casts {
@ -363,7 +363,7 @@ class UserQuery extends Query<User, UserQueryWhere> {
}
@override
UserQueryWhere get where {
UserQueryWhere? get where {
return _where;
}
@ -372,12 +372,12 @@ class UserQuery extends Query<User, UserQueryWhere> {
return UserQueryWhere(this);
}
static User parseRow(List row) {
static User? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = User(
email: (row[0] as String),
name: (row[1] as String),
password: (row[2] as String));
email: (row[0] as String?),
name: (row[1] as String?),
password: (row[2] as String?));
if (row.length > 3) {
model = model.copyWith(
roles: [RoleQuery.parseRow(row.skip(3).take(1).toList())]
@ -394,24 +394,24 @@ class UserQuery extends Query<User, UserQueryWhere> {
@override
bool canCompile(trampoline) {
return (!(trampoline.contains('users') &&
trampoline.contains('role_users')));
return (!(trampoline?.contains('users') == true &&
trampoline?.contains('role_users') == true));
}
@override
get(QueryExecutor executor) {
return super.get(executor).then((result) {
return result.fold<List<User>>([], (out, model) {
var idx = out.indexWhere((m) => m.email == model.email);
return result.fold<List<User?>>([], (out, model) {
var idx = out.indexWhere((m) => m!.email == model!.email);
if (idx == -1) {
return out..add(model);
} else {
var l = out[idx];
var l = out[idx]!;
return out
..[idx] = l.copyWith(
roles: List<_Role>.from(l.roles ?? [])
..addAll(model.roles ?? []));
roles: List<_Role?>.from(l.roles ?? [])
..addAll(model!.roles ?? []));
}
});
});
@ -420,17 +420,17 @@ class UserQuery extends Query<User, UserQueryWhere> {
@override
update(QueryExecutor executor) {
return super.update(executor).then((result) {
return result.fold<List<User>>([], (out, model) {
var idx = out.indexWhere((m) => m.email == model.email);
return result.fold<List<User?>>([], (out, model) {
var idx = out.indexWhere((m) => m!.email == model!.email);
if (idx == -1) {
return out..add(model);
} else {
var l = out[idx];
var l = out[idx]!;
return out
..[idx] = l.copyWith(
roles: List<_Role>.from(l.roles ?? [])
..addAll(model.roles ?? []));
roles: List<_Role?>.from(l.roles ?? [])
..addAll(model!.roles ?? []));
}
});
});
@ -439,17 +439,17 @@ class UserQuery extends Query<User, UserQueryWhere> {
@override
delete(QueryExecutor executor) {
return super.delete(executor).then((result) {
return result.fold<List<User>>([], (out, model) {
var idx = out.indexWhere((m) => m.email == model.email);
return result.fold<List<User?>>([], (out, model) {
var idx = out.indexWhere((m) => m!.email == model!.email);
if (idx == -1) {
return out..add(model);
} else {
var l = out[idx];
var l = out[idx]!;
return out
..[idx] = l.copyWith(
roles: List<_Role>.from(l.roles ?? [])
..addAll(model.roles ?? []));
roles: List<_Role?>.from(l.roles ?? [])
..addAll(model!.roles ?? []));
}
});
});
@ -480,21 +480,21 @@ class UserQueryValues extends MapQueryValues {
return {};
}
String get email {
return (values['email'] as String);
String? get email {
return (values['email'] as String?);
}
set email(String value) => values['email'] = value;
String get name {
return (values['name'] as String);
set email(String? value) => values['email'] = value;
String? get name {
return (values['name'] as String?);
}
set name(String value) => values['name'] = value;
String get password {
return (values['password'] as String);
set name(String? value) => values['name'] = value;
String? get password {
return (values['password'] as String?);
}
set password(String value) => values['password'] = value;
set password(String? value) => values['password'] = value;
void copyFrom(User model) {
email = model.email;
name = model.name;
@ -511,19 +511,19 @@ class Role implements _Role {
const Role({this.role, this.users});
@override
final String role;
final String? role;
@override
final List<_User> users;
final List<_User?>? users;
Role copyWith({String role, List<_User> users}) {
Role copyWith({String? role, List<_User?>? users}) {
return Role(role: role ?? this.role, users: users ?? this.users);
}
bool operator ==(other) {
return other is _Role &&
other.role == role &&
ListEquality<_User>(DefaultEquality<_User>())
ListEquality<_User?>(DefaultEquality<_User>())
.equals(other.users, users);
}
@ -537,7 +537,7 @@ class Role implements _Role {
return "Role(role=$role, users=$users)";
}
Map<String, dynamic> toJson() {
Map<String, dynamic>? toJson() {
return RoleSerializer.toMap(this);
}
}
@ -547,12 +547,12 @@ class RoleUser implements _RoleUser {
const RoleUser({this.role, this.user});
@override
final _Role role;
final _Role? role;
@override
final _User user;
final _User? user;
RoleUser copyWith({_Role role, _User user}) {
RoleUser copyWith({_Role? role, _User? user}) {
return RoleUser(role: role ?? this.role, user: user ?? this.user);
}
@ -580,19 +580,19 @@ class User implements _User {
const User({this.email, this.name, this.password, this.roles});
@override
final String email;
final String? email;
@override
final String name;
final String? name;
@override
final String password;
final String? password;
@override
final List<_Role> roles;
final List<_Role?>? roles;
User copyWith(
{String email, String name, String password, List<_Role> roles}) {
{String? email, String? name, String? password, List<_Role?>? roles}) {
return User(
email: email ?? this.email,
name: name ?? this.name,
@ -605,7 +605,7 @@ class User implements _User {
other.email == email &&
other.name == name &&
other.password == password &&
ListEquality<_Role>(DefaultEquality<_Role>())
ListEquality<_Role?>(DefaultEquality<_Role>())
.equals(other.roles, roles);
}
@ -619,7 +619,7 @@ class User implements _User {
return "User(email=$email, name=$name, password=$password, roles=$roles)";
}
Map<String, dynamic> toJson() {
Map<String, dynamic>? toJson() {
return UserSerializer.toMap(this);
}
}
@ -630,11 +630,11 @@ class User implements _User {
const RoleSerializer roleSerializer = RoleSerializer();
class RoleEncoder extends Converter<Role, Map> {
class RoleEncoder extends Converter<Role, Map?> {
const RoleEncoder();
@override
Map convert(Role model) => RoleSerializer.toMap(model);
Map? convert(Role model) => RoleSerializer.toMap(model);
}
class RoleDecoder extends Converter<Map, Role> {
@ -644,7 +644,7 @@ class RoleDecoder extends Converter<Map, Role> {
Role convert(Map map) => RoleSerializer.fromMap(map);
}
class RoleSerializer extends Codec<Role, Map> {
class RoleSerializer extends Codec<Role, Map?> {
const RoleSerializer();
@override
@ -653,20 +653,20 @@ class RoleSerializer extends Codec<Role, Map> {
get decoder => const RoleDecoder();
static Role fromMap(Map map) {
return Role(
role: map['role'] as String,
role: map['role'] as String?,
users: map['users'] is Iterable
? List.unmodifiable(((map['users'] as Iterable).whereType<Map>())
.map(UserSerializer.fromMap))
: null);
}
static Map<String, dynamic> toMap(_Role model) {
static Map<String, dynamic>? toMap(_Role? model) {
if (model == null) {
return null;
}
return {
'role': model.role,
'users': model.users?.map((m) => UserSerializer.toMap(m))?.toList()
'users': model.users?.map((m) => UserSerializer.toMap(m)).toList()
};
}
}
@ -713,9 +713,6 @@ class RoleUserSerializer extends Codec<RoleUser, Map> {
}
static Map<String, dynamic> toMap(_RoleUser model) {
if (model == null) {
return null;
}
return {
'role': RoleSerializer.toMap(model.role),
'user': UserSerializer.toMap(model.user)
@ -733,11 +730,11 @@ abstract class RoleUserFields {
const UserSerializer userSerializer = UserSerializer();
class UserEncoder extends Converter<User, Map> {
class UserEncoder extends Converter<User, Map?> {
const UserEncoder();
@override
Map convert(User model) => UserSerializer.toMap(model);
Map? convert(User model) => UserSerializer.toMap(model);
}
class UserDecoder extends Converter<Map, User> {
@ -747,7 +744,7 @@ class UserDecoder extends Converter<Map, User> {
User convert(Map map) => UserSerializer.fromMap(map);
}
class UserSerializer extends Codec<User, Map> {
class UserSerializer extends Codec<User, Map?> {
const UserSerializer();
@override
@ -756,16 +753,16 @@ class UserSerializer extends Codec<User, Map> {
get decoder => const UserDecoder();
static User fromMap(Map map) {
return User(
email: map['email'] as String,
name: map['name'] as String,
password: map['password'] as String,
email: map['email'] as String?,
name: map['name'] as String?,
password: map['password'] as String?,
roles: map['roles'] is Iterable
? List.unmodifiable(((map['roles'] as Iterable).whereType<Map>())
.map(RoleSerializer.fromMap))
: null);
}
static Map<String, dynamic> toMap(_User model) {
static Map<String, dynamic>? toMap(_User? model) {
if (model == null) {
return null;
}
@ -773,7 +770,7 @@ class UserSerializer extends Codec<User, Map> {
'email': model.email,
'name': model.name,
'password': model.password,
'roles': model.roles?.map((m) => RoleSerializer.toMap(m))?.toList()
'roles': model.roles?.map((m) => RoleSerializer.toMap(m)).toList()
};
}
}

View file

@ -20,5 +20,5 @@ abstract class _HasCar extends Model {
// Car get car;
@SerializableField(isNullable: false, defaultValue: CarType.sedan)
CarType get type;
CarType? get type;
}

View file

@ -27,8 +27,9 @@ class HasCarMigration extends Migration {
// OrmGenerator
// **************************************************************************
class HasCarQuery extends Query<HasCar, HasCarQueryWhere> {
HasCarQuery({Query parent, Set<String> trampoline}) : super(parent: parent) {
class HasCarQuery extends Query<HasCar?, HasCarQueryWhere?> {
HasCarQuery({Query? parent, Set<String>? trampoline})
: super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
_where = HasCarQueryWhere(this);
@ -37,7 +38,7 @@ class HasCarQuery extends Query<HasCar, HasCarQueryWhere> {
@override
final HasCarQueryValues values = HasCarQueryValues();
HasCarQueryWhere _where;
HasCarQueryWhere? _where;
@override
get casts {
@ -55,7 +56,7 @@ class HasCarQuery extends Query<HasCar, HasCarQueryWhere> {
}
@override
HasCarQueryWhere get where {
HasCarQueryWhere? get where {
return _where;
}
@ -64,12 +65,12 @@ class HasCarQuery extends Query<HasCar, HasCarQueryWhere> {
return HasCarQueryWhere(this);
}
static HasCar parseRow(List row) {
static HasCar? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = HasCar(
id: row[0].toString(),
createdAt: (row[1] as DateTime),
updatedAt: (row[2] as DateTime),
createdAt: (row[1] as DateTime?),
updatedAt: (row[2] as DateTime?),
type: row[3] == null ? null : CarType.values[(row[3] as int)]);
return model;
}
@ -85,7 +86,8 @@ class HasCarQueryWhere extends QueryWhere {
: id = NumericSqlExpressionBuilder<int>(query, 'id'),
createdAt = DateTimeSqlExpressionBuilder(query, 'created_at'),
updatedAt = DateTimeSqlExpressionBuilder(query, 'updated_at'),
type = EnumSqlExpressionBuilder<CarType>(query, 'type', (v) => v.index);
type =
EnumSqlExpressionBuilder<CarType?>(query, 'type', (v) => v!.index);
final NumericSqlExpressionBuilder<int> id;
@ -93,7 +95,7 @@ class HasCarQueryWhere extends QueryWhere {
final DateTimeSqlExpressionBuilder updatedAt;
final EnumSqlExpressionBuilder<CarType> type;
final EnumSqlExpressionBuilder<CarType?> type;
@override
get expressionBuilders {
@ -107,26 +109,26 @@ class HasCarQueryValues extends MapQueryValues {
return {};
}
String get id {
return (values['id'] as String);
String? get id {
return (values['id'] as String?);
}
set id(String value) => values['id'] = value;
DateTime get createdAt {
return (values['created_at'] as DateTime);
set id(String? value) => values['id'] = value;
DateTime? get createdAt {
return (values['created_at'] as DateTime?);
}
set createdAt(DateTime value) => values['created_at'] = value;
DateTime get updatedAt {
return (values['updated_at'] as DateTime);
set createdAt(DateTime? value) => values['created_at'] = value;
DateTime? get updatedAt {
return (values['updated_at'] as DateTime?);
}
set updatedAt(DateTime value) => values['updated_at'] = value;
set updatedAt(DateTime? value) => values['updated_at'] = value;
CarType get type {
return CarType.values[(values['type'] as int)];
}
set type(CarType value) => values['type'] = value?.index;
set type(CarType? value) => values['type'] = value?.index;
void copyFrom(HasCar model) {
createdAt = model.createdAt;
updatedAt = model.updatedAt;
@ -144,21 +146,21 @@ class HasCar extends _HasCar {
/// A unique identifier corresponding to this item.
@override
String id;
String? id;
/// The time at which this item was created.
@override
DateTime createdAt;
DateTime? createdAt;
/// The last time at which this item was updated.
@override
DateTime updatedAt;
DateTime? updatedAt;
@override
final CarType type;
final CarType? type;
HasCar copyWith(
{String id, DateTime createdAt, DateTime updatedAt, CarType type}) {
{String? id, DateTime? createdAt, DateTime? updatedAt, CarType? type}) {
return HasCar(
id: id ?? this.id,
createdAt: createdAt ?? this.createdAt,
@ -222,28 +224,25 @@ class HasCarSerializer extends Codec<HasCar, Map> {
}
return HasCar(
id: map['id'] as String,
id: map['id'] as String?,
createdAt: map['created_at'] != null
? (map['created_at'] is DateTime
? (map['created_at'] as DateTime)
? (map['created_at'] as DateTime?)
: DateTime.parse(map['created_at'].toString()))
: null,
updatedAt: map['updated_at'] != null
? (map['updated_at'] is DateTime
? (map['updated_at'] as DateTime)
? (map['updated_at'] as DateTime?)
: DateTime.parse(map['updated_at'].toString()))
: null,
type: map['type'] is CarType
? (map['type'] as CarType)
? (map['type'] as CarType?)
: (map['type'] is int
? CarType.values[map['type'] as int]
: CarType.sedan));
}
static Map<String, dynamic> toMap(_HasCar model) {
if (model == null) {
return null;
}
if (model.type == null) {
throw FormatException("Missing required field 'type' on HasCar.");
}
@ -252,7 +251,7 @@ class HasCarSerializer extends Codec<HasCar, Map> {
'id': model.id,
'created_at': model.createdAt?.toIso8601String(),
'updated_at': model.updatedAt?.toIso8601String(),
'type': model.type == null ? null : CarType.values.indexOf(model.type)
'type': model.type == null ? null : CarType.values.indexOf(model.type!)
};
}
}

View file

@ -11,9 +11,9 @@ part 'has_map.g.dart';
@orm
@serializable
abstract class _HasMap {
Map get value;
Map? get value;
List get list;
List? get list;
// TODO: Support custom serializers
// @SerializableField(

View file

@ -25,8 +25,9 @@ class HasMapMigration extends Migration {
// OrmGenerator
// **************************************************************************
class HasMapQuery extends Query<HasMap, HasMapQueryWhere> {
HasMapQuery({Query parent, Set<String> trampoline}) : super(parent: parent) {
class HasMapQuery extends Query<HasMap?, HasMapQueryWhere?> {
HasMapQuery({Query? parent, Set<String>? trampoline})
: super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
_where = HasMapQueryWhere(this);
@ -35,7 +36,7 @@ class HasMapQuery extends Query<HasMap, HasMapQueryWhere> {
@override
final HasMapQueryValues values = HasMapQueryValues();
HasMapQueryWhere _where;
HasMapQueryWhere? _where;
@override
get casts {
@ -53,7 +54,7 @@ class HasMapQuery extends Query<HasMap, HasMapQueryWhere> {
}
@override
HasMapQueryWhere get where {
HasMapQueryWhere? get where {
return _where;
}
@ -62,11 +63,11 @@ class HasMapQuery extends Query<HasMap, HasMapQueryWhere> {
return HasMapQueryWhere(this);
}
static HasMap parseRow(List row) {
static HasMap? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = HasMap(
value: (row[0] as Map<dynamic, dynamic>),
list: (row[1] as List<dynamic>));
value: (row[0] as Map<dynamic, dynamic>?),
list: (row[1] as List<dynamic>?));
return model;
}
@ -97,16 +98,16 @@ class HasMapQueryValues extends MapQueryValues {
return {'list': 'jsonb'};
}
Map<dynamic, dynamic> get value {
return (values['value'] as Map<dynamic, dynamic>);
Map<dynamic, dynamic>? get value {
return (values['value'] as Map<dynamic, dynamic>?);
}
set value(Map<dynamic, dynamic> value) => values['value'] = value;
List<dynamic> get list {
return (json.decode((values['list'] as String)) as List);
set value(Map<dynamic, dynamic>? value) => values['value'] = value;
List<dynamic>? get list {
return (json.decode((values['list'] as String)) as List?);
}
set list(List<dynamic> value) => values['list'] = json.encode(value);
set list(List<dynamic>? value) => values['list'] = json.encode(value);
void copyFrom(HasMap model) {
value = model.value;
list = model.list;
@ -122,12 +123,12 @@ class HasMap implements _HasMap {
const HasMap({this.value, this.list});
@override
final Map<dynamic, dynamic> value;
final Map<dynamic, dynamic>? value;
@override
final List<dynamic> list;
final List<dynamic>? list;
HasMap copyWith({Map<dynamic, dynamic> value, List<dynamic> list}) {
HasMap copyWith({Map<dynamic, dynamic>? value, List<dynamic>? list}) {
return HasMap(value: value ?? this.value, list: list ?? this.list);
}
@ -192,9 +193,6 @@ class HasMapSerializer extends Codec<HasMap, Map> {
}
static Map<String, dynamic> toMap(_HasMap model) {
if (model == null) {
return null;
}
return {'value': model.value, 'list': model.list};
}
}

View file

@ -10,15 +10,15 @@ part 'leg.g.dart';
@orm
class _Leg extends Model {
@hasOne
_Foot foot;
_Foot? foot;
String name;
String? name;
}
@serializable
@Orm(tableName: 'feet')
class _Foot extends Model {
int legId;
int? legId;
double nToes;
double? nToes;
}

View file

@ -45,8 +45,8 @@ class FootMigration extends Migration {
// OrmGenerator
// **************************************************************************
class LegQuery extends Query<Leg, LegQueryWhere> {
LegQuery({Query parent, Set<String> trampoline}) : super(parent: parent) {
class LegQuery extends Query<Leg?, LegQueryWhere?> {
LegQuery({Query? parent, Set<String>? trampoline}) : super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
_where = LegQueryWhere(this);
@ -65,9 +65,9 @@ class LegQuery extends Query<Leg, LegQueryWhere> {
@override
final LegQueryValues values = LegQueryValues();
LegQueryWhere _where;
LegQueryWhere? _where;
FootQuery _foot;
FootQuery? _foot;
@override
get casts {
@ -85,7 +85,7 @@ class LegQuery extends Query<Leg, LegQueryWhere> {
}
@override
LegQueryWhere get where {
LegQueryWhere? get where {
return _where;
}
@ -94,13 +94,13 @@ class LegQuery extends Query<Leg, LegQueryWhere> {
return LegQueryWhere(this);
}
static Leg parseRow(List row) {
static Leg? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = Leg(
id: row[0].toString(),
createdAt: (row[1] as DateTime),
updatedAt: (row[2] as DateTime),
name: (row[3] as String));
createdAt: (row[1] as DateTime?),
updatedAt: (row[2] as DateTime?),
name: (row[3] as String?));
if (row.length > 4) {
model = model.copyWith(
foot: FootQuery.parseRow(row.skip(4).take(5).toList()));
@ -113,7 +113,7 @@ class LegQuery extends Query<Leg, LegQueryWhere> {
return parseRow(row);
}
FootQuery get foot {
FootQuery? get foot {
return _foot;
}
}
@ -145,26 +145,26 @@ class LegQueryValues extends MapQueryValues {
return {};
}
String get id {
return (values['id'] as String);
String? get id {
return (values['id'] as String?);
}
set id(String value) => values['id'] = value;
DateTime get createdAt {
return (values['created_at'] as DateTime);
set id(String? value) => values['id'] = value;
DateTime? get createdAt {
return (values['created_at'] as DateTime?);
}
set createdAt(DateTime value) => values['created_at'] = value;
DateTime get updatedAt {
return (values['updated_at'] as DateTime);
set createdAt(DateTime? value) => values['created_at'] = value;
DateTime? get updatedAt {
return (values['updated_at'] as DateTime?);
}
set updatedAt(DateTime value) => values['updated_at'] = value;
String get name {
return (values['name'] as String);
set updatedAt(DateTime? value) => values['updated_at'] = value;
String? get name {
return (values['name'] as String?);
}
set name(String value) => values['name'] = value;
set name(String? value) => values['name'] = value;
void copyFrom(Leg model) {
createdAt = model.createdAt;
updatedAt = model.updatedAt;
@ -172,8 +172,8 @@ class LegQueryValues extends MapQueryValues {
}
}
class FootQuery extends Query<Foot, FootQueryWhere> {
FootQuery({Query parent, Set<String> trampoline}) : super(parent: parent) {
class FootQuery extends Query<Foot?, FootQueryWhere?> {
FootQuery({Query? parent, Set<String>? trampoline}) : super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
_where = FootQueryWhere(this);
@ -182,7 +182,7 @@ class FootQuery extends Query<Foot, FootQueryWhere> {
@override
final FootQueryValues values = FootQueryValues();
FootQueryWhere _where;
FootQueryWhere? _where;
@override
get casts {
@ -200,7 +200,7 @@ class FootQuery extends Query<Foot, FootQueryWhere> {
}
@override
FootQueryWhere get where {
FootQueryWhere? get where {
return _where;
}
@ -209,13 +209,13 @@ class FootQuery extends Query<Foot, FootQueryWhere> {
return FootQueryWhere(this);
}
static Foot parseRow(List row) {
static Foot? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = Foot(
id: row[0].toString(),
createdAt: (row[1] as DateTime),
updatedAt: (row[2] as DateTime),
legId: (row[3] as int),
createdAt: (row[1] as DateTime?),
updatedAt: (row[2] as DateTime?),
legId: (row[3] as int?),
nToes: double.tryParse(row[4].toString()));
return model;
}
@ -256,31 +256,31 @@ class FootQueryValues extends MapQueryValues {
return {'n_toes': 'decimal'};
}
String get id {
return (values['id'] as String);
String? get id {
return (values['id'] as String?);
}
set id(String value) => values['id'] = value;
DateTime get createdAt {
return (values['created_at'] as DateTime);
set id(String? value) => values['id'] = value;
DateTime? get createdAt {
return (values['created_at'] as DateTime?);
}
set createdAt(DateTime value) => values['created_at'] = value;
DateTime get updatedAt {
return (values['updated_at'] as DateTime);
set createdAt(DateTime? value) => values['created_at'] = value;
DateTime? get updatedAt {
return (values['updated_at'] as DateTime?);
}
set updatedAt(DateTime value) => values['updated_at'] = value;
int get legId {
return (values['leg_id'] as int);
set updatedAt(DateTime? value) => values['updated_at'] = value;
int? get legId {
return (values['leg_id'] as int?);
}
set legId(int value) => values['leg_id'] = value;
double get nToes {
set legId(int? value) => values['leg_id'] = value;
double? get nToes {
return double.tryParse((values['n_toes'] as String));
}
set nToes(double value) => values['n_toes'] = value.toString();
set nToes(double? value) => values['n_toes'] = value.toString();
void copyFrom(Foot model) {
createdAt = model.createdAt;
updatedAt = model.updatedAt;
@ -299,28 +299,28 @@ class Leg extends _Leg {
/// A unique identifier corresponding to this item.
@override
String id;
String? id;
/// The time at which this item was created.
@override
DateTime createdAt;
DateTime? createdAt;
/// The last time at which this item was updated.
@override
DateTime updatedAt;
DateTime? updatedAt;
@override
_Foot foot;
_Foot? foot;
@override
String name;
String? name;
Leg copyWith(
{String id,
DateTime createdAt,
DateTime updatedAt,
_Foot foot,
String name}) {
{String? id,
DateTime? createdAt,
DateTime? updatedAt,
_Foot? foot,
String? name}) {
return Leg(
id: id ?? this.id,
createdAt: createdAt ?? this.createdAt,
@ -359,28 +359,28 @@ class Foot extends _Foot {
/// A unique identifier corresponding to this item.
@override
String id;
String? id;
/// The time at which this item was created.
@override
DateTime createdAt;
DateTime? createdAt;
/// The last time at which this item was updated.
@override
DateTime updatedAt;
DateTime? updatedAt;
@override
int legId;
int? legId;
@override
double nToes;
double? nToes;
Foot copyWith(
{String id,
DateTime createdAt,
DateTime updatedAt,
int legId,
double nToes}) {
{String? id,
DateTime? createdAt,
DateTime? updatedAt,
int? legId,
double? nToes}) {
return Foot(
id: id ?? this.id,
createdAt: createdAt ?? this.createdAt,
@ -408,7 +408,7 @@ class Foot extends _Foot {
return "Foot(id=$id, createdAt=$createdAt, updatedAt=$updatedAt, legId=$legId, nToes=$nToes)";
}
Map<String, dynamic> toJson() {
Map<String, dynamic>? toJson() {
return FootSerializer.toMap(this);
}
}
@ -442,27 +442,24 @@ class LegSerializer extends Codec<Leg, Map> {
get decoder => const LegDecoder();
static Leg fromMap(Map map) {
return Leg(
id: map['id'] as String,
id: map['id'] as String?,
createdAt: map['created_at'] != null
? (map['created_at'] is DateTime
? (map['created_at'] as DateTime)
? (map['created_at'] as DateTime?)
: DateTime.parse(map['created_at'].toString()))
: null,
updatedAt: map['updated_at'] != null
? (map['updated_at'] is DateTime
? (map['updated_at'] as DateTime)
? (map['updated_at'] as DateTime?)
: DateTime.parse(map['updated_at'].toString()))
: null,
foot: map['foot'] != null
? FootSerializer.fromMap(map['foot'] as Map)
: null,
name: map['name'] as String);
name: map['name'] as String?);
}
static Map<String, dynamic> toMap(_Leg model) {
if (model == null) {
return null;
}
return {
'id': model.id,
'created_at': model.createdAt?.toIso8601String(),
@ -495,11 +492,11 @@ abstract class LegFields {
const FootSerializer footSerializer = FootSerializer();
class FootEncoder extends Converter<Foot, Map> {
class FootEncoder extends Converter<Foot, Map?> {
const FootEncoder();
@override
Map convert(Foot model) => FootSerializer.toMap(model);
Map? convert(Foot model) => FootSerializer.toMap(model);
}
class FootDecoder extends Converter<Map, Foot> {
@ -509,7 +506,7 @@ class FootDecoder extends Converter<Map, Foot> {
Foot convert(Map map) => FootSerializer.fromMap(map);
}
class FootSerializer extends Codec<Foot, Map> {
class FootSerializer extends Codec<Foot, Map?> {
const FootSerializer();
@override
@ -518,22 +515,22 @@ class FootSerializer extends Codec<Foot, Map> {
get decoder => const FootDecoder();
static Foot fromMap(Map map) {
return Foot(
id: map['id'] as String,
id: map['id'] as String?,
createdAt: map['created_at'] != null
? (map['created_at'] is DateTime
? (map['created_at'] as DateTime)
? (map['created_at'] as DateTime?)
: DateTime.parse(map['created_at'].toString()))
: null,
updatedAt: map['updated_at'] != null
? (map['updated_at'] is DateTime
? (map['updated_at'] as DateTime)
? (map['updated_at'] as DateTime?)
: DateTime.parse(map['updated_at'].toString()))
: null,
legId: map['leg_id'] as int,
nToes: map['n_toes'] as double);
legId: map['leg_id'] as int?,
nToes: map['n_toes'] as double?);
}
static Map<String, dynamic> toMap(_Foot model) {
static Map<String, dynamic>? toMap(_Foot? model) {
if (model == null) {
return null;
}

View file

@ -10,13 +10,13 @@ part 'order.g.dart';
@serializable
abstract class _Order extends Model {
@belongsTo
_Customer get customer;
_Customer? get customer;
int get employeeId;
int? get employeeId;
DateTime get orderDate;
DateTime? get orderDate;
int get shipperId;
int? get shipperId;
}
@orm

View file

@ -48,8 +48,8 @@ class CustomerMigration extends Migration {
// OrmGenerator
// **************************************************************************
class OrderQuery extends Query<Order, OrderQueryWhere> {
OrderQuery({Query parent, Set<String> trampoline}) : super(parent: parent) {
class OrderQuery extends Query<Order?, OrderQueryWhere?> {
OrderQuery({Query? parent, Set<String>? trampoline}) : super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
_where = OrderQueryWhere(this);
@ -62,9 +62,9 @@ class OrderQuery extends Query<Order, OrderQueryWhere> {
@override
final OrderQueryValues values = OrderQueryValues();
OrderQueryWhere _where;
OrderQueryWhere? _where;
CustomerQuery _customer;
CustomerQuery? _customer;
@override
get casts {
@ -90,7 +90,7 @@ class OrderQuery extends Query<Order, OrderQueryWhere> {
}
@override
OrderQueryWhere get where {
OrderQueryWhere? get where {
return _where;
}
@ -99,15 +99,15 @@ class OrderQuery extends Query<Order, OrderQueryWhere> {
return OrderQueryWhere(this);
}
static Order parseRow(List row) {
static Order? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = Order(
id: row[0].toString(),
createdAt: (row[1] as DateTime),
updatedAt: (row[2] as DateTime),
employeeId: (row[4] as int),
orderDate: (row[5] as DateTime),
shipperId: (row[6] as int));
createdAt: (row[1] as DateTime?),
updatedAt: (row[2] as DateTime?),
employeeId: (row[4] as int?),
orderDate: (row[5] as DateTime?),
shipperId: (row[6] as int?));
if (row.length > 7) {
model = model.copyWith(
customer: CustomerQuery.parseRow(row.skip(7).take(3).toList()));
@ -120,7 +120,7 @@ class OrderQuery extends Query<Order, OrderQueryWhere> {
return parseRow(row);
}
CustomerQuery get customer {
CustomerQuery? get customer {
return _customer;
}
}
@ -169,41 +169,41 @@ class OrderQueryValues extends MapQueryValues {
return {};
}
String get id {
return (values['id'] as String);
String? get id {
return (values['id'] as String?);
}
set id(String value) => values['id'] = value;
DateTime get createdAt {
return (values['created_at'] as DateTime);
set id(String? value) => values['id'] = value;
DateTime? get createdAt {
return (values['created_at'] as DateTime?);
}
set createdAt(DateTime value) => values['created_at'] = value;
DateTime get updatedAt {
return (values['updated_at'] as DateTime);
set createdAt(DateTime? value) => values['created_at'] = value;
DateTime? get updatedAt {
return (values['updated_at'] as DateTime?);
}
set updatedAt(DateTime value) => values['updated_at'] = value;
int get customerId {
return (values['customer_id'] as int);
set updatedAt(DateTime? value) => values['updated_at'] = value;
int? get customerId {
return (values['customer_id'] as int?);
}
set customerId(int value) => values['customer_id'] = value;
int get employeeId {
return (values['employee_id'] as int);
set customerId(int? value) => values['customer_id'] = value;
int? get employeeId {
return (values['employee_id'] as int?);
}
set employeeId(int value) => values['employee_id'] = value;
DateTime get orderDate {
return (values['order_date'] as DateTime);
set employeeId(int? value) => values['employee_id'] = value;
DateTime? get orderDate {
return (values['order_date'] as DateTime?);
}
set orderDate(DateTime value) => values['order_date'] = value;
int get shipperId {
return (values['shipper_id'] as int);
set orderDate(DateTime? value) => values['order_date'] = value;
int? get shipperId {
return (values['shipper_id'] as int?);
}
set shipperId(int value) => values['shipper_id'] = value;
set shipperId(int? value) => values['shipper_id'] = value;
void copyFrom(Order model) {
createdAt = model.createdAt;
updatedAt = model.updatedAt;
@ -211,13 +211,13 @@ class OrderQueryValues extends MapQueryValues {
orderDate = model.orderDate;
shipperId = model.shipperId;
if (model.customer != null) {
values['customer_id'] = model.customer.id;
values['customer_id'] = model.customer!.id;
}
}
}
class CustomerQuery extends Query<Customer, CustomerQueryWhere> {
CustomerQuery({Query parent, Set<String> trampoline})
class CustomerQuery extends Query<Customer?, CustomerQueryWhere?> {
CustomerQuery({Query? parent, Set<String>? trampoline})
: super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
@ -227,7 +227,7 @@ class CustomerQuery extends Query<Customer, CustomerQueryWhere> {
@override
final CustomerQueryValues values = CustomerQueryValues();
CustomerQueryWhere _where;
CustomerQueryWhere? _where;
@override
get casts {
@ -245,7 +245,7 @@ class CustomerQuery extends Query<Customer, CustomerQueryWhere> {
}
@override
CustomerQueryWhere get where {
CustomerQueryWhere? get where {
return _where;
}
@ -254,12 +254,12 @@ class CustomerQuery extends Query<Customer, CustomerQueryWhere> {
return CustomerQueryWhere(this);
}
static Customer parseRow(List row) {
static Customer? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = Customer(
id: row[0].toString(),
createdAt: (row[1] as DateTime),
updatedAt: (row[2] as DateTime));
createdAt: (row[1] as DateTime?),
updatedAt: (row[2] as DateTime?));
return model;
}
@ -293,21 +293,21 @@ class CustomerQueryValues extends MapQueryValues {
return {};
}
String get id {
return (values['id'] as String);
String? get id {
return (values['id'] as String?);
}
set id(String value) => values['id'] = value;
DateTime get createdAt {
return (values['created_at'] as DateTime);
set id(String? value) => values['id'] = value;
DateTime? get createdAt {
return (values['created_at'] as DateTime?);
}
set createdAt(DateTime value) => values['created_at'] = value;
DateTime get updatedAt {
return (values['updated_at'] as DateTime);
set createdAt(DateTime? value) => values['created_at'] = value;
DateTime? get updatedAt {
return (values['updated_at'] as DateTime?);
}
set updatedAt(DateTime value) => values['updated_at'] = value;
set updatedAt(DateTime? value) => values['updated_at'] = value;
void copyFrom(Customer model) {
createdAt = model.createdAt;
updatedAt = model.updatedAt;
@ -331,36 +331,36 @@ class Order extends _Order {
/// A unique identifier corresponding to this item.
@override
String id;
String? id;
/// The time at which this item was created.
@override
DateTime createdAt;
DateTime? createdAt;
/// The last time at which this item was updated.
@override
DateTime updatedAt;
DateTime? updatedAt;
@override
final _Customer customer;
final _Customer? customer;
@override
final int employeeId;
final int? employeeId;
@override
final DateTime orderDate;
final DateTime? orderDate;
@override
final int shipperId;
final int? shipperId;
Order copyWith(
{String id,
DateTime createdAt,
DateTime updatedAt,
_Customer customer,
int employeeId,
DateTime orderDate,
int shipperId}) {
{String? id,
DateTime? createdAt,
DateTime? updatedAt,
_Customer? customer,
int? employeeId,
DateTime? orderDate,
int? shipperId}) {
return Order(
id: id ?? this.id,
createdAt: createdAt ?? this.createdAt,
@ -404,17 +404,17 @@ class Customer extends _Customer {
/// A unique identifier corresponding to this item.
@override
String id;
String? id;
/// The time at which this item was created.
@override
DateTime createdAt;
DateTime? createdAt;
/// The last time at which this item was updated.
@override
DateTime updatedAt;
DateTime? updatedAt;
Customer copyWith({String id, DateTime createdAt, DateTime updatedAt}) {
Customer copyWith({String? id, DateTime? createdAt, DateTime? updatedAt}) {
return Customer(
id: id ?? this.id,
createdAt: createdAt ?? this.createdAt,
@ -438,7 +438,7 @@ class Customer extends _Customer {
return "Customer(id=$id, createdAt=$createdAt, updatedAt=$updatedAt)";
}
Map<String, dynamic> toJson() {
Map<String, dynamic>? toJson() {
return CustomerSerializer.toMap(this);
}
}
@ -472,33 +472,30 @@ class OrderSerializer extends Codec<Order, Map> {
get decoder => const OrderDecoder();
static Order fromMap(Map map) {
return Order(
id: map['id'] as String,
id: map['id'] as String?,
createdAt: map['created_at'] != null
? (map['created_at'] is DateTime
? (map['created_at'] as DateTime)
? (map['created_at'] as DateTime?)
: DateTime.parse(map['created_at'].toString()))
: null,
updatedAt: map['updated_at'] != null
? (map['updated_at'] is DateTime
? (map['updated_at'] as DateTime)
? (map['updated_at'] as DateTime?)
: DateTime.parse(map['updated_at'].toString()))
: null,
customer: map['customer'] != null
? CustomerSerializer.fromMap(map['customer'] as Map)
: null,
employeeId: map['employee_id'] as int,
employeeId: map['employee_id'] as int?,
orderDate: map['order_date'] != null
? (map['order_date'] is DateTime
? (map['order_date'] as DateTime)
? (map['order_date'] as DateTime?)
: DateTime.parse(map['order_date'].toString()))
: null,
shipperId: map['shipper_id'] as int);
shipperId: map['shipper_id'] as int?);
}
static Map<String, dynamic> toMap(_Order model) {
if (model == null) {
return null;
}
return {
'id': model.id,
'created_at': model.createdAt?.toIso8601String(),
@ -539,11 +536,11 @@ abstract class OrderFields {
const CustomerSerializer customerSerializer = CustomerSerializer();
class CustomerEncoder extends Converter<Customer, Map> {
class CustomerEncoder extends Converter<Customer, Map?> {
const CustomerEncoder();
@override
Map convert(Customer model) => CustomerSerializer.toMap(model);
Map? convert(Customer model) => CustomerSerializer.toMap(model);
}
class CustomerDecoder extends Converter<Map, Customer> {
@ -553,7 +550,7 @@ class CustomerDecoder extends Converter<Map, Customer> {
Customer convert(Map map) => CustomerSerializer.fromMap(map);
}
class CustomerSerializer extends Codec<Customer, Map> {
class CustomerSerializer extends Codec<Customer, Map?> {
const CustomerSerializer();
@override
@ -562,20 +559,20 @@ class CustomerSerializer extends Codec<Customer, Map> {
get decoder => const CustomerDecoder();
static Customer fromMap(Map map) {
return Customer(
id: map['id'] as String,
id: map['id'] as String?,
createdAt: map['created_at'] != null
? (map['created_at'] is DateTime
? (map['created_at'] as DateTime)
? (map['created_at'] as DateTime?)
: DateTime.parse(map['created_at'].toString()))
: null,
updatedAt: map['updated_at'] != null
? (map['updated_at'] is DateTime
? (map['updated_at'] as DateTime)
? (map['updated_at'] as DateTime?)
: DateTime.parse(map['updated_at'].toString()))
: null);
}
static Map<String, dynamic> toMap(_Customer model) {
static Map<String, dynamic>? toMap(_Customer? model) {
if (model == null) {
return null;
}

View file

@ -11,15 +11,15 @@ part 'tree.g.dart';
@orm
class _Tree extends Model {
@Column(indexType: IndexType.unique, type: ColumnType.smallInt)
int rings;
int? rings;
@hasMany
List<_Fruit> fruits;
List<_Fruit>? fruits;
}
@serializable
@orm
class _Fruit extends Model {
int treeId;
String commonName;
int? treeId;
String? commonName;
}

View file

@ -45,8 +45,8 @@ class FruitMigration extends Migration {
// OrmGenerator
// **************************************************************************
class TreeQuery extends Query<Tree, TreeQueryWhere> {
TreeQuery({Query parent, Set<String> trampoline}) : super(parent: parent) {
class TreeQuery extends Query<Tree?, TreeQueryWhere?> {
TreeQuery({Query? parent, Set<String>? trampoline}) : super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
_where = TreeQueryWhere(this);
@ -65,9 +65,9 @@ class TreeQuery extends Query<Tree, TreeQueryWhere> {
@override
final TreeQueryValues values = TreeQueryValues();
TreeQueryWhere _where;
TreeQueryWhere? _where;
FruitQuery _fruits;
FruitQuery? _fruits;
@override
get casts {
@ -85,7 +85,7 @@ class TreeQuery extends Query<Tree, TreeQueryWhere> {
}
@override
TreeQueryWhere get where {
TreeQueryWhere? get where {
return _where;
}
@ -94,13 +94,13 @@ class TreeQuery extends Query<Tree, TreeQueryWhere> {
return TreeQueryWhere(this);
}
static Tree parseRow(List row) {
static Tree? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = Tree(
id: row[0].toString(),
createdAt: (row[1] as DateTime),
updatedAt: (row[2] as DateTime),
rings: (row[3] as int));
createdAt: (row[1] as DateTime?),
updatedAt: (row[2] as DateTime?),
rings: (row[3] as int?));
if (row.length > 4) {
model = model.copyWith(
fruits: [FruitQuery.parseRow(row.skip(4).take(5).toList())]
@ -115,24 +115,24 @@ class TreeQuery extends Query<Tree, TreeQueryWhere> {
return parseRow(row);
}
FruitQuery get fruits {
FruitQuery? get fruits {
return _fruits;
}
@override
get(QueryExecutor executor) {
return super.get(executor).then((result) {
return result.fold<List<Tree>>([], (out, model) {
var idx = out.indexWhere((m) => m.id == model.id);
return result.fold<List<Tree?>>([], (out, model) {
var idx = out.indexWhere((m) => m!.id == model!.id);
if (idx == -1) {
return out..add(model);
} else {
var l = out[idx];
var l = out[idx]!;
return out
..[idx] = l.copyWith(
fruits: List<_Fruit>.from(l.fruits ?? [])
..addAll(model.fruits ?? []));
..addAll(model!.fruits ?? []));
}
});
});
@ -141,17 +141,17 @@ class TreeQuery extends Query<Tree, TreeQueryWhere> {
@override
update(QueryExecutor executor) {
return super.update(executor).then((result) {
return result.fold<List<Tree>>([], (out, model) {
var idx = out.indexWhere((m) => m.id == model.id);
return result.fold<List<Tree?>>([], (out, model) {
var idx = out.indexWhere((m) => m!.id == model!.id);
if (idx == -1) {
return out..add(model);
} else {
var l = out[idx];
var l = out[idx]!;
return out
..[idx] = l.copyWith(
fruits: List<_Fruit>.from(l.fruits ?? [])
..addAll(model.fruits ?? []));
..addAll(model!.fruits ?? []));
}
});
});
@ -160,17 +160,17 @@ class TreeQuery extends Query<Tree, TreeQueryWhere> {
@override
delete(QueryExecutor executor) {
return super.delete(executor).then((result) {
return result.fold<List<Tree>>([], (out, model) {
var idx = out.indexWhere((m) => m.id == model.id);
return result.fold<List<Tree?>>([], (out, model) {
var idx = out.indexWhere((m) => m!.id == model!.id);
if (idx == -1) {
return out..add(model);
} else {
var l = out[idx];
var l = out[idx]!;
return out
..[idx] = l.copyWith(
fruits: List<_Fruit>.from(l.fruits ?? [])
..addAll(model.fruits ?? []));
..addAll(model!.fruits ?? []));
}
});
});
@ -204,26 +204,26 @@ class TreeQueryValues extends MapQueryValues {
return {};
}
String get id {
return (values['id'] as String);
String? get id {
return (values['id'] as String?);
}
set id(String value) => values['id'] = value;
DateTime get createdAt {
return (values['created_at'] as DateTime);
set id(String? value) => values['id'] = value;
DateTime? get createdAt {
return (values['created_at'] as DateTime?);
}
set createdAt(DateTime value) => values['created_at'] = value;
DateTime get updatedAt {
return (values['updated_at'] as DateTime);
set createdAt(DateTime? value) => values['created_at'] = value;
DateTime? get updatedAt {
return (values['updated_at'] as DateTime?);
}
set updatedAt(DateTime value) => values['updated_at'] = value;
int get rings {
return (values['rings'] as int);
set updatedAt(DateTime? value) => values['updated_at'] = value;
int? get rings {
return (values['rings'] as int?);
}
set rings(int value) => values['rings'] = value;
set rings(int? value) => values['rings'] = value;
void copyFrom(Tree model) {
createdAt = model.createdAt;
updatedAt = model.updatedAt;
@ -231,8 +231,8 @@ class TreeQueryValues extends MapQueryValues {
}
}
class FruitQuery extends Query<Fruit, FruitQueryWhere> {
FruitQuery({Query parent, Set<String> trampoline}) : super(parent: parent) {
class FruitQuery extends Query<Fruit?, FruitQueryWhere?> {
FruitQuery({Query? parent, Set<String>? trampoline}) : super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
_where = FruitQueryWhere(this);
@ -241,7 +241,7 @@ class FruitQuery extends Query<Fruit, FruitQueryWhere> {
@override
final FruitQueryValues values = FruitQueryValues();
FruitQueryWhere _where;
FruitQueryWhere? _where;
@override
get casts {
@ -259,7 +259,7 @@ class FruitQuery extends Query<Fruit, FruitQueryWhere> {
}
@override
FruitQueryWhere get where {
FruitQueryWhere? get where {
return _where;
}
@ -268,14 +268,14 @@ class FruitQuery extends Query<Fruit, FruitQueryWhere> {
return FruitQueryWhere(this);
}
static Fruit parseRow(List row) {
static Fruit? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = Fruit(
id: row[0].toString(),
createdAt: (row[1] as DateTime),
updatedAt: (row[2] as DateTime),
treeId: (row[3] as int),
commonName: (row[4] as String));
createdAt: (row[1] as DateTime?),
updatedAt: (row[2] as DateTime?),
treeId: (row[3] as int?),
commonName: (row[4] as String?));
return model;
}
@ -315,31 +315,31 @@ class FruitQueryValues extends MapQueryValues {
return {};
}
String get id {
return (values['id'] as String);
String? get id {
return (values['id'] as String?);
}
set id(String value) => values['id'] = value;
DateTime get createdAt {
return (values['created_at'] as DateTime);
set id(String? value) => values['id'] = value;
DateTime? get createdAt {
return (values['created_at'] as DateTime?);
}
set createdAt(DateTime value) => values['created_at'] = value;
DateTime get updatedAt {
return (values['updated_at'] as DateTime);
set createdAt(DateTime? value) => values['created_at'] = value;
DateTime? get updatedAt {
return (values['updated_at'] as DateTime?);
}
set updatedAt(DateTime value) => values['updated_at'] = value;
int get treeId {
return (values['tree_id'] as int);
set updatedAt(DateTime? value) => values['updated_at'] = value;
int? get treeId {
return (values['tree_id'] as int?);
}
set treeId(int value) => values['tree_id'] = value;
String get commonName {
return (values['common_name'] as String);
set treeId(int? value) => values['tree_id'] = value;
String? get commonName {
return (values['common_name'] as String?);
}
set commonName(String value) => values['common_name'] = value;
set commonName(String? value) => values['common_name'] = value;
void copyFrom(Fruit model) {
createdAt = model.createdAt;
updatedAt = model.updatedAt;
@ -359,33 +359,33 @@ class Tree extends _Tree {
this.createdAt,
this.updatedAt,
this.rings,
List<_Fruit> fruits})
List<_Fruit?>? fruits})
: this.fruits = List.unmodifiable(fruits ?? []);
/// A unique identifier corresponding to this item.
@override
String id;
String? id;
/// The time at which this item was created.
@override
DateTime createdAt;
DateTime? createdAt;
/// The last time at which this item was updated.
@override
DateTime updatedAt;
DateTime? updatedAt;
@override
int rings;
int? rings;
@override
List<_Fruit> fruits;
List<_Fruit>? fruits;
Tree copyWith(
{String id,
DateTime createdAt,
DateTime updatedAt,
int rings,
List<_Fruit> fruits}) {
{String? id,
DateTime? createdAt,
DateTime? updatedAt,
int? rings,
List<_Fruit?>? fruits}) {
return Tree(
id: id ?? this.id,
createdAt: createdAt ?? this.createdAt,
@ -426,28 +426,28 @@ class Fruit extends _Fruit {
/// A unique identifier corresponding to this item.
@override
String id;
String? id;
/// The time at which this item was created.
@override
DateTime createdAt;
DateTime? createdAt;
/// The last time at which this item was updated.
@override
DateTime updatedAt;
DateTime? updatedAt;
@override
int treeId;
int? treeId;
@override
String commonName;
String? commonName;
Fruit copyWith(
{String id,
DateTime createdAt,
DateTime updatedAt,
int treeId,
String commonName}) {
{String? id,
DateTime? createdAt,
DateTime? updatedAt,
int? treeId,
String? commonName}) {
return Fruit(
id: id ?? this.id,
createdAt: createdAt ?? this.createdAt,
@ -509,18 +509,18 @@ class TreeSerializer extends Codec<Tree, Map> {
get decoder => const TreeDecoder();
static Tree fromMap(Map map) {
return Tree(
id: map['id'] as String,
id: map['id'] as String?,
createdAt: map['created_at'] != null
? (map['created_at'] is DateTime
? (map['created_at'] as DateTime)
? (map['created_at'] as DateTime?)
: DateTime.parse(map['created_at'].toString()))
: null,
updatedAt: map['updated_at'] != null
? (map['updated_at'] is DateTime
? (map['updated_at'] as DateTime)
? (map['updated_at'] as DateTime?)
: DateTime.parse(map['updated_at'].toString()))
: null,
rings: map['rings'] as int,
rings: map['rings'] as int?,
fruits: map['fruits'] is Iterable
? List.unmodifiable(((map['fruits'] as Iterable).whereType<Map>())
.map(FruitSerializer.fromMap))
@ -528,15 +528,12 @@ class TreeSerializer extends Codec<Tree, Map> {
}
static Map<String, dynamic> toMap(_Tree model) {
if (model == null) {
return null;
}
return {
'id': model.id,
'created_at': model.createdAt?.toIso8601String(),
'updated_at': model.updatedAt?.toIso8601String(),
'rings': model.rings,
'fruits': model.fruits?.map((m) => FruitSerializer.toMap(m))?.toList()
'fruits': model.fruits?.map((m) => FruitSerializer.toMap(m)).toList()
};
}
}
@ -586,25 +583,22 @@ class FruitSerializer extends Codec<Fruit, Map> {
get decoder => const FruitDecoder();
static Fruit fromMap(Map map) {
return Fruit(
id: map['id'] as String,
id: map['id'] as String?,
createdAt: map['created_at'] != null
? (map['created_at'] is DateTime
? (map['created_at'] as DateTime)
? (map['created_at'] as DateTime?)
: DateTime.parse(map['created_at'].toString()))
: null,
updatedAt: map['updated_at'] != null
? (map['updated_at'] is DateTime
? (map['updated_at'] as DateTime)
? (map['updated_at'] as DateTime?)
: DateTime.parse(map['updated_at'].toString()))
: null,
treeId: map['tree_id'] as int,
commonName: map['common_name'] as String);
treeId: map['tree_id'] as int?,
commonName: map['common_name'] as String?);
}
static Map<String, dynamic> toMap(_Fruit model) {
if (model == null) {
return null;
}
return {
'id': model.id,
'created_at': model.createdAt?.toIso8601String(),

View file

@ -8,63 +8,63 @@ part 'unorthodox.g.dart';
@orm
abstract class _Unorthodox {
@Column(indexType: IndexType.primaryKey)
String get name;
String? get name;
}
@serializable
@orm
abstract class _WeirdJoin {
@primaryKey
int get id;
int? get id;
@BelongsTo(localKey: 'join_name', foreignKey: 'name')
_Unorthodox get unorthodox;
_Unorthodox? get unorthodox;
@hasOne
_Song get song;
_Song? get song;
@HasMany(foreignKey: 'parent')
List<_Numba> get numbas;
List<_Numba?>? get numbas;
@ManyToMany(_FooPivot)
List<_Foo> get foos;
List<_Foo?>? get foos;
}
@serializable
@orm
abstract class _Song extends Model {
int get weirdJoinId;
int? get weirdJoinId;
String get title;
String? get title;
}
@serializable
@orm
class _Numba implements Comparable<_Numba> {
@primaryKey
int i;
int? i;
int parent;
int? parent;
int compareTo(_Numba other) => i.compareTo(other.i);
int compareTo(_Numba other) => i!.compareTo(other.i!);
}
@serializable
@orm
abstract class _Foo {
@primaryKey
String get bar;
String? get bar;
@ManyToMany(_FooPivot)
List<_WeirdJoin> get weirdJoins;
List<_WeirdJoin?>? get weirdJoins;
}
@serializable
@orm
abstract class _FooPivot {
@belongsTo
_WeirdJoin get weirdJoin;
_WeirdJoin? get weirdJoin;
@belongsTo
_Foo get foo;
_Foo? get foo;
}

View file

@ -105,8 +105,8 @@ class FooPivotMigration extends Migration {
// OrmGenerator
// **************************************************************************
class UnorthodoxQuery extends Query<Unorthodox, UnorthodoxQueryWhere> {
UnorthodoxQuery({Query parent, Set<String> trampoline})
class UnorthodoxQuery extends Query<Unorthodox?, UnorthodoxQueryWhere?> {
UnorthodoxQuery({Query? parent, Set<String>? trampoline})
: super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
@ -116,7 +116,7 @@ class UnorthodoxQuery extends Query<Unorthodox, UnorthodoxQueryWhere> {
@override
final UnorthodoxQueryValues values = UnorthodoxQueryValues();
UnorthodoxQueryWhere _where;
UnorthodoxQueryWhere? _where;
@override
get casts {
@ -134,7 +134,7 @@ class UnorthodoxQuery extends Query<Unorthodox, UnorthodoxQueryWhere> {
}
@override
UnorthodoxQueryWhere get where {
UnorthodoxQueryWhere? get where {
return _where;
}
@ -143,9 +143,9 @@ class UnorthodoxQuery extends Query<Unorthodox, UnorthodoxQueryWhere> {
return UnorthodoxQueryWhere(this);
}
static Unorthodox parseRow(List row) {
static Unorthodox? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = Unorthodox(name: (row[0] as String));
var model = Unorthodox(name: (row[0] as String?));
return model;
}
@ -173,18 +173,18 @@ class UnorthodoxQueryValues extends MapQueryValues {
return {};
}
String get name {
return (values['name'] as String);
String? get name {
return (values['name'] as String?);
}
set name(String value) => values['name'] = value;
set name(String? value) => values['name'] = value;
void copyFrom(Unorthodox model) {
name = model.name;
}
}
class WeirdJoinQuery extends Query<WeirdJoin, WeirdJoinQueryWhere> {
WeirdJoinQuery({Query parent, Set<String> trampoline})
class WeirdJoinQuery extends Query<WeirdJoin?, WeirdJoinQueryWhere?> {
WeirdJoinQuery({Query? parent, Set<String>? trampoline})
: super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
@ -219,13 +219,13 @@ class WeirdJoinQuery extends Query<WeirdJoin, WeirdJoinQueryWhere> {
@override
final WeirdJoinQueryValues values = WeirdJoinQueryValues();
WeirdJoinQueryWhere _where;
WeirdJoinQueryWhere? _where;
UnorthodoxQuery _unorthodox;
UnorthodoxQuery? _unorthodox;
SongQuery _song;
SongQuery? _song;
NumbaQuery _numbas;
NumbaQuery? _numbas;
@override
get casts {
@ -243,7 +243,7 @@ class WeirdJoinQuery extends Query<WeirdJoin, WeirdJoinQueryWhere> {
}
@override
WeirdJoinQueryWhere get where {
WeirdJoinQueryWhere? get where {
return _where;
}
@ -252,9 +252,9 @@ class WeirdJoinQuery extends Query<WeirdJoin, WeirdJoinQueryWhere> {
return WeirdJoinQueryWhere(this);
}
static WeirdJoin parseRow(List row) {
static WeirdJoin? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = WeirdJoin(id: (row[0] as int));
var model = WeirdJoin(id: (row[0] as int?));
if (row.length > 2) {
model = model.copyWith(
unorthodox: UnorthodoxQuery.parseRow(row.skip(2).take(1).toList()));
@ -283,39 +283,39 @@ class WeirdJoinQuery extends Query<WeirdJoin, WeirdJoinQueryWhere> {
return parseRow(row);
}
UnorthodoxQuery get unorthodox {
UnorthodoxQuery? get unorthodox {
return _unorthodox;
}
SongQuery get song {
SongQuery? get song {
return _song;
}
NumbaQuery get numbas {
NumbaQuery? get numbas {
return _numbas;
}
@override
bool canCompile(trampoline) {
return (!(trampoline.contains('weird_joins') &&
trampoline.contains('foo_pivots')));
return (!(trampoline?.contains('weird_joins') == true &&
trampoline?.contains('foo_pivots') == true));
}
@override
get(QueryExecutor executor) {
return super.get(executor).then((result) {
return result.fold<List<WeirdJoin>>([], (out, model) {
var idx = out.indexWhere((m) => m.id == model.id);
return result.fold<List<WeirdJoin?>>([], (out, model) {
var idx = out.indexWhere((m) => m!.id == model!.id);
if (idx == -1) {
return out..add(model);
} else {
var l = out[idx];
var l = out[idx]!;
return out
..[idx] = l.copyWith(
numbas: List<_Numba>.from(l.numbas ?? [])
..addAll(model.numbas ?? []),
foos: List<_Foo>.from(l.foos ?? [])..addAll(model.foos ?? []));
numbas: List<_Numba?>.from(l.numbas ?? [])
..addAll(model!.numbas ?? []),
foos: List<_Foo?>.from(l.foos ?? [])..addAll(model.foos ?? []));
}
});
});
@ -324,18 +324,18 @@ class WeirdJoinQuery extends Query<WeirdJoin, WeirdJoinQueryWhere> {
@override
update(QueryExecutor executor) {
return super.update(executor).then((result) {
return result.fold<List<WeirdJoin>>([], (out, model) {
var idx = out.indexWhere((m) => m.id == model.id);
return result.fold<List<WeirdJoin?>>([], (out, model) {
var idx = out.indexWhere((m) => m!.id == model!.id);
if (idx == -1) {
return out..add(model);
} else {
var l = out[idx];
var l = out[idx]!;
return out
..[idx] = l.copyWith(
numbas: List<_Numba>.from(l.numbas ?? [])
..addAll(model.numbas ?? []),
foos: List<_Foo>.from(l.foos ?? [])..addAll(model.foos ?? []));
numbas: List<_Numba?>.from(l.numbas ?? [])
..addAll(model!.numbas ?? []),
foos: List<_Foo?>.from(l.foos ?? [])..addAll(model.foos ?? []));
}
});
});
@ -344,18 +344,18 @@ class WeirdJoinQuery extends Query<WeirdJoin, WeirdJoinQueryWhere> {
@override
delete(QueryExecutor executor) {
return super.delete(executor).then((result) {
return result.fold<List<WeirdJoin>>([], (out, model) {
var idx = out.indexWhere((m) => m.id == model.id);
return result.fold<List<WeirdJoin?>>([], (out, model) {
var idx = out.indexWhere((m) => m!.id == model!.id);
if (idx == -1) {
return out..add(model);
} else {
var l = out[idx];
var l = out[idx]!;
return out
..[idx] = l.copyWith(
numbas: List<_Numba>.from(l.numbas ?? [])
..addAll(model.numbas ?? []),
foos: List<_Foo>.from(l.foos ?? [])..addAll(model.foos ?? []));
numbas: List<_Numba?>.from(l.numbas ?? [])
..addAll(model!.numbas ?? []),
foos: List<_Foo?>.from(l.foos ?? [])..addAll(model.foos ?? []));
}
});
});
@ -383,26 +383,26 @@ class WeirdJoinQueryValues extends MapQueryValues {
return {};
}
int get id {
return (values['id'] as int);
int? get id {
return (values['id'] as int?);
}
set id(int value) => values['id'] = value;
String get joinName {
return (values['join_name'] as String);
set id(int? value) => values['id'] = value;
String? get joinName {
return (values['join_name'] as String?);
}
set joinName(String value) => values['join_name'] = value;
set joinName(String? value) => values['join_name'] = value;
void copyFrom(WeirdJoin model) {
id = model.id;
if (model.unorthodox != null) {
values['join_name'] = model.unorthodox.name;
values['join_name'] = model.unorthodox!.name;
}
}
}
class SongQuery extends Query<Song, SongQueryWhere> {
SongQuery({Query parent, Set<String> trampoline}) : super(parent: parent) {
class SongQuery extends Query<Song?, SongQueryWhere?> {
SongQuery({Query? parent, Set<String>? trampoline}) : super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
_where = SongQueryWhere(this);
@ -411,7 +411,7 @@ class SongQuery extends Query<Song, SongQueryWhere> {
@override
final SongQueryValues values = SongQueryValues();
SongQueryWhere _where;
SongQueryWhere? _where;
@override
get casts {
@ -429,7 +429,7 @@ class SongQuery extends Query<Song, SongQueryWhere> {
}
@override
SongQueryWhere get where {
SongQueryWhere? get where {
return _where;
}
@ -438,14 +438,14 @@ class SongQuery extends Query<Song, SongQueryWhere> {
return SongQueryWhere(this);
}
static Song parseRow(List row) {
static Song? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = Song(
id: row[0].toString(),
createdAt: (row[1] as DateTime),
updatedAt: (row[2] as DateTime),
weirdJoinId: (row[3] as int),
title: (row[4] as String));
createdAt: (row[1] as DateTime?),
updatedAt: (row[2] as DateTime?),
weirdJoinId: (row[3] as int?),
title: (row[4] as String?));
return model;
}
@ -485,31 +485,31 @@ class SongQueryValues extends MapQueryValues {
return {};
}
String get id {
return (values['id'] as String);
String? get id {
return (values['id'] as String?);
}
set id(String value) => values['id'] = value;
DateTime get createdAt {
return (values['created_at'] as DateTime);
set id(String? value) => values['id'] = value;
DateTime? get createdAt {
return (values['created_at'] as DateTime?);
}
set createdAt(DateTime value) => values['created_at'] = value;
DateTime get updatedAt {
return (values['updated_at'] as DateTime);
set createdAt(DateTime? value) => values['created_at'] = value;
DateTime? get updatedAt {
return (values['updated_at'] as DateTime?);
}
set updatedAt(DateTime value) => values['updated_at'] = value;
int get weirdJoinId {
return (values['weird_join_id'] as int);
set updatedAt(DateTime? value) => values['updated_at'] = value;
int? get weirdJoinId {
return (values['weird_join_id'] as int?);
}
set weirdJoinId(int value) => values['weird_join_id'] = value;
String get title {
return (values['title'] as String);
set weirdJoinId(int? value) => values['weird_join_id'] = value;
String? get title {
return (values['title'] as String?);
}
set title(String value) => values['title'] = value;
set title(String? value) => values['title'] = value;
void copyFrom(Song model) {
createdAt = model.createdAt;
updatedAt = model.updatedAt;
@ -518,8 +518,8 @@ class SongQueryValues extends MapQueryValues {
}
}
class NumbaQuery extends Query<Numba, NumbaQueryWhere> {
NumbaQuery({Query parent, Set<String> trampoline}) : super(parent: parent) {
class NumbaQuery extends Query<Numba?, NumbaQueryWhere?> {
NumbaQuery({Query? parent, Set<String>? trampoline}) : super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
_where = NumbaQueryWhere(this);
@ -528,7 +528,7 @@ class NumbaQuery extends Query<Numba, NumbaQueryWhere> {
@override
final NumbaQueryValues values = NumbaQueryValues();
NumbaQueryWhere _where;
NumbaQueryWhere? _where;
@override
get casts {
@ -546,7 +546,7 @@ class NumbaQuery extends Query<Numba, NumbaQueryWhere> {
}
@override
NumbaQueryWhere get where {
NumbaQueryWhere? get where {
return _where;
}
@ -555,9 +555,9 @@ class NumbaQuery extends Query<Numba, NumbaQueryWhere> {
return NumbaQueryWhere(this);
}
static Numba parseRow(List row) {
static Numba? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = Numba(i: (row[0] as int), parent: (row[1] as int));
var model = Numba(i: (row[0] as int?), parent: (row[1] as int?));
return model;
}
@ -588,24 +588,24 @@ class NumbaQueryValues extends MapQueryValues {
return {};
}
int get i {
return (values['i'] as int);
int? get i {
return (values['i'] as int?);
}
set i(int value) => values['i'] = value;
int get parent {
return (values['parent'] as int);
set i(int? value) => values['i'] = value;
int? get parent {
return (values['parent'] as int?);
}
set parent(int value) => values['parent'] = value;
set parent(int? value) => values['parent'] = value;
void copyFrom(Numba model) {
i = model.i;
parent = model.parent;
}
}
class FooQuery extends Query<Foo, FooQueryWhere> {
FooQuery({Query parent, Set<String> trampoline}) : super(parent: parent) {
class FooQuery extends Query<Foo?, FooQueryWhere?> {
FooQuery({Query? parent, Set<String>? trampoline}) : super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
_where = FooQueryWhere(this);
@ -620,7 +620,7 @@ class FooQuery extends Query<Foo, FooQueryWhere> {
@override
final FooQueryValues values = FooQueryValues();
FooQueryWhere _where;
FooQueryWhere? _where;
@override
get casts {
@ -638,7 +638,7 @@ class FooQuery extends Query<Foo, FooQueryWhere> {
}
@override
FooQueryWhere get where {
FooQueryWhere? get where {
return _where;
}
@ -647,9 +647,9 @@ class FooQuery extends Query<Foo, FooQueryWhere> {
return FooQueryWhere(this);
}
static Foo parseRow(List row) {
static Foo? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = Foo(bar: (row[0] as String));
var model = Foo(bar: (row[0] as String?));
if (row.length > 1) {
model = model.copyWith(
weirdJoins: [WeirdJoinQuery.parseRow(row.skip(1).take(2).toList())]
@ -666,24 +666,24 @@ class FooQuery extends Query<Foo, FooQueryWhere> {
@override
bool canCompile(trampoline) {
return (!(trampoline.contains('foos') &&
trampoline.contains('foo_pivots')));
return (!(trampoline?.contains('foos') == true &&
trampoline?.contains('foo_pivots') == true));
}
@override
get(QueryExecutor executor) {
return super.get(executor).then((result) {
return result.fold<List<Foo>>([], (out, model) {
var idx = out.indexWhere((m) => m.bar == model.bar);
return result.fold<List<Foo?>>([], (out, model) {
var idx = out.indexWhere((m) => m!.bar == model!.bar);
if (idx == -1) {
return out..add(model);
} else {
var l = out[idx];
var l = out[idx]!;
return out
..[idx] = l.copyWith(
weirdJoins: List<_WeirdJoin>.from(l.weirdJoins ?? [])
..addAll(model.weirdJoins ?? []));
weirdJoins: List<_WeirdJoin?>.from(l.weirdJoins ?? [])
..addAll(model!.weirdJoins ?? []));
}
});
});
@ -692,17 +692,17 @@ class FooQuery extends Query<Foo, FooQueryWhere> {
@override
update(QueryExecutor executor) {
return super.update(executor).then((result) {
return result.fold<List<Foo>>([], (out, model) {
var idx = out.indexWhere((m) => m.bar == model.bar);
return result.fold<List<Foo?>>([], (out, model) {
var idx = out.indexWhere((m) => m!.bar == model!.bar);
if (idx == -1) {
return out..add(model);
} else {
var l = out[idx];
var l = out[idx]!;
return out
..[idx] = l.copyWith(
weirdJoins: List<_WeirdJoin>.from(l.weirdJoins ?? [])
..addAll(model.weirdJoins ?? []));
weirdJoins: List<_WeirdJoin?>.from(l.weirdJoins ?? [])
..addAll(model!.weirdJoins ?? []));
}
});
});
@ -711,17 +711,17 @@ class FooQuery extends Query<Foo, FooQueryWhere> {
@override
delete(QueryExecutor executor) {
return super.delete(executor).then((result) {
return result.fold<List<Foo>>([], (out, model) {
var idx = out.indexWhere((m) => m.bar == model.bar);
return result.fold<List<Foo?>>([], (out, model) {
var idx = out.indexWhere((m) => m!.bar == model!.bar);
if (idx == -1) {
return out..add(model);
} else {
var l = out[idx];
var l = out[idx]!;
return out
..[idx] = l.copyWith(
weirdJoins: List<_WeirdJoin>.from(l.weirdJoins ?? [])
..addAll(model.weirdJoins ?? []));
weirdJoins: List<_WeirdJoin?>.from(l.weirdJoins ?? [])
..addAll(model!.weirdJoins ?? []));
}
});
});
@ -746,18 +746,18 @@ class FooQueryValues extends MapQueryValues {
return {};
}
String get bar {
return (values['bar'] as String);
String? get bar {
return (values['bar'] as String?);
}
set bar(String value) => values['bar'] = value;
set bar(String? value) => values['bar'] = value;
void copyFrom(Foo model) {
bar = model.bar;
}
}
class FooPivotQuery extends Query<FooPivot, FooPivotQueryWhere> {
FooPivotQuery({Query parent, Set<String> trampoline})
class FooPivotQuery extends Query<FooPivot?, FooPivotQueryWhere?> {
FooPivotQuery({Query? parent, Set<String>? trampoline})
: super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
@ -773,11 +773,11 @@ class FooPivotQuery extends Query<FooPivot, FooPivotQueryWhere> {
@override
final FooPivotQueryValues values = FooPivotQueryValues();
FooPivotQueryWhere _where;
FooPivotQueryWhere? _where;
WeirdJoinQuery _weirdJoin;
WeirdJoinQuery? _weirdJoin;
FooQuery _foo;
FooQuery? _foo;
@override
get casts {
@ -795,7 +795,7 @@ class FooPivotQuery extends Query<FooPivot, FooPivotQueryWhere> {
}
@override
FooPivotQueryWhere get where {
FooPivotQueryWhere? get where {
return _where;
}
@ -804,7 +804,7 @@ class FooPivotQuery extends Query<FooPivot, FooPivotQueryWhere> {
return FooPivotQueryWhere(this);
}
static FooPivot parseRow(List row) {
static FooPivot? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = FooPivot();
if (row.length > 2) {
@ -823,11 +823,11 @@ class FooPivotQuery extends Query<FooPivot, FooPivotQueryWhere> {
return parseRow(row);
}
WeirdJoinQuery get weirdJoin {
WeirdJoinQuery? get weirdJoin {
return _weirdJoin;
}
FooQuery get foo {
FooQuery? get foo {
return _foo;
}
}
@ -853,22 +853,22 @@ class FooPivotQueryValues extends MapQueryValues {
return {};
}
int get weirdJoinId {
return (values['weird_join_id'] as int);
int? get weirdJoinId {
return (values['weird_join_id'] as int?);
}
set weirdJoinId(int value) => values['weird_join_id'] = value;
String get fooBar {
return (values['foo_bar'] as String);
set weirdJoinId(int? value) => values['weird_join_id'] = value;
String? get fooBar {
return (values['foo_bar'] as String?);
}
set fooBar(String value) => values['foo_bar'] = value;
set fooBar(String? value) => values['foo_bar'] = value;
void copyFrom(FooPivot model) {
if (model.weirdJoin != null) {
values['weird_join_id'] = model.weirdJoin.id;
values['weird_join_id'] = model.weirdJoin!.id;
}
if (model.foo != null) {
values['foo_bar'] = model.foo.bar;
values['foo_bar'] = model.foo!.bar;
}
}
}
@ -882,9 +882,9 @@ class Unorthodox implements _Unorthodox {
const Unorthodox({this.name});
@override
final String name;
final String? name;
Unorthodox copyWith({String name}) {
Unorthodox copyWith({String? name}) {
return Unorthodox(name: name ?? this.name);
}
@ -902,7 +902,7 @@ class Unorthodox implements _Unorthodox {
return "Unorthodox(name=$name)";
}
Map<String, dynamic> toJson() {
Map<String, dynamic>? toJson() {
return UnorthodoxSerializer.toMap(this);
}
}
@ -913,26 +913,26 @@ class WeirdJoin implements _WeirdJoin {
{this.id, this.unorthodox, this.song, this.numbas, this.foos});
@override
final int id;
final int? id;
@override
final _Unorthodox unorthodox;
final _Unorthodox? unorthodox;
@override
final _Song song;
final _Song? song;
@override
final List<_Numba> numbas;
final List<_Numba?>? numbas;
@override
final List<_Foo> foos;
final List<_Foo?>? foos;
WeirdJoin copyWith(
{int id,
_Unorthodox unorthodox,
_Song song,
List<_Numba> numbas,
List<_Foo> foos}) {
{int? id,
_Unorthodox? unorthodox,
_Song? song,
List<_Numba?>? numbas,
List<_Foo?>? foos}) {
return WeirdJoin(
id: id ?? this.id,
unorthodox: unorthodox ?? this.unorthodox,
@ -946,9 +946,9 @@ class WeirdJoin implements _WeirdJoin {
other.id == id &&
other.unorthodox == unorthodox &&
other.song == song &&
ListEquality<_Numba>(DefaultEquality<_Numba>())
ListEquality<_Numba?>(DefaultEquality<_Numba>())
.equals(other.numbas, numbas) &&
ListEquality<_Foo>(DefaultEquality<_Foo>()).equals(other.foos, foos);
ListEquality<_Foo?>(DefaultEquality<_Foo>()).equals(other.foos, foos);
}
@override
@ -961,7 +961,7 @@ class WeirdJoin implements _WeirdJoin {
return "WeirdJoin(id=$id, unorthodox=$unorthodox, song=$song, numbas=$numbas, foos=$foos)";
}
Map<String, dynamic> toJson() {
Map<String, dynamic>? toJson() {
return WeirdJoinSerializer.toMap(this);
}
}
@ -972,28 +972,28 @@ class Song extends _Song {
/// A unique identifier corresponding to this item.
@override
String id;
String? id;
/// The time at which this item was created.
@override
DateTime createdAt;
DateTime? createdAt;
/// The last time at which this item was updated.
@override
DateTime updatedAt;
DateTime? updatedAt;
@override
final int weirdJoinId;
final int? weirdJoinId;
@override
final String title;
final String? title;
Song copyWith(
{String id,
DateTime createdAt,
DateTime updatedAt,
int weirdJoinId,
String title}) {
{String? id,
DateTime? createdAt,
DateTime? updatedAt,
int? weirdJoinId,
String? title}) {
return Song(
id: id ?? this.id,
createdAt: createdAt ?? this.createdAt,
@ -1021,7 +1021,7 @@ class Song extends _Song {
return "Song(id=$id, createdAt=$createdAt, updatedAt=$updatedAt, weirdJoinId=$weirdJoinId, title=$title)";
}
Map<String, dynamic> toJson() {
Map<String, dynamic>? toJson() {
return SongSerializer.toMap(this);
}
}
@ -1031,12 +1031,12 @@ class Numba extends _Numba {
Numba({this.i, this.parent});
@override
int i;
int? i;
@override
int parent;
int? parent;
Numba copyWith({int i, int parent}) {
Numba copyWith({int? i, int? parent}) {
return Numba(i: i ?? this.i, parent: parent ?? this.parent);
}
@ -1054,7 +1054,7 @@ class Numba extends _Numba {
return "Numba(i=$i, parent=$parent)";
}
Map<String, dynamic> toJson() {
Map<String, dynamic>? toJson() {
return NumbaSerializer.toMap(this);
}
}
@ -1064,19 +1064,19 @@ class Foo implements _Foo {
const Foo({this.bar, this.weirdJoins});
@override
final String bar;
final String? bar;
@override
final List<_WeirdJoin> weirdJoins;
final List<_WeirdJoin?>? weirdJoins;
Foo copyWith({String bar, List<_WeirdJoin> weirdJoins}) {
Foo copyWith({String? bar, List<_WeirdJoin?>? weirdJoins}) {
return Foo(bar: bar ?? this.bar, weirdJoins: weirdJoins ?? this.weirdJoins);
}
bool operator ==(other) {
return other is _Foo &&
other.bar == bar &&
ListEquality<_WeirdJoin>(DefaultEquality<_WeirdJoin>())
ListEquality<_WeirdJoin?>(DefaultEquality<_WeirdJoin>())
.equals(other.weirdJoins, weirdJoins);
}
@ -1090,7 +1090,7 @@ class Foo implements _Foo {
return "Foo(bar=$bar, weirdJoins=$weirdJoins)";
}
Map<String, dynamic> toJson() {
Map<String, dynamic>? toJson() {
return FooSerializer.toMap(this);
}
}
@ -1100,12 +1100,12 @@ class FooPivot implements _FooPivot {
const FooPivot({this.weirdJoin, this.foo});
@override
final _WeirdJoin weirdJoin;
final _WeirdJoin? weirdJoin;
@override
final _Foo foo;
final _Foo? foo;
FooPivot copyWith({_WeirdJoin weirdJoin, _Foo foo}) {
FooPivot copyWith({_WeirdJoin? weirdJoin, _Foo? foo}) {
return FooPivot(
weirdJoin: weirdJoin ?? this.weirdJoin, foo: foo ?? this.foo);
}
@ -1137,11 +1137,11 @@ class FooPivot implements _FooPivot {
const UnorthodoxSerializer unorthodoxSerializer = UnorthodoxSerializer();
class UnorthodoxEncoder extends Converter<Unorthodox, Map> {
class UnorthodoxEncoder extends Converter<Unorthodox, Map?> {
const UnorthodoxEncoder();
@override
Map convert(Unorthodox model) => UnorthodoxSerializer.toMap(model);
Map? convert(Unorthodox model) => UnorthodoxSerializer.toMap(model);
}
class UnorthodoxDecoder extends Converter<Map, Unorthodox> {
@ -1151,7 +1151,7 @@ class UnorthodoxDecoder extends Converter<Map, Unorthodox> {
Unorthodox convert(Map map) => UnorthodoxSerializer.fromMap(map);
}
class UnorthodoxSerializer extends Codec<Unorthodox, Map> {
class UnorthodoxSerializer extends Codec<Unorthodox, Map?> {
const UnorthodoxSerializer();
@override
@ -1159,10 +1159,10 @@ class UnorthodoxSerializer extends Codec<Unorthodox, Map> {
@override
get decoder => const UnorthodoxDecoder();
static Unorthodox fromMap(Map map) {
return Unorthodox(name: map['name'] as String);
return Unorthodox(name: map['name'] as String?);
}
static Map<String, dynamic> toMap(_Unorthodox model) {
static Map<String, dynamic>? toMap(_Unorthodox? model) {
if (model == null) {
return null;
}
@ -1178,11 +1178,11 @@ abstract class UnorthodoxFields {
const WeirdJoinSerializer weirdJoinSerializer = WeirdJoinSerializer();
class WeirdJoinEncoder extends Converter<WeirdJoin, Map> {
class WeirdJoinEncoder extends Converter<WeirdJoin, Map?> {
const WeirdJoinEncoder();
@override
Map convert(WeirdJoin model) => WeirdJoinSerializer.toMap(model);
Map? convert(WeirdJoin model) => WeirdJoinSerializer.toMap(model);
}
class WeirdJoinDecoder extends Converter<Map, WeirdJoin> {
@ -1192,7 +1192,7 @@ class WeirdJoinDecoder extends Converter<Map, WeirdJoin> {
WeirdJoin convert(Map map) => WeirdJoinSerializer.fromMap(map);
}
class WeirdJoinSerializer extends Codec<WeirdJoin, Map> {
class WeirdJoinSerializer extends Codec<WeirdJoin, Map?> {
const WeirdJoinSerializer();
@override
@ -1201,7 +1201,7 @@ class WeirdJoinSerializer extends Codec<WeirdJoin, Map> {
get decoder => const WeirdJoinDecoder();
static WeirdJoin fromMap(Map map) {
return WeirdJoin(
id: map['id'] as int,
id: map['id'] as int?,
unorthodox: map['unorthodox'] != null
? UnorthodoxSerializer.fromMap(map['unorthodox'] as Map)
: null,
@ -1218,7 +1218,7 @@ class WeirdJoinSerializer extends Codec<WeirdJoin, Map> {
: null);
}
static Map<String, dynamic> toMap(_WeirdJoin model) {
static Map<String, dynamic>? toMap(_WeirdJoin? model) {
if (model == null) {
return null;
}
@ -1226,8 +1226,8 @@ class WeirdJoinSerializer extends Codec<WeirdJoin, Map> {
'id': model.id,
'unorthodox': UnorthodoxSerializer.toMap(model.unorthodox),
'song': SongSerializer.toMap(model.song),
'numbas': model.numbas?.map((m) => NumbaSerializer.toMap(m))?.toList(),
'foos': model.foos?.map((m) => FooSerializer.toMap(m))?.toList()
'numbas': model.numbas?.map((m) => NumbaSerializer.toMap(m)).toList(),
'foos': model.foos?.map((m) => FooSerializer.toMap(m)).toList()
};
}
}
@ -1254,11 +1254,11 @@ abstract class WeirdJoinFields {
const SongSerializer songSerializer = SongSerializer();
class SongEncoder extends Converter<Song, Map> {
class SongEncoder extends Converter<Song, Map?> {
const SongEncoder();
@override
Map convert(Song model) => SongSerializer.toMap(model);
Map? convert(Song model) => SongSerializer.toMap(model);
}
class SongDecoder extends Converter<Map, Song> {
@ -1268,7 +1268,7 @@ class SongDecoder extends Converter<Map, Song> {
Song convert(Map map) => SongSerializer.fromMap(map);
}
class SongSerializer extends Codec<Song, Map> {
class SongSerializer extends Codec<Song, Map?> {
const SongSerializer();
@override
@ -1277,22 +1277,22 @@ class SongSerializer extends Codec<Song, Map> {
get decoder => const SongDecoder();
static Song fromMap(Map map) {
return Song(
id: map['id'] as String,
id: map['id'] as String?,
createdAt: map['created_at'] != null
? (map['created_at'] is DateTime
? (map['created_at'] as DateTime)
? (map['created_at'] as DateTime?)
: DateTime.parse(map['created_at'].toString()))
: null,
updatedAt: map['updated_at'] != null
? (map['updated_at'] is DateTime
? (map['updated_at'] as DateTime)
? (map['updated_at'] as DateTime?)
: DateTime.parse(map['updated_at'].toString()))
: null,
weirdJoinId: map['weird_join_id'] as int,
title: map['title'] as String);
weirdJoinId: map['weird_join_id'] as int?,
title: map['title'] as String?);
}
static Map<String, dynamic> toMap(_Song model) {
static Map<String, dynamic>? toMap(_Song? model) {
if (model == null) {
return null;
}
@ -1328,11 +1328,11 @@ abstract class SongFields {
const NumbaSerializer numbaSerializer = NumbaSerializer();
class NumbaEncoder extends Converter<Numba, Map> {
class NumbaEncoder extends Converter<Numba, Map?> {
const NumbaEncoder();
@override
Map convert(Numba model) => NumbaSerializer.toMap(model);
Map? convert(Numba model) => NumbaSerializer.toMap(model);
}
class NumbaDecoder extends Converter<Map, Numba> {
@ -1342,7 +1342,7 @@ class NumbaDecoder extends Converter<Map, Numba> {
Numba convert(Map map) => NumbaSerializer.fromMap(map);
}
class NumbaSerializer extends Codec<Numba, Map> {
class NumbaSerializer extends Codec<Numba, Map?> {
const NumbaSerializer();
@override
@ -1350,10 +1350,10 @@ class NumbaSerializer extends Codec<Numba, Map> {
@override
get decoder => const NumbaDecoder();
static Numba fromMap(Map map) {
return Numba(i: map['i'] as int, parent: map['parent'] as int);
return Numba(i: map['i'] as int?, parent: map['parent'] as int?);
}
static Map<String, dynamic> toMap(_Numba model) {
static Map<String, dynamic>? toMap(_Numba? model) {
if (model == null) {
return null;
}
@ -1371,11 +1371,11 @@ abstract class NumbaFields {
const FooSerializer fooSerializer = FooSerializer();
class FooEncoder extends Converter<Foo, Map> {
class FooEncoder extends Converter<Foo, Map?> {
const FooEncoder();
@override
Map convert(Foo model) => FooSerializer.toMap(model);
Map? convert(Foo model) => FooSerializer.toMap(model);
}
class FooDecoder extends Converter<Map, Foo> {
@ -1385,7 +1385,7 @@ class FooDecoder extends Converter<Map, Foo> {
Foo convert(Map map) => FooSerializer.fromMap(map);
}
class FooSerializer extends Codec<Foo, Map> {
class FooSerializer extends Codec<Foo, Map?> {
const FooSerializer();
@override
@ -1394,7 +1394,7 @@ class FooSerializer extends Codec<Foo, Map> {
get decoder => const FooDecoder();
static Foo fromMap(Map map) {
return Foo(
bar: map['bar'] as String,
bar: map['bar'] as String?,
weirdJoins: map['weird_joins'] is Iterable
? List.unmodifiable(
((map['weird_joins'] as Iterable).whereType<Map>())
@ -1402,14 +1402,14 @@ class FooSerializer extends Codec<Foo, Map> {
: null);
}
static Map<String, dynamic> toMap(_Foo model) {
static Map<String, dynamic>? toMap(_Foo? model) {
if (model == null) {
return null;
}
return {
'bar': model.bar,
'weird_joins':
model.weirdJoins?.map((m) => WeirdJoinSerializer.toMap(m))?.toList()
model.weirdJoins?.map((m) => WeirdJoinSerializer.toMap(m)).toList()
};
}
}
@ -1456,9 +1456,6 @@ class FooPivotSerializer extends Codec<FooPivot, Map> {
}
static Map<String, dynamic> toMap(_FooPivot model) {
if (model == null) {
return null;
}
return {
'weird_join': WeirdJoinSerializer.toMap(model.weirdJoin),
'foo': FooSerializer.toMap(model.foo)

View file

@ -10,9 +10,9 @@ part 'user.g.dart';
@serializable
@orm
abstract class _User extends Model {
String get username;
String get password;
String get email;
String? get username;
String? get password;
String? get email;
@ManyToMany(_RoleUser)
List<_Role> get roles;
@ -22,16 +22,16 @@ abstract class _User extends Model {
@orm
abstract class _RoleUser {
@belongsTo
_Role get role;
_Role? get role;
@belongsTo
_User get user;
_User? get user;
}
@serializable
@orm
abstract class _Role extends Model {
String name;
String? name;
@ManyToMany(_RoleUser)
List<_User> get users;

View file

@ -61,8 +61,8 @@ class RoleMigration extends Migration {
// OrmGenerator
// **************************************************************************
class UserQuery extends Query<User, UserQueryWhere> {
UserQuery({Query parent, Set<String> trampoline}) : super(parent: parent) {
class UserQuery extends Query<User?, UserQueryWhere?> {
UserQuery({Query? parent, Set<String>? trampoline}) : super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
_where = UserQueryWhere(this);
@ -77,7 +77,7 @@ class UserQuery extends Query<User, UserQueryWhere> {
@override
final UserQueryValues values = UserQueryValues();
UserQueryWhere _where;
UserQueryWhere? _where;
@override
get casts {
@ -102,7 +102,7 @@ class UserQuery extends Query<User, UserQueryWhere> {
}
@override
UserQueryWhere get where {
UserQueryWhere? get where {
return _where;
}
@ -111,15 +111,15 @@ class UserQuery extends Query<User, UserQueryWhere> {
return UserQueryWhere(this);
}
static User parseRow(List row) {
static User? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = User(
id: row[0].toString(),
createdAt: (row[1] as DateTime),
updatedAt: (row[2] as DateTime),
username: (row[3] as String),
password: (row[4] as String),
email: (row[5] as String));
createdAt: (row[1] as DateTime?),
updatedAt: (row[2] as DateTime?),
username: (row[3] as String?),
password: (row[4] as String?),
email: (row[5] as String?));
if (row.length > 6) {
model = model.copyWith(
roles: [RoleQuery.parseRow(row.skip(6).take(4).toList())]
@ -136,24 +136,23 @@ class UserQuery extends Query<User, UserQueryWhere> {
@override
bool canCompile(trampoline) {
return (!(trampoline.contains('users') &&
trampoline.contains('role_users')));
return (!(trampoline?.contains('users') == true &&
trampoline?.contains('role_users') == true));
}
@override
get(QueryExecutor executor) {
return super.get(executor).then((result) {
return result.fold<List<User>>([], (out, model) {
var idx = out.indexWhere((m) => m.id == model.id);
return result.fold<List<User?>>([], (out, model) {
var idx = out.indexWhere((m) => m!.id == model!.id);
if (idx == -1) {
return out..add(model);
} else {
var l = out[idx];
var l = out[idx]!;
return out
..[idx] = l.copyWith(
roles: List<_Role>.from(l.roles ?? [])
..addAll(model.roles ?? []));
roles: List<_Role>.from(l.roles)..addAll(model!.roles));
}
});
});
@ -162,17 +161,16 @@ class UserQuery extends Query<User, UserQueryWhere> {
@override
update(QueryExecutor executor) {
return super.update(executor).then((result) {
return result.fold<List<User>>([], (out, model) {
var idx = out.indexWhere((m) => m.id == model.id);
return result.fold<List<User?>>([], (out, model) {
var idx = out.indexWhere((m) => m!.id == model!.id);
if (idx == -1) {
return out..add(model);
} else {
var l = out[idx];
var l = out[idx]!;
return out
..[idx] = l.copyWith(
roles: List<_Role>.from(l.roles ?? [])
..addAll(model.roles ?? []));
roles: List<_Role>.from(l.roles)..addAll(model!.roles));
}
});
});
@ -181,17 +179,16 @@ class UserQuery extends Query<User, UserQueryWhere> {
@override
delete(QueryExecutor executor) {
return super.delete(executor).then((result) {
return result.fold<List<User>>([], (out, model) {
var idx = out.indexWhere((m) => m.id == model.id);
return result.fold<List<User?>>([], (out, model) {
var idx = out.indexWhere((m) => m!.id == model!.id);
if (idx == -1) {
return out..add(model);
} else {
var l = out[idx];
var l = out[idx]!;
return out
..[idx] = l.copyWith(
roles: List<_Role>.from(l.roles ?? [])
..addAll(model.roles ?? []));
roles: List<_Role>.from(l.roles)..addAll(model!.roles));
}
});
});
@ -231,36 +228,36 @@ class UserQueryValues extends MapQueryValues {
return {};
}
String get id {
return (values['id'] as String);
String? get id {
return (values['id'] as String?);
}
set id(String value) => values['id'] = value;
DateTime get createdAt {
return (values['created_at'] as DateTime);
set id(String? value) => values['id'] = value;
DateTime? get createdAt {
return (values['created_at'] as DateTime?);
}
set createdAt(DateTime value) => values['created_at'] = value;
DateTime get updatedAt {
return (values['updated_at'] as DateTime);
set createdAt(DateTime? value) => values['created_at'] = value;
DateTime? get updatedAt {
return (values['updated_at'] as DateTime?);
}
set updatedAt(DateTime value) => values['updated_at'] = value;
String get username {
return (values['username'] as String);
set updatedAt(DateTime? value) => values['updated_at'] = value;
String? get username {
return (values['username'] as String?);
}
set username(String value) => values['username'] = value;
String get password {
return (values['password'] as String);
set username(String? value) => values['username'] = value;
String? get password {
return (values['password'] as String?);
}
set password(String value) => values['password'] = value;
String get email {
return (values['email'] as String);
set password(String? value) => values['password'] = value;
String? get email {
return (values['email'] as String?);
}
set email(String value) => values['email'] = value;
set email(String? value) => values['email'] = value;
void copyFrom(User model) {
createdAt = model.createdAt;
updatedAt = model.updatedAt;
@ -270,8 +267,8 @@ class UserQueryValues extends MapQueryValues {
}
}
class RoleUserQuery extends Query<RoleUser, RoleUserQueryWhere> {
RoleUserQuery({Query parent, Set<String> trampoline})
class RoleUserQuery extends Query<RoleUser?, RoleUserQueryWhere?> {
RoleUserQuery({Query? parent, Set<String>? trampoline})
: super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
@ -296,11 +293,11 @@ class RoleUserQuery extends Query<RoleUser, RoleUserQueryWhere> {
@override
final RoleUserQueryValues values = RoleUserQueryValues();
RoleUserQueryWhere _where;
RoleUserQueryWhere? _where;
RoleQuery _role;
RoleQuery? _role;
UserQuery _user;
UserQuery? _user;
@override
get casts {
@ -318,7 +315,7 @@ class RoleUserQuery extends Query<RoleUser, RoleUserQueryWhere> {
}
@override
RoleUserQueryWhere get where {
RoleUserQueryWhere? get where {
return _where;
}
@ -327,7 +324,7 @@ class RoleUserQuery extends Query<RoleUser, RoleUserQueryWhere> {
return RoleUserQueryWhere(this);
}
static RoleUser parseRow(List row) {
static RoleUser? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = RoleUser();
if (row.length > 2) {
@ -346,11 +343,11 @@ class RoleUserQuery extends Query<RoleUser, RoleUserQueryWhere> {
return parseRow(row);
}
RoleQuery get role {
RoleQuery? get role {
return _role;
}
UserQuery get user {
UserQuery? get user {
return _user;
}
}
@ -376,28 +373,28 @@ class RoleUserQueryValues extends MapQueryValues {
return {};
}
int get roleId {
return (values['role_id'] as int);
int? get roleId {
return (values['role_id'] as int?);
}
set roleId(int value) => values['role_id'] = value;
int get userId {
return (values['user_id'] as int);
set roleId(int? value) => values['role_id'] = value;
int? get userId {
return (values['user_id'] as int?);
}
set userId(int value) => values['user_id'] = value;
set userId(int? value) => values['user_id'] = value;
void copyFrom(RoleUser model) {
if (model.role != null) {
values['role_id'] = model.role.id;
values['role_id'] = model.role!.id;
}
if (model.user != null) {
values['user_id'] = model.user.id;
values['user_id'] = model.user!.id;
}
}
}
class RoleQuery extends Query<Role, RoleQueryWhere> {
RoleQuery({Query parent, Set<String> trampoline}) : super(parent: parent) {
class RoleQuery extends Query<Role?, RoleQueryWhere?> {
RoleQuery({Query? parent, Set<String>? trampoline}) : super(parent: parent) {
trampoline ??= Set();
trampoline.add(tableName);
_where = RoleQueryWhere(this);
@ -419,7 +416,7 @@ class RoleQuery extends Query<Role, RoleQueryWhere> {
@override
final RoleQueryValues values = RoleQueryValues();
RoleQueryWhere _where;
RoleQueryWhere? _where;
@override
get casts {
@ -437,7 +434,7 @@ class RoleQuery extends Query<Role, RoleQueryWhere> {
}
@override
RoleQueryWhere get where {
RoleQueryWhere? get where {
return _where;
}
@ -446,13 +443,13 @@ class RoleQuery extends Query<Role, RoleQueryWhere> {
return RoleQueryWhere(this);
}
static Role parseRow(List row) {
static Role? parseRow(List row) {
if (row.every((x) => x == null)) return null;
var model = Role(
id: row[0].toString(),
createdAt: (row[1] as DateTime),
updatedAt: (row[2] as DateTime),
name: (row[3] as String));
createdAt: (row[1] as DateTime?),
updatedAt: (row[2] as DateTime?),
name: (row[3] as String?));
if (row.length > 4) {
model = model.copyWith(
users: [UserQuery.parseRow(row.skip(4).take(6).toList())]
@ -469,24 +466,23 @@ class RoleQuery extends Query<Role, RoleQueryWhere> {
@override
bool canCompile(trampoline) {
return (!(trampoline.contains('roles') &&
trampoline.contains('role_users')));
return (!(trampoline?.contains('roles') == true &&
trampoline?.contains('role_users') == true));
}
@override
get(QueryExecutor executor) {
return super.get(executor).then((result) {
return result.fold<List<Role>>([], (out, model) {
var idx = out.indexWhere((m) => m.id == model.id);
return result.fold<List<Role?>>([], (out, model) {
var idx = out.indexWhere((m) => m!.id == model!.id);
if (idx == -1) {
return out..add(model);
} else {
var l = out[idx];
var l = out[idx]!;
return out
..[idx] = l.copyWith(
users: List<_User>.from(l.users ?? [])
..addAll(model.users ?? []));
users: List<_User>.from(l.users)..addAll(model!.users));
}
});
});
@ -495,17 +491,16 @@ class RoleQuery extends Query<Role, RoleQueryWhere> {
@override
update(QueryExecutor executor) {
return super.update(executor).then((result) {
return result.fold<List<Role>>([], (out, model) {
var idx = out.indexWhere((m) => m.id == model.id);
return result.fold<List<Role?>>([], (out, model) {
var idx = out.indexWhere((m) => m!.id == model!.id);
if (idx == -1) {
return out..add(model);
} else {
var l = out[idx];
var l = out[idx]!;
return out
..[idx] = l.copyWith(
users: List<_User>.from(l.users ?? [])
..addAll(model.users ?? []));
users: List<_User>.from(l.users)..addAll(model!.users));
}
});
});
@ -514,17 +509,16 @@ class RoleQuery extends Query<Role, RoleQueryWhere> {
@override
delete(QueryExecutor executor) {
return super.delete(executor).then((result) {
return result.fold<List<Role>>([], (out, model) {
var idx = out.indexWhere((m) => m.id == model.id);
return result.fold<List<Role?>>([], (out, model) {
var idx = out.indexWhere((m) => m!.id == model!.id);
if (idx == -1) {
return out..add(model);
} else {
var l = out[idx];
var l = out[idx]!;
return out
..[idx] = l.copyWith(
users: List<_User>.from(l.users ?? [])
..addAll(model.users ?? []));
users: List<_User>.from(l.users)..addAll(model!.users));
}
});
});
@ -558,26 +552,26 @@ class RoleQueryValues extends MapQueryValues {
return {};
}
String get id {
return (values['id'] as String);
String? get id {
return (values['id'] as String?);
}
set id(String value) => values['id'] = value;
DateTime get createdAt {
return (values['created_at'] as DateTime);
set id(String? value) => values['id'] = value;
DateTime? get createdAt {
return (values['created_at'] as DateTime?);
}
set createdAt(DateTime value) => values['created_at'] = value;
DateTime get updatedAt {
return (values['updated_at'] as DateTime);
set createdAt(DateTime? value) => values['created_at'] = value;
DateTime? get updatedAt {
return (values['updated_at'] as DateTime?);
}
set updatedAt(DateTime value) => values['updated_at'] = value;
String get name {
return (values['name'] as String);
set updatedAt(DateTime? value) => values['updated_at'] = value;
String? get name {
return (values['name'] as String?);
}
set name(String value) => values['name'] = value;
set name(String? value) => values['name'] = value;
void copyFrom(Role model) {
createdAt = model.createdAt;
updatedAt = model.updatedAt;
@ -598,41 +592,41 @@ class User extends _User {
this.username,
this.password,
this.email,
List<_Role> roles})
List<_Role?>? roles})
: this.roles = List.unmodifiable(roles ?? []);
/// A unique identifier corresponding to this item.
@override
String id;
String? id;
/// The time at which this item was created.
@override
DateTime createdAt;
DateTime? createdAt;
/// The last time at which this item was updated.
@override
DateTime updatedAt;
DateTime? updatedAt;
@override
final String username;
final String? username;
@override
final String password;
final String? password;
@override
final String email;
final String? email;
@override
final List<_Role> roles;
User copyWith(
{String id,
DateTime createdAt,
DateTime updatedAt,
String username,
String password,
String email,
List<_Role> roles}) {
{String? id,
DateTime? createdAt,
DateTime? updatedAt,
String? username,
String? password,
String? email,
List<_Role?>? roles}) {
return User(
id: id ?? this.id,
createdAt: createdAt ?? this.createdAt,
@ -666,7 +660,7 @@ class User extends _User {
return "User(id=$id, createdAt=$createdAt, updatedAt=$updatedAt, username=$username, password=$password, email=$email, roles=$roles)";
}
Map<String, dynamic> toJson() {
Map<String, dynamic>? toJson() {
return UserSerializer.toMap(this);
}
}
@ -676,12 +670,12 @@ class RoleUser implements _RoleUser {
const RoleUser({this.role, this.user});
@override
final _Role role;
final _Role? role;
@override
final _User user;
final _User? user;
RoleUser copyWith({_Role role, _User user}) {
RoleUser copyWith({_Role? role, _User? user}) {
return RoleUser(role: role ?? this.role, user: user ?? this.user);
}
@ -706,33 +700,34 @@ class RoleUser implements _RoleUser {
@generatedSerializable
class Role extends _Role {
Role({this.id, this.createdAt, this.updatedAt, this.name, List<_User> users})
Role(
{this.id, this.createdAt, this.updatedAt, this.name, List<_User?>? users})
: this.users = List.unmodifiable(users ?? []);
/// A unique identifier corresponding to this item.
@override
String id;
String? id;
/// The time at which this item was created.
@override
DateTime createdAt;
DateTime? createdAt;
/// The last time at which this item was updated.
@override
DateTime updatedAt;
DateTime? updatedAt;
@override
String name;
String? name;
@override
final List<_User> users;
Role copyWith(
{String id,
DateTime createdAt,
DateTime updatedAt,
String name,
List<_User> users}) {
{String? id,
DateTime? createdAt,
DateTime? updatedAt,
String? name,
List<_User?>? users}) {
return Role(
id: id ?? this.id,
createdAt: createdAt ?? this.createdAt,
@ -761,7 +756,7 @@ class Role extends _Role {
return "Role(id=$id, createdAt=$createdAt, updatedAt=$updatedAt, name=$name, users=$users)";
}
Map<String, dynamic> toJson() {
Map<String, dynamic>? toJson() {
return RoleSerializer.toMap(this);
}
}
@ -772,11 +767,11 @@ class Role extends _Role {
const UserSerializer userSerializer = UserSerializer();
class UserEncoder extends Converter<User, Map> {
class UserEncoder extends Converter<User, Map?> {
const UserEncoder();
@override
Map convert(User model) => UserSerializer.toMap(model);
Map? convert(User model) => UserSerializer.toMap(model);
}
class UserDecoder extends Converter<Map, User> {
@ -786,7 +781,7 @@ class UserDecoder extends Converter<Map, User> {
User convert(Map map) => UserSerializer.fromMap(map);
}
class UserSerializer extends Codec<User, Map> {
class UserSerializer extends Codec<User, Map?> {
const UserSerializer();
@override
@ -795,27 +790,27 @@ class UserSerializer extends Codec<User, Map> {
get decoder => const UserDecoder();
static User fromMap(Map map) {
return User(
id: map['id'] as String,
id: map['id'] as String?,
createdAt: map['created_at'] != null
? (map['created_at'] is DateTime
? (map['created_at'] as DateTime)
? (map['created_at'] as DateTime?)
: DateTime.parse(map['created_at'].toString()))
: null,
updatedAt: map['updated_at'] != null
? (map['updated_at'] is DateTime
? (map['updated_at'] as DateTime)
? (map['updated_at'] as DateTime?)
: DateTime.parse(map['updated_at'].toString()))
: null,
username: map['username'] as String,
password: map['password'] as String,
email: map['email'] as String,
username: map['username'] as String?,
password: map['password'] as String?,
email: map['email'] as String?,
roles: map['roles'] is Iterable
? List.unmodifiable(((map['roles'] as Iterable).whereType<Map>())
.map(RoleSerializer.fromMap))
: null);
}
static Map<String, dynamic> toMap(_User model) {
static Map<String, dynamic>? toMap(_User? model) {
if (model == null) {
return null;
}
@ -826,7 +821,7 @@ class UserSerializer extends Codec<User, Map> {
'username': model.username,
'password': model.password,
'email': model.email,
'roles': model.roles?.map((m) => RoleSerializer.toMap(m))?.toList()
'roles': model.roles.map((m) => RoleSerializer.toMap(m)).toList()
};
}
}
@ -891,9 +886,6 @@ class RoleUserSerializer extends Codec<RoleUser, Map> {
}
static Map<String, dynamic> toMap(_RoleUser model) {
if (model == null) {
return null;
}
return {
'role': RoleSerializer.toMap(model.role),
'user': UserSerializer.toMap(model.user)
@ -911,11 +903,11 @@ abstract class RoleUserFields {
const RoleSerializer roleSerializer = RoleSerializer();
class RoleEncoder extends Converter<Role, Map> {
class RoleEncoder extends Converter<Role, Map?> {
const RoleEncoder();
@override
Map convert(Role model) => RoleSerializer.toMap(model);
Map? convert(Role model) => RoleSerializer.toMap(model);
}
class RoleDecoder extends Converter<Map, Role> {
@ -925,7 +917,7 @@ class RoleDecoder extends Converter<Map, Role> {
Role convert(Map map) => RoleSerializer.fromMap(map);
}
class RoleSerializer extends Codec<Role, Map> {
class RoleSerializer extends Codec<Role, Map?> {
const RoleSerializer();
@override
@ -934,25 +926,25 @@ class RoleSerializer extends Codec<Role, Map> {
get decoder => const RoleDecoder();
static Role fromMap(Map map) {
return Role(
id: map['id'] as String,
id: map['id'] as String?,
createdAt: map['created_at'] != null
? (map['created_at'] is DateTime
? (map['created_at'] as DateTime)
? (map['created_at'] as DateTime?)
: DateTime.parse(map['created_at'].toString()))
: null,
updatedAt: map['updated_at'] != null
? (map['updated_at'] is DateTime
? (map['updated_at'] as DateTime)
? (map['updated_at'] as DateTime?)
: DateTime.parse(map['updated_at'].toString()))
: null,
name: map['name'] as String,
name: map['name'] as String?,
users: map['users'] is Iterable
? List.unmodifiable(((map['users'] as Iterable).whereType<Map>())
.map(UserSerializer.fromMap))
: null);
}
static Map<String, dynamic> toMap(_Role model) {
static Map<String, dynamic>? toMap(_Role? model) {
if (model == null) {
return null;
}
@ -961,7 +953,7 @@ class RoleSerializer extends Codec<Role, Map> {
'created_at': model.createdAt?.toIso8601String(),
'updated_at': model.updatedAt?.toIso8601String(),
'name': model.name,
'users': model.users?.map((m) => UserSerializer.toMap(m))?.toList()
'users': model.users.map((m) => UserSerializer.toMap(m)).toList()
};
}
}

View file

@ -6,14 +6,14 @@ import 'models/car.dart';
final DateTime y2k = new DateTime.utc(2000, 1, 1);
standaloneTests(FutureOr<QueryExecutor> Function() createExecutor,
{FutureOr<void> Function(QueryExecutor) close}) {
{FutureOr<void> Function(QueryExecutor)? close}) {
close ??= (_) => null;
test('to where', () {
var query = new CarQuery();
query.where
..familyFriendly.isTrue
?..familyFriendly.isTrue
..recalledAt.lessThanOrEqualTo(y2k, includeTime: false);
var whereClause = query.where.compile(tableName: 'cars');
var whereClause = query.where!.compile(tableName: 'cars');
print('Where clause: $whereClause');
expect(whereClause,
'cars.family_friendly = TRUE AND cars.recalled_at <= \'2000-01-01\'');
@ -24,34 +24,35 @@ standaloneTests(FutureOr<QueryExecutor> Function() createExecutor,
// var row = [0, 'Mazda', 'CX9', true, y2k, y2k, y2k];
var row = [0, y2k, y2k, 'Mazda', 'CX9', true, y2k];
print(row);
var car = new CarQuery().deserialize(row);
var car = new CarQuery().deserialize(row)!;
print(car.toJson());
expect(car.id, '0');
expect(car.make, 'Mazda');
expect(car.description, 'CX9');
expect(car.familyFriendly, true);
expect(y2k.toIso8601String(), startsWith(car.recalledAt.toIso8601String()));
expect(y2k.toIso8601String(), startsWith(car.createdAt.toIso8601String()));
expect(y2k.toIso8601String(), startsWith(car.updatedAt.toIso8601String()));
expect(
y2k.toIso8601String(), startsWith(car.recalledAt!.toIso8601String()));
expect(y2k.toIso8601String(), startsWith(car.createdAt!.toIso8601String()));
expect(y2k.toIso8601String(), startsWith(car.updatedAt!.toIso8601String()));
});
group('queries', () {
QueryExecutor executor;
late QueryExecutor executor;
setUp(() async {
executor = await createExecutor();
});
tearDown(() => close(executor));
tearDown(() => close!(executor));
group('selects', () {
test('select all', () async {
var cars = await new CarQuery().get(executor);
List<Car?> cars = await new CarQuery().get(executor);
expect(cars, []);
});
group('with data', () {
Car ferrari;
Car? ferrari;
setUp(() async {
var query = new CarQuery();
@ -63,26 +64,26 @@ standaloneTests(FutureOr<QueryExecutor> Function() createExecutor,
});
test('where clause is applied', () async {
var query = new CarQuery()..where.familyFriendly.isTrue;
var cars = await query.get(executor);
var query = new CarQuery()..where!.familyFriendly.isTrue;
List<Car?> cars = await query.get(executor);
expect(cars, isEmpty);
var sportsCars = new CarQuery()..where.familyFriendly.isFalse;
var sportsCars = new CarQuery()..where!.familyFriendly.isFalse;
cars = await sportsCars.get(executor);
print(cars.map((c) => c.toJson()));
print(cars.map((c) => c!.toJson()));
var car = cars.first;
expect(car.make, ferrari.make);
expect(car.description, ferrari.description);
expect(car.familyFriendly, ferrari.familyFriendly);
var car = cars.first!;
expect(car.make, ferrari!.make);
expect(car.description, ferrari!.description);
expect(car.familyFriendly, ferrari!.familyFriendly);
expect(car.recalledAt, isNull);
});
test('union', () async {
var query1 = new CarQuery()..where.make.like('%Fer%');
var query2 = new CarQuery()..where.familyFriendly.isTrue;
var query3 = new CarQuery()..where.description.equals('Submarine');
var union = query1.union(query2).unionAll(query3);
var query1 = new CarQuery()..where!.make.like('%Fer%');
var query2 = new CarQuery()..where!.familyFriendly.isTrue;
var query3 = new CarQuery()..where!.description.equals('Submarine');
Union<Car?> union = query1.union(query2).unionAll(query3);
print(union.compile(Set()));
var cars = await union.get(executor);
expect(cars, hasLength(1));
@ -90,63 +91,63 @@ standaloneTests(FutureOr<QueryExecutor> Function() createExecutor,
test('or clause', () async {
var query = new CarQuery()
..where.make.like('Fer%')
..where!.make.like('Fer%')
..orWhere((where) => where
..familyFriendly.isTrue
?..familyFriendly.isTrue
..make.equals('Honda'));
print(query.compile(Set()));
var cars = await query.get(executor);
List<Car?> cars = await query.get(executor);
expect(cars, hasLength(1));
});
test('limit obeyed', () async {
var query = new CarQuery()..limit(0);
print(query.compile(Set()));
var cars = await query.get(executor);
List<Car?> cars = await query.get(executor);
expect(cars, isEmpty);
});
test('get one', () async {
var id = int.parse(ferrari.id);
var query = new CarQuery()..where.id.equals(id);
var id = int.parse(ferrari!.id!);
var query = new CarQuery()..where!.id.equals(id);
var car = await query.getOne(executor);
expect(car, ferrari);
});
test('delete one', () async {
var id = int.parse(ferrari.id);
var query = new CarQuery()..where.id.equals(id);
var car = await query.deleteOne(executor);
expect(car.toJson(), ferrari.toJson());
var id = int.parse(ferrari!.id!);
var query = new CarQuery()..where!.id.equals(id);
var car = await (query.deleteOne(executor) as FutureOr<Car>);
expect(car.toJson(), ferrari!.toJson());
var cars = await new CarQuery().get(executor);
List<Car?> cars = await new CarQuery().get(executor);
expect(cars, isEmpty);
});
test('delete stream', () async {
var query = new CarQuery()
..where.make.equals('Ferrari東')
..orWhere((w) => w.familyFriendly.isTrue);
..where!.make.equals('Ferrari東')
..orWhere((w) => w!.familyFriendly.isTrue);
print(query.compile(Set(), preamble: 'DELETE FROM "cars"'));
var cars = await query.delete(executor);
List<Car?> cars = await query.delete(executor);
expect(cars, hasLength(1));
expect(cars.first.toJson(), ferrari.toJson());
expect(cars.first!.toJson(), ferrari!.toJson());
});
test('update', () async {
var query = new CarQuery()
..where.id.equals(int.parse(ferrari.id))
..where!.id.equals(int.parse(ferrari!.id!))
..values.make = 'Hyundai';
var cars = await query.update(executor);
List<Car?> cars = await query.update(executor);
expect(cars, hasLength(1));
expect(cars.first.make, 'Hyundai');
expect(cars.first!.make, 'Hyundai');
});
test('update car', () async {
var cloned = ferrari.copyWith(make: 'Angel');
var cloned = ferrari!.copyWith(make: 'Angel');
var query = new CarQuery()..values.copyFrom(cloned);
var car = await query.updateOne(executor);
var car = await (query.updateOne(executor) as FutureOr<Car>);
print(car.toJson());
expect(car.toJson(), cloned.toJson());
});
@ -164,12 +165,12 @@ standaloneTests(FutureOr<QueryExecutor> Function() createExecutor,
..recalledAt = recalledAt
..createdAt = now
..updatedAt = now;
var car = await query.insert(executor);
var car = await (query.insert(executor) as FutureOr<Car>);
expect(car.id, isNotNull);
expect(car.make, 'Honda');
expect(car.description, 'Hello');
expect(car.familyFriendly, isTrue);
expect(dateYmdHms.format(car.recalledAt), dateYmdHms.format(recalledAt));
expect(dateYmdHms.format(car.recalledAt!), dateYmdHms.format(recalledAt));
expect(car.createdAt, allOf(isNotNull, equals(car.updatedAt)));
});
@ -181,13 +182,13 @@ standaloneTests(FutureOr<QueryExecutor> Function() createExecutor,
familyFriendly: true,
recalledAt: recalledAt);
var query = new CarQuery()..values.copyFrom(beetle);
var car = await query.insert(executor);
var car = await (query.insert(executor) as FutureOr<Car>);
print(car.toJson());
expect(car.make, beetle.make);
expect(car.description, beetle.description);
expect(car.familyFriendly, beetle.familyFriendly);
expect(dateYmdHms.format(car.recalledAt),
dateYmdHms.format(beetle.recalledAt));
expect(dateYmdHms.format(car.recalledAt!),
dateYmdHms.format(beetle.recalledAt!));
});
});
}

View file

@ -1,40 +1,40 @@
name: angel_orm_test
version: 1.0.0
version: 3.0.0
publish_to: none
description: Common tests for Angel ORM backends.
environment:
sdk: '>=2.10.0 <3.0.0'
sdk: '>=2.12.0 <3.0.0'
dependencies:
angel_migration:
git:
url: https://github.com/dukefirehawk/angel.git
ref: sdk-2.12.x
ref: sdk-2.12.x_nnbd
path: packages/orm/angel_migration
angel_model:
git:
url: https://github.com/dukefirehawk/angel.git
ref: sdk-2.12.x
ref: sdk-2.12.x_nnbd
path: packages/model
angel_orm:
git:
url: https://github.com/dukefirehawk/angel.git
ref: sdk-2.12.x
ref: sdk-2.12.x_nnbd
path: packages/orm/angel_orm
angel_serialize:
git:
url: https://github.com/dukefirehawk/angel.git
ref: sdk-2.12.x
ref: sdk-2.12.x_nnbd
path: packages/serialize/angel_serialize
test: ^1.15.7
test: ^1.17.3
dev_dependencies:
angel_orm_generator:
git:
url: https://github.com/dukefirehawk/angel.git
ref: sdk-2.12.x
ref: sdk-2.12.x_nnbd
path: packages/orm/angel_orm_generator
angel_framework:
git:
url: https://github.com/dukefirehawk/angel.git
ref: sdk-2.12.x
ref: sdk-2.12.x_nnbd
path: packages/framework
build_runner: ^1.0.0
build_runner: ^2.0.1