mirror of https://github.com/AMT-Cheif/drift.git
Use extension for all tables in modular generation
This commit is contained in:
parent
5f2d52ccc5
commit
16e6aaf4fe
|
@ -1,4 +1,5 @@
|
|||
import '../analysis/results/results.dart';
|
||||
import '../utils/string_escaper.dart';
|
||||
import 'database_writer.dart';
|
||||
import 'modules.dart';
|
||||
import 'queries/query_writer.dart';
|
||||
|
@ -12,10 +13,11 @@ class AccessorWriter {
|
|||
|
||||
void write() {
|
||||
final classScope = scope.child();
|
||||
final isModular = scope.generationOptions.isModular;
|
||||
|
||||
final daoName = input.accessor.declaration.name!;
|
||||
|
||||
final prefix = scope.generationOptions.isModular ? '' : r'_';
|
||||
final prefix = isModular ? '' : r'_';
|
||||
classScope.leaf()
|
||||
..write('mixin $prefix\$${daoName}Mixin on ')
|
||||
..writeDriftRef('DatabaseAccessor<')
|
||||
|
@ -27,16 +29,27 @@ class AccessorWriter {
|
|||
final infoType = scope.entityInfoType(entity);
|
||||
final getterName = entity.dbGetterName;
|
||||
|
||||
classScope.leaf()
|
||||
final getterText = classScope.leaf()
|
||||
..writeDart(infoType)
|
||||
..writeln(' get $getterName => attachedDatabase.$getterName;');
|
||||
..writeln(' get $getterName =>');
|
||||
|
||||
if (isModular) {
|
||||
getterText
|
||||
..writeUriRef(
|
||||
ModularAccessorWriter.modularSupport, 'ReadDatabaseContainer')
|
||||
..write('(attachedDatabase).resultSet(')
|
||||
..write(asDartLiteral(entity.schemaName))
|
||||
..writeln(');');
|
||||
} else {
|
||||
getterText.writeln('attachedDatabase.$getterName;');
|
||||
}
|
||||
}
|
||||
|
||||
for (final query in input.availableRegularQueries) {
|
||||
QueryWriter(classScope.child()).write(query);
|
||||
}
|
||||
|
||||
if (scope.generationOptions.isModular) {
|
||||
if (isModular) {
|
||||
for (final import in input.resolvedAccessor.knownImports) {
|
||||
classScope.writeGetterForIncludedDriftFile(import, input.driver!,
|
||||
isAccessor: true);
|
||||
|
|
|
@ -1,14 +1,17 @@
|
|||
// ignore_for_file: type=lint
|
||||
import 'package:drift/drift.dart' as i0;
|
||||
import 'package:modular/database.dart' as i1;
|
||||
import 'package:drift/src/runtime/api/runtime_api.dart' as i1;
|
||||
import 'package:modular/src/users.drift.dart' as i2;
|
||||
import 'package:modular/src/user_queries.drift.dart' as i3;
|
||||
import 'package:drift/internal/modular.dart' as i4;
|
||||
import 'package:drift/internal/modular.dart' as i3;
|
||||
import 'package:modular/src/user_queries.drift.dart' as i4;
|
||||
|
||||
mixin $MyAccessorMixin on i0.DatabaseAccessor<i1.Database> {
|
||||
i2.Users get users => attachedDatabase.users;
|
||||
i2.Follows get follows => attachedDatabase.follows;
|
||||
i2.PopularUsers get popularUsers => attachedDatabase.popularUsers;
|
||||
mixin $MyAccessorMixin on i0.DatabaseAccessor<i1.GeneratedDatabase> {
|
||||
i2.Users get users =>
|
||||
i3.ReadDatabaseContainer(attachedDatabase).resultSet('users');
|
||||
i2.Follows get follows =>
|
||||
i3.ReadDatabaseContainer(attachedDatabase).resultSet('follows');
|
||||
i2.PopularUsers get popularUsers =>
|
||||
i3.ReadDatabaseContainer(attachedDatabase).resultSet('popular_users');
|
||||
Future<int> addUser({required i0.Insertable<i2.User> user}) {
|
||||
var $arrayStartIndex = 1;
|
||||
final generateduser =
|
||||
|
@ -21,7 +24,7 @@ mixin $MyAccessorMixin on i0.DatabaseAccessor<i1.Database> {
|
|||
);
|
||||
}
|
||||
|
||||
i3.UserQueriesDrift get userQueriesDrift =>
|
||||
i4.ReadDatabaseContainer(attachedDatabase)
|
||||
.accessor<i3.UserQueriesDrift>(i3.UserQueriesDrift.new);
|
||||
i4.UserQueriesDrift get userQueriesDrift =>
|
||||
i3.ReadDatabaseContainer(attachedDatabase)
|
||||
.accessor<i4.UserQueriesDrift>(i4.UserQueriesDrift.new);
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ import 'package:modular/src/users.drift.dart' as i1;
|
|||
import 'package:modular/src/posts.drift.dart' as i2;
|
||||
import 'package:modular/src/search.drift.dart' as i3;
|
||||
import 'package:modular/accessor.dart' as i4;
|
||||
import 'package:modular/database.dart' as i5;
|
||||
import 'package:drift/src/runtime/api/runtime_api.dart' as i5;
|
||||
import 'package:modular/src/user_queries.drift.dart' as i6;
|
||||
import 'package:drift/internal/modular.dart' as i7;
|
||||
|
||||
|
@ -16,7 +16,8 @@ abstract class $Database extends i0.GeneratedDatabase {
|
|||
late final i2.Likes likes = i2.Likes(this);
|
||||
late final i1.Follows follows = i1.Follows(this);
|
||||
late final i1.PopularUsers popularUsers = i1.PopularUsers(this);
|
||||
late final i4.MyAccessor myAccessor = i4.MyAccessor(this as i5.Database);
|
||||
late final i4.MyAccessor myAccessor =
|
||||
i4.MyAccessor(this as i5.GeneratedDatabase);
|
||||
i6.UserQueriesDrift get userQueriesDrift => i7.ReadDatabaseContainer(this)
|
||||
.accessor<i6.UserQueriesDrift>(i6.UserQueriesDrift.new);
|
||||
i3.SearchDrift get searchDrift => i7.ReadDatabaseContainer(this)
|
||||
|
|
Loading…
Reference in New Issue