This commit is contained in:
Moshe Dicker 2024-04-03 15:18:37 -04:00
parent 6325a58b56
commit 1dc9282967
2 changed files with 20 additions and 17 deletions

View File

@ -244,8 +244,8 @@ class TableManagerState<
targetColumns: [count], targetColumns: [count],
addJoins: true, addJoins: true,
applyFilters: true, applyFilters: true,
applyOrdering: false, applyOrdering: true,
applyLimit: false) as _JoinedResult; applyLimit: true) as _JoinedResult;
return result.statement.map((row) => row.read(count)!).getSingle(); return result.statement.map((row) => row.read(count)!).getSingle();
} }
@ -264,8 +264,8 @@ class TableManagerState<
targetColumns: [col], targetColumns: [col],
addJoins: true, addJoins: true,
applyFilters: true, applyFilters: true,
applyOrdering: false, applyOrdering: true,
applyLimit: false) as _JoinedResult<T, DT>; applyLimit: true) as _JoinedResult<T, DT>;
deleteStatement.where((tbl) => col.isInQuery(subquery.statement)); deleteStatement.where((tbl) => col.isInQuery(subquery.statement));
} }
} }
@ -339,8 +339,9 @@ abstract class BaseTableManager<
/// ///
/// See also: [RootTableManager.replace], which does not require [filter] statements and /// See also: [RootTableManager.replace], which does not require [filter] statements and
/// supports setting fields back to null. /// supports setting fields back to null.
Future<int> write(DT Function(CU o) f) => Future<int> write(DT Function(CU o) f) => $state
$state.buildUpdateStatement().write(f($state._getUpdateCompanionBuilder)); .buildUpdateStatement()
.write(f($state._getUpdateCompanionBuilder) as Insertable<DT>);
} }
/// A table manager that can be used to select rows from a table /// A table manager that can be used to select rows from a table
@ -455,7 +456,7 @@ abstract class RootTableManager<
Future<int> create(D Function(CI o) f, Future<int> create(D Function(CI o) f,
{InsertMode? mode, UpsertClause<T, D>? onConflict}) { {InsertMode? mode, UpsertClause<T, D>? onConflict}) {
return $state.db.into($state._tableAsTableInfo).insert( return $state.db.into($state._tableAsTableInfo).insert(
f($state._getInsertCompanionBuilder), f($state._getInsertCompanionBuilder) as Insertable<D>,
mode: mode, mode: mode,
onConflict: onConflict); onConflict: onConflict);
} }
@ -471,7 +472,7 @@ abstract class RootTableManager<
Future<D> createReturning(D Function(CI o) f, Future<D> createReturning(D Function(CI o) f,
{InsertMode? mode, UpsertClause<T, D>? onConflict}) { {InsertMode? mode, UpsertClause<T, D>? onConflict}) {
return $state.db.into($state._tableAsTableInfo).insertReturning( return $state.db.into($state._tableAsTableInfo).insertReturning(
f($state._getInsertCompanionBuilder), f($state._getInsertCompanionBuilder) as Insertable<D>,
mode: mode, mode: mode,
onConflict: onConflict); onConflict: onConflict);
} }
@ -484,7 +485,7 @@ abstract class RootTableManager<
Future<D?> createReturningOrNull(D Function(CI o) f, Future<D?> createReturningOrNull(D Function(CI o) f,
{InsertMode? mode, UpsertClause<T, D>? onConflict}) { {InsertMode? mode, UpsertClause<T, D>? onConflict}) {
return $state.db.into($state._tableAsTableInfo).insertReturningOrNull( return $state.db.into($state._tableAsTableInfo).insertReturningOrNull(
f($state._getInsertCompanionBuilder), f($state._getInsertCompanionBuilder) as Insertable<D>,
mode: mode, mode: mode,
onConflict: onConflict); onConflict: onConflict);
} }
@ -503,8 +504,8 @@ abstract class RootTableManager<
/// support it. For details and examples, see [InsertStatement.insert]. /// support it. For details and examples, see [InsertStatement.insert].
Future<void> bulkCreate(Iterable<D> Function(CI o) f, Future<void> bulkCreate(Iterable<D> Function(CI o) f,
{InsertMode? mode, UpsertClause<T, D>? onConflict}) { {InsertMode? mode, UpsertClause<T, D>? onConflict}) {
return $state.db.batch((b) => b.insertAll( return $state.db.batch((b) => b.insertAll($state._tableAsTableInfo,
$state._tableAsTableInfo, f($state._getInsertCompanionBuilder), f($state._getInsertCompanionBuilder) as Iterable<Insertable<D>>,
mode: mode, onConflict: onConflict)); mode: mode, onConflict: onConflict));
} }
@ -521,6 +522,8 @@ abstract class RootTableManager<
/// ///
/// Returns true if a row was affected by this operation. /// Returns true if a row was affected by this operation.
Future<bool> replace(D entity) { Future<bool> replace(D entity) {
return $state.db.update($state._tableAsTableInfo).replace(entity); return $state.db
.update($state._tableAsTableInfo)
.replace(entity as Insertable<D>);
} }
} }

View File

@ -68,7 +68,7 @@ class _FilterWithConverterWriter extends _FilterWriter {
} }
} }
class _ReferencedFilter extends _FilterWriter { class _ReferencedFilterWriter extends _FilterWriter {
/// The full function used to get the referenced table /// The full function used to get the referenced table
/// ///
/// E.G `\$state.db.resultSet<$CategoryTable>('categories')` /// E.G `\$state.db.resultSet<$CategoryTable>('categories')`
@ -86,7 +86,7 @@ class _ReferencedFilter extends _FilterWriter {
final String referencedFilterComposer; final String referencedFilterComposer;
/// A class used for building filters for referenced tables /// A class used for building filters for referenced tables
_ReferencedFilter( _ReferencedFilterWriter(
super.filterName, { super.filterName, {
required this.referencedTableField, required this.referencedTableField,
required this.referencedColumnGetter, required this.referencedColumnGetter,
@ -280,7 +280,7 @@ class _TableWriter {
final List<_ColumnWriter> columns; final List<_ColumnWriter> columns;
/// Filters for back references /// Filters for back references
final List<_ReferencedFilter> backRefFilters; final List<_ReferencedFilterWriter> backRefFilters;
_TableWriter(this.table, this.scope, this.dbScope, this.databaseGenericName) _TableWriter(this.table, this.scope, this.dbScope, this.databaseGenericName)
: backRefFilters = [], : backRefFilters = [],
@ -490,7 +490,7 @@ class _TableWriter {
? "\$state.db.resultSet<${referencedTableNames.tableClassName}>('${referencedTable.schemaName}')" ? "\$state.db.resultSet<${referencedTableNames.tableClassName}>('${referencedTable.schemaName}')"
: "\$state.db.${referencedTable.dbGetterName}"; : "\$state.db.${referencedTable.dbGetterName}";
c.filters.add(_ReferencedFilter(c.fieldGetter, c.filters.add(_ReferencedFilterWriter(c.fieldGetter,
fieldGetter: c.fieldGetter, fieldGetter: c.fieldGetter,
referencedColumnGetter: referencedColumnNames.fieldGetter, referencedColumnGetter: referencedColumnNames.fieldGetter,
referencedFilterComposer: referencedTableNames.filterComposer, referencedFilterComposer: referencedTableNames.filterComposer,
@ -521,7 +521,7 @@ class _TableWriter {
final filterName = oc.referenceName ?? final filterName = oc.referenceName ??
"${referencedTableNames.table.dbGetterName}Refs"; "${referencedTableNames.table.dbGetterName}Refs";
backRefFilters.add(_ReferencedFilter(filterName, backRefFilters.add(_ReferencedFilterWriter(filterName,
fieldGetter: reference.$2.nameInDart, fieldGetter: reference.$2.nameInDart,
referencedColumnGetter: referencedColumnNames.fieldGetter, referencedColumnGetter: referencedColumnNames.fieldGetter,
referencedFilterComposer: referencedTableNames.filterComposer, referencedFilterComposer: referencedTableNames.filterComposer,