mirror of https://github.com/AMT-Cheif/drift.git
Include information about all tables in generated db code
This commit is contained in:
parent
e4913219e4
commit
a2e3eb8a9d
|
@ -3,28 +3,26 @@ import 'package:sally/sally.dart';
|
||||||
part 'example.g.dart';
|
part 'example.g.dart';
|
||||||
|
|
||||||
class Products extends Table {
|
class Products extends Table {
|
||||||
|
|
||||||
IntColumn get id => integer().named('products_id').autoIncrement()();
|
IntColumn get id => integer().named('products_id').autoIncrement()();
|
||||||
TextColumn get name => text()();
|
TextColumn get name => text()();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class Users extends Table {
|
class Users extends Table {
|
||||||
|
|
||||||
IntColumn get id => integer().autoIncrement()();
|
IntColumn get id => integer().autoIncrement()();
|
||||||
TextColumn get name => text().withLength(min: 6, max: 32)();
|
TextColumn get name => text().withLength(min: 6, max: 32)();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@UseSally(tables: [Products, Users])
|
@UseSally(tables: [Products, Users])
|
||||||
class ShopDb extends _$ShopDb {
|
class ShopDb extends _$ShopDb {
|
||||||
|
|
||||||
Future<List<User>> allUsers() => select(users).get();
|
Future<List<User>> allUsers() => select(users).get();
|
||||||
Future<List<User>> userByName(String name) => (select(users)..where((u) => u.name.equalsVal(name))).get();
|
Future<List<User>> userByName(String name) =>
|
||||||
|
(select(users)..where((u) => u.name.equalsVal(name))).get();
|
||||||
|
|
||||||
|
Future<void> deleteUser(User user) =>
|
||||||
|
(delete(users)..where((u) => u.id.equalsVal(user.id))).go();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
MigrationStrategy get migration => MigrationStrategy();
|
MigrationStrategy get migration => MigrationStrategy();
|
||||||
@override
|
@override
|
||||||
int get schemaVersion => 1;
|
int get schemaVersion => 1;
|
||||||
|
|
||||||
}
|
}
|
|
@ -74,4 +74,6 @@ abstract class _$ShopDb extends GeneratedDatabase {
|
||||||
_$ShopDb() : super(const SqlTypeSystem.withDefaults(), null);
|
_$ShopDb() : super(const SqlTypeSystem.withDefaults(), null);
|
||||||
_$ProductsTable get products => _$ProductsTable(this);
|
_$ProductsTable get products => _$ProductsTable(this);
|
||||||
_$UsersTable get users => _$UsersTable(this);
|
_$UsersTable get users => _$UsersTable(this);
|
||||||
|
@override
|
||||||
|
List<TableInfo> get allTables => [products, users];
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,8 @@ abstract class GeneratedDatabase {
|
||||||
int get schemaVersion;
|
int get schemaVersion;
|
||||||
MigrationStrategy get migration;
|
MigrationStrategy get migration;
|
||||||
|
|
||||||
|
List<TableInfo> get allTables;
|
||||||
|
|
||||||
GeneratedDatabase(this.typeSystem, this.executor);
|
GeneratedDatabase(this.typeSystem, this.executor);
|
||||||
|
|
||||||
SelectStatement<Table, ReturnType> select<Table, ReturnType>(
|
SelectStatement<Table, ReturnType> select<Table, ReturnType>(
|
||||||
|
|
|
@ -51,4 +51,7 @@ class TestDatabase extends GeneratedDatabase {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
int get schemaVersion => 1;
|
int get schemaVersion => 1;
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<TableInfo> get allTables => [users];
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ class DatabaseWriter {
|
||||||
DatabaseWriter(this.db);
|
DatabaseWriter(this.db);
|
||||||
|
|
||||||
void write(StringBuffer buffer) {
|
void write(StringBuffer buffer) {
|
||||||
|
// Write referenced tables
|
||||||
for (final table in db.tables) {
|
for (final table in db.tables) {
|
||||||
TableWriter(table).writeInto(buffer);
|
TableWriter(table).writeInto(buffer);
|
||||||
}
|
}
|
||||||
|
@ -18,13 +19,20 @@ class DatabaseWriter {
|
||||||
buffer.write('abstract class $className extends GeneratedDatabase {\n'
|
buffer.write('abstract class $className extends GeneratedDatabase {\n'
|
||||||
'$className() : super(const SqlTypeSystem.withDefaults(), null); \n');
|
'$className() : super(const SqlTypeSystem.withDefaults(), null); \n');
|
||||||
|
|
||||||
|
final tableGetters = <String>[];
|
||||||
|
|
||||||
for (var table in db.tables) {
|
for (var table in db.tables) {
|
||||||
final tableFieldName = ReCase(table.fromClass.name).camelCase;
|
final tableFieldName = ReCase(table.fromClass.name).camelCase;
|
||||||
|
tableGetters.add(tableFieldName);
|
||||||
final tableClassName = table.tableInfoName;
|
final tableClassName = table.tableInfoName;
|
||||||
|
|
||||||
buffer.write('$tableClassName get $tableFieldName => $tableClassName(this);');
|
buffer.write('$tableClassName get $tableFieldName => $tableClassName(this);');
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer.write('}');
|
// Write List of tables, close bracket for class
|
||||||
|
buffer
|
||||||
|
..write('@override\nList<TableInfo> get allTables => [')
|
||||||
|
..write(tableGetters.join(','))
|
||||||
|
..write('];\n}');
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue