Refactor Generation

This commit is contained in:
Moshe Dicker 2024-04-01 01:42:21 -04:00
parent 76fea2ac28
commit c7f310e46f
2 changed files with 52 additions and 68 deletions

View File

@ -272,7 +272,7 @@ class ProcessedTableManager<
extends BaseTableManager<DB, T, D, FS, OS>
with ProcessedTableManagerMixin<DB, T, D, FS, OS> {
/// A table manager that only has functions to return items based on the state build by parent managers
ProcessedTableManager(super.state);
const ProcessedTableManager(super.state);
}
/// A table manager that has methods to filter the query

View File

@ -22,7 +22,7 @@ class Names {
orderingComposer = '${name}OrderingComposer',
processedTableManager = '${name}ProcessedTableManager',
tableManagerWithFiltering = '${name}TableManagerWithFiltering',
tableManagerWithOrdering = '${name}ProcessedTableManagerWithOrdering',
tableManagerWithOrdering = '${name}TableManagerWithOrdering',
rootTableManager = '${name}TableManager';
}
@ -33,6 +33,54 @@ class ManagerWriter {
ManagerWriter(this._scope, this._dbClassName) : _addedTables = [];
void writeManagers(TextEmitter leaf, DriftTable table) {
final names = Names(table.entityInfoName);
// Write the ProcessedTableManager
leaf
..write('class ${names.processedTableManager} extends ')
..writeDriftRef('ProcessedTableManager')
..writeln(
'<$_dbClassName,${table.entityInfoName},${table.nameOfRowClass},${names.filterComposer},${names.orderingComposer}> {')
..writeln('const ${names.processedTableManager}(super.state);')
..writeln('}');
// Write the TableManagerWithFiltering
leaf
..write('class ${names.tableManagerWithFiltering} extends ')
..writeDriftRef('TableManagerWithFiltering')
..writeln(
'<$_dbClassName,${table.entityInfoName},${table.nameOfRowClass},${names.filterComposer},${names.orderingComposer},${names.processedTableManager}> {')
..writeln(
'const ${names.tableManagerWithFiltering}(super.state,{required super.getChildManager});')
..writeln('}');
// Write the TableManagerWithOrdering
leaf
..write('class ${names.tableManagerWithOrdering} extends ')
..writeDriftRef('TableManagerWithOrdering')
..writeln(
'<$_dbClassName,${table.entityInfoName},${table.nameOfRowClass},${names.filterComposer},${names.orderingComposer},${names.processedTableManager}> {')
..writeln(
'const ${names.tableManagerWithOrdering}(super.state,{required super.getChildManager});')
..writeln('}');
// Write the Root Table Manager
leaf
..write('class ${names.rootTableManager} extends ')
..writeDriftRef('RootTableManager')
..writeln(
'<$_dbClassName,${table.entityInfoName},${table.nameOfRowClass},${names.filterComposer},${names.orderingComposer},${names.processedTableManager},${names.tableManagerWithFiltering},${names.tableManagerWithOrdering}> {')
..writeln(
'${names.rootTableManager}($_dbClassName db, ${table.entityInfoName} table)')
..writeln(": super(")
..writeDriftRef("TableManagerState")
..write(
"""(db: db, table: table, filteringComposer:${names.filterComposer}(db, table),orderingComposer:${names.orderingComposer}(db, table)),
getChildManagerWithFiltering: (f) => ${names.tableManagerWithFiltering}(f,getChildManager: (f) => ${names.processedTableManager}(f)),
getChildManagerWithOrdering: (f) => ${names.tableManagerWithOrdering}(f,getChildManager: (f) =>${names.processedTableManager}(f)));""")
..writeln('}');
}
void _writeTableManagers(DriftTable table, List<DriftTable> otherTables) {
final leaf = _scope.leaf();
@ -157,72 +205,8 @@ class ${names.orderingComposer}
$orderings
}
class ${names.processedTableManager} extends ProcessedTableManager<
$_dbClassName,
${table.entityInfoName},
${table.nameOfRowClass},
${names.filterComposer},
${names.orderingComposer}> {
${names.processedTableManager}(super.data);
}
class ${names.tableManagerWithFiltering}
extends TableManagerWithFiltering<
$_dbClassName,
${table.entityInfoName},
${table.nameOfRowClass},
${names.filterComposer},
${names.orderingComposer},
${names.processedTableManager}> {
${names.tableManagerWithFiltering}(super.state,
{required super.getChildManager});
}
class ${names.tableManagerWithOrdering}
extends TableManagerWithOrdering<
$_dbClassName,
${table.entityInfoName},
${table.nameOfRowClass},
${names.filterComposer},
${names.orderingComposer},
${names.processedTableManager}> {
${names.tableManagerWithOrdering}(super.state,
{required super.getChildManager});
}
class ${names.rootTableManager} extends RootTableManager<
$_dbClassName,
${table.entityInfoName},
${table.nameOfRowClass},
${names.filterComposer},
${names.orderingComposer},
${names.processedTableManager},
${names.tableManagerWithFiltering},
${names.tableManagerWithOrdering}> {
${names.rootTableManager}($_dbClassName db, ${table.entityInfoName} table)
: super(
TableManagerState(
db: db,
table: table,
filteringComposer:
${names.filterComposer}(db, table),
orderingComposer:
${names.orderingComposer}(db, table)),
getChildManagerWithFiltering: (f) =>
${names.tableManagerWithFiltering}(
f,
getChildManager: (f) =>
${names.processedTableManager}(f),
),
getChildManagerWithOrdering: (f) =>
${names.tableManagerWithOrdering}(f,
getChildManager: (f) =>
${names.processedTableManager}(f)));
}
""");
}""");
writeManagers(leaf, table);
}
String get managerGetter {