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