diff --git a/.idea/libraries/Dart_Packages.xml b/.idea/libraries/Dart_Packages.xml index 4cb0f3fd..a298a4de 100644 --- a/.idea/libraries/Dart_Packages.xml +++ b/.idea/libraries/Dart_Packages.xml @@ -6,8 +6,8 @@ @@ -63,7 +63,7 @@ @@ -81,7 +81,7 @@ @@ -113,7 +113,7 @@ - @@ -121,7 +121,7 @@ - @@ -214,8 +214,8 @@ @@ -302,8 +302,8 @@ @@ -371,7 +371,7 @@ - @@ -387,7 +387,7 @@ - @@ -509,7 +509,7 @@ - @@ -661,7 +661,7 @@ - + @@ -670,17 +670,17 @@ - + - + - - + + @@ -689,7 +689,7 @@ - + @@ -701,7 +701,7 @@ - + @@ -711,9 +711,9 @@ - + - + @@ -727,7 +727,7 @@ - + @@ -743,7 +743,7 @@ - + @@ -764,7 +764,7 @@ - + @@ -774,7 +774,7 @@ - + diff --git a/.idea/libraries/Dart_SDK.xml b/.idea/libraries/Dart_SDK.xml index c4439c19..d523b73c 100644 --- a/.idea/libraries/Dart_SDK.xml +++ b/.idea/libraries/Dart_SDK.xml @@ -1,25 +1,26 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/analysis_options.yaml b/analysis_options.yaml index 7fe40a97..7c8524d0 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -64,7 +64,6 @@ linter: - prefer_typing_uninitialized_variables - recursive_getters - slash_for_doc_comments - - super_goes_last - test_types_in_equals - throw_in_finally - type_init_formals diff --git a/sally/lib/src/runtime/executor/executor.dart b/sally/lib/src/runtime/executor/executor.dart index f76469eb..eb1057d9 100644 --- a/sally/lib/src/runtime/executor/executor.dart +++ b/sally/lib/src/runtime/executor/executor.dart @@ -134,7 +134,7 @@ abstract class GeneratedDatabase { /// value. Future> customSelect(String query, {List variables = const []}) async { - return CustomSelectStatement(query, variables, Set(), this).read(); + return CustomSelectStatement(query, variables, {}, this).read(); } /// Creates a stream from a custom select statement.To use the variables, mark @@ -144,7 +144,7 @@ abstract class GeneratedDatabase { /// reads data from. Stream> customSelectStream(String query, {List variables = const [], Set readsFrom}) { - final tables = readsFrom ?? Set(); + final tables = readsFrom ?? {}; return createStream(CustomSelectStatement(query, variables, tables, this)); } } diff --git a/sally/pubspec.yaml b/sally/pubspec.yaml index 0c8e1426..f2b8fcfc 100644 --- a/sally/pubspec.yaml +++ b/sally/pubspec.yaml @@ -8,7 +8,7 @@ authors: maintainer: Simon Binder (@simolus3) environment: - sdk: '>=2.0.0 <3.0.0' + sdk: '>=2.1.2-dev.0.0 <3.0.0' dependencies: meta: '>= 1.0.0 <2.0.0' diff --git a/sally/test/data/tables/todos.g.dart b/sally/test/data/tables/todos.g.dart index 05b77b81..30fc19a5 100644 --- a/sally/test/data/tables/todos.g.dart +++ b/sally/test/data/tables/todos.g.dart @@ -14,6 +14,18 @@ class TodoEntry { final int category; TodoEntry( {this.id, this.title, this.content, this.targetDate, this.category}); + factory TodoEntry.fromData(Map data, GeneratedDatabase db) { + final intType = db.typeSystem.forDartType(); + final stringType = db.typeSystem.forDartType(); + final dateTimeType = db.typeSystem.forDartType(); + return TodoEntry( + id: intType.mapFromDatabaseResponse(data['id']), + title: stringType.mapFromDatabaseResponse(data['title']), + content: stringType.mapFromDatabaseResponse(data['content']), + targetDate: dateTimeType.mapFromDatabaseResponse(data['target_date']), + category: intType.mapFromDatabaseResponse(data['category']), + ); + } @override int get hashCode => ((((id.hashCode) * 31 + title.hashCode) * 31 + content.hashCode) * 31 + @@ -73,19 +85,10 @@ class _$TodosTableTable extends TodosTable targetDate.isAcceptableValue(instance.targetDate, isInserting) && category.isAcceptableValue(instance.category, isInserting); @override - Set get $primaryKey => Set(); + Set get $primaryKey => {}; @override TodoEntry map(Map data) { - final intType = _db.typeSystem.forDartType(); - final stringType = _db.typeSystem.forDartType(); - final dateTimeType = _db.typeSystem.forDartType(); - return TodoEntry( - id: intType.mapFromDatabaseResponse(data['id']), - title: stringType.mapFromDatabaseResponse(data['title']), - content: stringType.mapFromDatabaseResponse(data['content']), - targetDate: dateTimeType.mapFromDatabaseResponse(data['target_date']), - category: intType.mapFromDatabaseResponse(data['category']), - ); + return TodoEntry.fromData(data, _db); } @override @@ -114,6 +117,14 @@ class Category { final int id; final String description; Category({this.id, this.description}); + factory Category.fromData(Map data, GeneratedDatabase db) { + final intType = db.typeSystem.forDartType(); + final stringType = db.typeSystem.forDartType(); + return Category( + id: intType.mapFromDatabaseResponse(data['id']), + description: stringType.mapFromDatabaseResponse(data['`desc`']), + ); + } @override int get hashCode => (id.hashCode) * 31 + description.hashCode; @override @@ -145,15 +156,10 @@ class _$CategoriesTable extends Categories id.isAcceptableValue(instance.id, isInserting) && description.isAcceptableValue(instance.description, isInserting); @override - Set get $primaryKey => Set(); + Set get $primaryKey => {}; @override Category map(Map data) { - final intType = _db.typeSystem.forDartType(); - final stringType = _db.typeSystem.forDartType(); - return Category( - id: intType.mapFromDatabaseResponse(data['id']), - description: stringType.mapFromDatabaseResponse(data['`desc`']), - ); + return Category.fromData(data, _db); } @override @@ -174,6 +180,16 @@ class User { final String name; final bool isAwesome; User({this.id, this.name, this.isAwesome}); + factory User.fromData(Map data, GeneratedDatabase db) { + final intType = db.typeSystem.forDartType(); + final stringType = db.typeSystem.forDartType(); + final boolType = db.typeSystem.forDartType(); + return User( + id: intType.mapFromDatabaseResponse(data['id']), + name: stringType.mapFromDatabaseResponse(data['name']), + isAwesome: boolType.mapFromDatabaseResponse(data['is_awesome']), + ); + } @override int get hashCode => ((id.hashCode) * 31 + name.hashCode) * 31 + isAwesome.hashCode; @@ -214,17 +230,10 @@ class _$UsersTable extends Users implements TableInfo { name.isAcceptableValue(instance.name, isInserting) && isAwesome.isAcceptableValue(instance.isAwesome, isInserting); @override - Set get $primaryKey => Set(); + Set get $primaryKey => {}; @override User map(Map data) { - final intType = _db.typeSystem.forDartType(); - final stringType = _db.typeSystem.forDartType(); - final boolType = _db.typeSystem.forDartType(); - return User( - id: intType.mapFromDatabaseResponse(data['id']), - name: stringType.mapFromDatabaseResponse(data['name']), - isAwesome: boolType.mapFromDatabaseResponse(data['is_awesome']), - ); + return User.fromData(data, _db); } @override diff --git a/sally/test/update_test.dart b/sally/test/update_test.dart index 8be1deef..3eb64aaf 100644 --- a/sally/test/update_test.dart +++ b/sally/test/update_test.dart @@ -91,7 +91,7 @@ void main() { }); test('informs about updated tables', () async { - await db.customUpdate('', updates: Set.of([db.users, db.todosTable])); + await db.customUpdate('', updates: {db.users, db.todosTable}); verify(streamQueries.handleTableUpdates('users')); verify(streamQueries.handleTableUpdates('todos')); diff --git a/sally_flutter/example/lib/database.dart b/sally_flutter/example/lib/database.dart index eb22e0c3..875632a0 100644 --- a/sally_flutter/example/lib/database.dart +++ b/sally_flutter/example/lib/database.dart @@ -53,7 +53,7 @@ class Database extends _$Database { // each category return customSelectStream( 'SELECT *, (SELECT COUNT(*) FROM todos WHERE category = c.id) AS "amount" FROM categories c;', - readsFrom: Set.of([todos, categories])).map((rows) { + readsFrom: {todos, categories}).map((rows) { // when we have the result set, map each row to the data class return rows .map((row) => CategoryWithCount(Category.fromData(row.data, this), row.readInt('amount'))) diff --git a/sally_flutter/example/lib/database.g.dart b/sally_flutter/example/lib/database.g.dart index acc7a779..124600ea 100644 --- a/sally_flutter/example/lib/database.g.dart +++ b/sally_flutter/example/lib/database.g.dart @@ -84,7 +84,7 @@ class _$TodosTable extends Todos implements TableInfo { targetDate.isAcceptableValue(instance.targetDate, isInserting) && category.isAcceptableValue(instance.category, isInserting); @override - Set get $primaryKey => Set(); + Set get $primaryKey => {}; @override TodoEntry map(Map data) { return TodoEntry.fromData(data, _db); @@ -155,7 +155,7 @@ class _$CategoriesTable extends Categories id.isAcceptableValue(instance.id, isInserting) && description.isAcceptableValue(instance.description, isInserting); @override - Set get $primaryKey => Set(); + Set get $primaryKey => {}; @override Category map(Map data) { return Category.fromData(data, _db); diff --git a/sally_generator/lib/src/model/specified_table.dart b/sally_generator/lib/src/model/specified_table.dart index eda14b67..33d11877 100644 --- a/sally_generator/lib/src/model/specified_table.dart +++ b/sally_generator/lib/src/model/specified_table.dart @@ -12,7 +12,7 @@ class SpecifiedTable { String get tableInfoName => '_\$${fromClass.name}Table'; // todo support primary keys - Set get primaryKey => Set(); + Set get primaryKey => {}; const SpecifiedTable( {this.fromClass, this.columns, this.sqlName, this.dartTypeName}); diff --git a/sally_generator/lib/src/parser/column_parser.dart b/sally_generator/lib/src/parser/column_parser.dart index 3f3ab878..13d0fc01 100644 --- a/sally_generator/lib/src/parser/column_parser.dart +++ b/sally_generator/lib/src/parser/column_parser.dart @@ -10,9 +10,7 @@ const String startString = 'text'; const String startBool = 'boolean'; const String startDateTime = 'dateTime'; -// todo replace with set literal once dart supports it -final Set starters = - [startInt, startString, startBool, startDateTime].toSet(); +final Set starters = {startInt, startString, startBool, startDateTime}; const String functionNamed = 'named'; const String functionPrimaryKey = 'primaryKey'; diff --git a/sally_generator/lib/src/writer/table_writer.dart b/sally_generator/lib/src/writer/table_writer.dart index acba6f2d..345d8da3 100644 --- a/sally_generator/lib/src/writer/table_writer.dart +++ b/sally_generator/lib/src/writer/table_writer.dart @@ -45,14 +45,12 @@ class TableWriter { _writeValidityCheckMethod(buffer); - // todo replace set syntax with literal once dart supports it - // write primary key getter: Set get $primaryKey => Set().add(id); + // write primary key getter: Set get $primaryKey => {id}; final primaryKeyColumns = table.primaryKey.map((c) => c.dartGetterName); - buffer.write('@override\nSet get \$primaryKey => Set()'); - for (var pkColumn in primaryKeyColumns) { - buffer.write('..add($pkColumn)'); - } - buffer.write('\n;'); + buffer + ..write('@override\nSet get \$primaryKey => {') + ..write(primaryKeyColumns.join(', ')) + ..write('};\n'); _writeMappingMethod(buffer); _writeReverseMappingMethod(buffer); @@ -65,9 +63,9 @@ class TableWriter { final dataClassName = table.dartTypeName; buffer - ..write('@override\n$dataClassName map(Map data) {\n') - ..write('return $dataClassName.fromData(data, _db);\n') - ..write('}\n'); + ..write('@override\n$dataClassName map(Map data) {\n') + ..write('return $dataClassName.fromData(data, _db);\n') + ..write('}\n'); } void _writeReverseMappingMethod(StringBuffer buffer) { diff --git a/sally_generator/pubspec.yaml b/sally_generator/pubspec.yaml index 5ec65b30..dbd45fd6 100644 --- a/sally_generator/pubspec.yaml +++ b/sally_generator/pubspec.yaml @@ -8,7 +8,7 @@ authors: maintainer: Simon Binder (@simolus3) environment: - sdk: '>=2.0.0 <3.0.0' + sdk: '>=2.1.2-dev.0.0 <3.0.0' dependencies: analyzer: '>=0.34.0 <0.36.0'