mirror of https://github.com/AMT-Cheif/drift.git
Hide some exports - Add manager to Database
This commit is contained in:
parent
46953c3a73
commit
7ed6ac5735
|
@ -20,7 +20,14 @@ export 'src/runtime/query_builder/query_builder.dart'
|
|||
hide CaseWhenExpressionWithBase, BaseCaseWhenExpression;
|
||||
export 'src/runtime/types/converters.dart';
|
||||
export 'src/runtime/types/mapping.dart' hide BaseSqlType, UserDefinedSqlType;
|
||||
export 'src/runtime/manager/manager.dart';
|
||||
export 'src/runtime/manager/manager.dart'
|
||||
hide
|
||||
JoinBuilder,
|
||||
ComposerState,
|
||||
HasJoinBuilders,
|
||||
Composer,
|
||||
AliasedComposerBuilder,
|
||||
BaseTableManager;
|
||||
export 'src/utils/lazy_database.dart';
|
||||
|
||||
/// A [ListEquality] instance used by generated drift code for the `==` and
|
||||
|
|
|
@ -39,20 +39,22 @@ class DatabaseWriter {
|
|||
void write() {
|
||||
final elements = input.resolvedAccessor.availableElements;
|
||||
|
||||
final shortcutWriter = ManagerWriter(scope.child(), dbClassName);
|
||||
final managerWriter = ManagerWriter(scope.child(), dbClassName);
|
||||
|
||||
// Write data classes, companions and info classes
|
||||
if (!scope.generationOptions.isModular) {
|
||||
for (final reference in elements) {
|
||||
if (reference is DriftTable) {
|
||||
TableWriter(reference, scope.child()).writeInto();
|
||||
shortcutWriter.addTable(reference);
|
||||
managerWriter.addTable(reference);
|
||||
} else if (reference is DriftView) {
|
||||
ViewWriter(reference, scope.child(), this).write();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
managerWriter.write();
|
||||
|
||||
// Write the database class
|
||||
final dbScope = scope.child();
|
||||
|
||||
|
@ -151,6 +153,8 @@ class DatabaseWriter {
|
|||
}
|
||||
}
|
||||
|
||||
firstLeaf.writeln(managerWriter.managerGetter);
|
||||
|
||||
// Write implementation for query methods
|
||||
for (final query in input.availableRegularQueries) {
|
||||
QueryWriter(dbScope.child()).write(query);
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
// ignore_for_file: public_member_api_docs, sort_constructors_first
|
||||
import 'package:drift/drift.dart';
|
||||
import 'package:drift_dev/src/analysis/results/results.dart';
|
||||
import 'package:drift_dev/src/writer/writer.dart';
|
||||
import 'package:recase/recase.dart';
|
||||
|
@ -11,20 +10,21 @@ extension on DriftColumn {
|
|||
}
|
||||
|
||||
class ManagerWriter {
|
||||
final Scope scope;
|
||||
final String dbClassName;
|
||||
final Scope _scope;
|
||||
final String _dbClassName;
|
||||
final List<DriftTable> _addedTables;
|
||||
|
||||
ManagerWriter(this.scope, this.dbClassName);
|
||||
ManagerWriter(this._scope, this._dbClassName) : _addedTables = [];
|
||||
|
||||
void addTable(DriftTable table) {
|
||||
final leaf = scope.leaf();
|
||||
void _writeTableManagers(DriftTable table) {
|
||||
final leaf = _scope.leaf();
|
||||
|
||||
final filters = StringBuffer();
|
||||
final orderings = StringBuffer();
|
||||
|
||||
for (var col in table.columns) {
|
||||
final getterName =
|
||||
ReCase(col.nameInDart + (col.isForeignKey ? " id" : " ")).camelCase;
|
||||
(col.nameInDart + (col.isForeignKey ? " id" : " ")).camelCase;
|
||||
|
||||
filters.writeln(
|
||||
"ColumnFilters get $getterName => ColumnFilters(state.table.${col.nameInDart});");
|
||||
|
@ -46,7 +46,7 @@ class ManagerWriter {
|
|||
ComposableFilter ${col.nameInDart}OrderBy(
|
||||
ComposableFilter Function(${referencedEntityInfoName}FilterComposer) f) {
|
||||
return referenced(
|
||||
referencedTable: state.db.${referencedTableGetter},
|
||||
referencedTable: state.db.$referencedTableGetter,
|
||||
getCurrentColumn: (p0) => p0.${col.nameInDart},
|
||||
getReferencedColumn: (p0) => p0.${referencedCol.nameInDart},
|
||||
getReferencedQueryComposer: (data) =>
|
||||
|
@ -61,7 +61,7 @@ ComposableFilter ${col.nameInDart}OrderBy(
|
|||
ComposableOrdering ${col.nameInDart}OrderBy(
|
||||
ComposableOrdering Function(${referencedEntityInfoName}OrderingComposer) f) {
|
||||
return referenced(
|
||||
referencedTable: state.db.${referencedTableGetter},
|
||||
referencedTable: state.db.$referencedTableGetter,
|
||||
getCurrentColumn: (p0) => p0.${col.nameInDart},
|
||||
getReferencedColumn: (p0) => p0.${referencedCol.nameInDart},
|
||||
getReferencedQueryComposer: (data) =>
|
||||
|
@ -78,26 +78,26 @@ ComposableOrdering ${col.nameInDart}OrderBy(
|
|||
|
||||
leaf.write("""
|
||||
|
||||
class ${table.entityInfoName}FilterComposer extends FilterComposer<$dbClassName, ${table.entityInfoName}> {
|
||||
class ${table.entityInfoName}FilterComposer extends FilterComposer<$_dbClassName, ${table.entityInfoName}> {
|
||||
${table.entityInfoName}FilterComposer.empty(super.db, super.table) : super.empty();
|
||||
${table.entityInfoName}FilterComposer.withAliasedTable(super.data) : super.withAliasedTable();
|
||||
|
||||
$filters
|
||||
}
|
||||
|
||||
class ${table.entityInfoName}OrderingComposer extends OrderingComposer<$dbClassName, ${table.entityInfoName}> {
|
||||
class ${table.entityInfoName}OrderingComposer extends OrderingComposer<$_dbClassName, ${table.entityInfoName}> {
|
||||
${table.entityInfoName}OrderingComposer.empty(super.db, super.table) : super.empty();
|
||||
${table.entityInfoName}OrderingComposer.withAliasedTable(super.data) : super.withAliasedTable();
|
||||
|
||||
$orderings
|
||||
}
|
||||
|
||||
class ${table.entityInfoName}ProcessedTableManager extends ProcessedTableManager<$dbClassName,
|
||||
class ${table.entityInfoName}ProcessedTableManager extends ProcessedTableManager<$_dbClassName,
|
||||
${table.entityInfoName}, ${table.nameOfRowClass}, ${table.entityInfoName}FilterComposer, ${table.entityInfoName}OrderingComposer> {
|
||||
${table.entityInfoName}ProcessedTableManager(super.data);
|
||||
}
|
||||
|
||||
class ${table.entityInfoName}ProcessedTableManagerWithFiltering extends ProcessedTableManager<$dbClassName,
|
||||
class ${table.entityInfoName}ProcessedTableManagerWithFiltering extends ProcessedTableManager<$_dbClassName,
|
||||
${table.entityInfoName}, ${table.nameOfRowClass}, ${table.entityInfoName}FilterComposer, ${table.entityInfoName}OrderingComposer> {
|
||||
${table.entityInfoName}ProcessedTableManagerWithFiltering(super.data);
|
||||
|
||||
|
@ -110,7 +110,7 @@ class ${table.entityInfoName}ProcessedTableManagerWithFiltering extends Processe
|
|||
}
|
||||
}
|
||||
|
||||
class ${table.entityInfoName}ProcessedTableManagerWithOrdering extends ProcessedTableManager<$dbClassName,
|
||||
class ${table.entityInfoName}ProcessedTableManagerWithOrdering extends ProcessedTableManager<$_dbClassName,
|
||||
${table.entityInfoName}, ${table.nameOfRowClass}, ${table.entityInfoName}FilterComposer, ${table.entityInfoName}OrderingComposer> {
|
||||
${table.entityInfoName}ProcessedTableManagerWithOrdering(super.data);
|
||||
|
||||
|
@ -123,8 +123,9 @@ class ${table.entityInfoName}ProcessedTableManagerWithOrdering extends Processed
|
|||
}
|
||||
}
|
||||
|
||||
class ${table.entityInfoName}TableManager extends ${table.entityInfoName}ProcessedTableManager {
|
||||
${table.entityInfoName}TableManager($dbClassName db, ${table.entityInfoName} table)
|
||||
class ${table.entityInfoName}TableManager extends RootTableManager<$_dbClassName,
|
||||
${table.entityInfoName}, ${table.nameOfRowClass}, ${table.entityInfoName}FilterComposer, ${table.entityInfoName}OrderingComposer> {
|
||||
${table.entityInfoName}TableManager($_dbClassName db, ${table.entityInfoName} table)
|
||||
: super(TableManagerState(
|
||||
db: db,
|
||||
table: table,
|
||||
|
@ -147,6 +148,37 @@ class ${table.entityInfoName}TableManager extends ${table.entityInfoName}Process
|
|||
joinBuilders: state.joinBuilders.union(ordering.joinBuilders)));
|
||||
}
|
||||
}
|
||||
""");
|
||||
}
|
||||
|
||||
String get managerGetter {
|
||||
return '''${_dbClassName}Manager managers => ${_dbClassName}Manager(this);''';
|
||||
}
|
||||
|
||||
void addTable(DriftTable table) {
|
||||
_addedTables.add(table);
|
||||
}
|
||||
|
||||
void write() {
|
||||
for (var table in _addedTables) {
|
||||
_writeTableManagers(table);
|
||||
}
|
||||
final leaf = _scope.leaf();
|
||||
final tableManagerGetters = StringBuffer();
|
||||
|
||||
for (var table in _addedTables) {
|
||||
tableManagerGetters.writeln(
|
||||
"${table.entityInfoName}TableManager get ${table.dbGetterName} => ${table.entityInfoName}TableManager(_db, _db.${table.dbGetterName});");
|
||||
}
|
||||
|
||||
leaf.write("""
|
||||
class ${_dbClassName}Manager {
|
||||
final $_dbClassName _db;
|
||||
|
||||
${_dbClassName}Manager(this._db);
|
||||
|
||||
$tableManagerGetters
|
||||
}
|
||||
""");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue