mirror of https://github.com/AMT-Cheif/drift.git
Fix generation in drift package
This commit is contained in:
parent
3f74d65e69
commit
5b7e011021
|
@ -1678,7 +1678,8 @@ abstract class _$CustomTablesDb extends GeneratedDatabase {
|
|||
],
|
||||
readsFrom: {
|
||||
config,
|
||||
}).asyncMap((QueryRow row) => config.mapFromRowWithAlias(row, const {
|
||||
}).asyncMap(
|
||||
(QueryRow row) async => config.mapFromRowWithAlias(row, const {
|
||||
'ck': 'config_key',
|
||||
'cf': 'config_value',
|
||||
'cs1': 'sync_state',
|
||||
|
@ -1754,26 +1755,20 @@ abstract class _$CustomTablesDb extends GeneratedDatabase {
|
|||
variables: [],
|
||||
readsFrom: {
|
||||
config,
|
||||
}).map((QueryRow row) {
|
||||
return JsonResult(
|
||||
row: row,
|
||||
}).map((QueryRow row) => JsonResult(
|
||||
raw: row,
|
||||
key: row.read<String>('key'),
|
||||
value: row.readNullable<String>('value'),
|
||||
);
|
||||
});
|
||||
));
|
||||
}
|
||||
|
||||
Selectable<JsonResult> another() {
|
||||
return customSelect(
|
||||
'SELECT \'one\' AS "key", NULLIF(\'two\', \'another\') AS value',
|
||||
variables: [],
|
||||
readsFrom: {}).map((QueryRow row) {
|
||||
return JsonResult(
|
||||
row: row,
|
||||
return customSelect('SELECT \'one\' AS "key", NULLIF(\'two\', \'another\') AS value', variables: [], readsFrom: {})
|
||||
.map((QueryRow row) => JsonResult(
|
||||
raw: row,
|
||||
key: row.read<String>('key'),
|
||||
value: row.readNullable<String>('value'),
|
||||
);
|
||||
});
|
||||
));
|
||||
}
|
||||
|
||||
Selectable<MultipleResult> multiple({required Multiple$predicate predicate}) {
|
||||
|
@ -1793,14 +1788,12 @@ abstract class _$CustomTablesDb extends GeneratedDatabase {
|
|||
withDefaults,
|
||||
withConstraints,
|
||||
...generatedpredicate.watchedTables,
|
||||
}).asyncMap((QueryRow row) async {
|
||||
return MultipleResult(
|
||||
row: row,
|
||||
}).asyncMap((QueryRow row) async => MultipleResult(
|
||||
raw: row,
|
||||
a: row.readNullable<String>('a'),
|
||||
b: row.readNullable<int>('b'),
|
||||
c: await withConstraints.mapFromRowOrNull(row, tablePrefix: 'nested_0'),
|
||||
);
|
||||
});
|
||||
c: withConstraints.mapFromRow(row),
|
||||
));
|
||||
}
|
||||
|
||||
Selectable<EMail> searchEmails({required String? term}) {
|
||||
|
@ -1827,9 +1820,8 @@ abstract class _$CustomTablesDb extends GeneratedDatabase {
|
|||
readsFrom: {
|
||||
config,
|
||||
...generatedexpr.watchedTables,
|
||||
}).map((QueryRow row) {
|
||||
return ReadRowIdResult(
|
||||
row: row,
|
||||
}).map((QueryRow row) => ReadRowIdResult(
|
||||
raw: row,
|
||||
rowid: row.read<int>('rowid'),
|
||||
configKey: row.read<String>('config_key'),
|
||||
configValue: row.readNullable<DriftAny>('config_value'),
|
||||
|
@ -1839,8 +1831,7 @@ abstract class _$CustomTablesDb extends GeneratedDatabase {
|
|||
syncStateImplicit: NullAwareTypeConverter.wrapFromSql(
|
||||
ConfigTable.$convertersyncStateImplicit,
|
||||
row.readNullable<int>('sync_state_implicit')),
|
||||
);
|
||||
});
|
||||
));
|
||||
}
|
||||
|
||||
Selectable<MyViewData> readView({ReadView$where? where}) {
|
||||
|
@ -1895,11 +1886,10 @@ abstract class _$CustomTablesDb extends GeneratedDatabase {
|
|||
readsFrom: {
|
||||
withConstraints,
|
||||
withDefaults,
|
||||
}).asyncMap((QueryRow row) async {
|
||||
return NestedResult(
|
||||
row: row,
|
||||
defaults: await withDefaults.mapFromRow(row, tablePrefix: 'nested_0'),
|
||||
nestedQuery0: await customSelect(
|
||||
}).asyncMap((QueryRow row) async => NestedResult(
|
||||
raw: row,
|
||||
defaults: withDefaults.mapFromRow(row),
|
||||
nestedQuery1: await customSelect(
|
||||
'SELECT * FROM with_constraints AS c WHERE c.b = ?1',
|
||||
variables: [
|
||||
Variable<int>(row.read('\$n_0'))
|
||||
|
@ -1907,9 +1897,8 @@ abstract class _$CustomTablesDb extends GeneratedDatabase {
|
|||
readsFrom: {
|
||||
withConstraints,
|
||||
withDefaults,
|
||||
}).asyncMap(withConstraints.mapFromRow).get(),
|
||||
);
|
||||
});
|
||||
}).map((QueryRow row) => withConstraints.mapFromRow(row)).get(),
|
||||
));
|
||||
}
|
||||
|
||||
Selectable<MyCustomResultClass> customResult() {
|
||||
|
@ -1925,8 +1914,8 @@ abstract class _$CustomTablesDb extends GeneratedDatabase {
|
|||
syncState: NullAwareTypeConverter.wrapFromSql(
|
||||
ConfigTable.$convertersyncState,
|
||||
row.readNullable<int>('sync_state')),
|
||||
config: await config.mapFromRow(row, tablePrefix: 'nested_0'),
|
||||
noIds: await noIds.mapFromRow(row, tablePrefix: 'nested_1'),
|
||||
config: config.mapFromRow(row, tablePrefix: 'nested_0'),
|
||||
noIds: noIds.mapFromRow(row, tablePrefix: 'nested_1'),
|
||||
nested: await customSelect('SELECT * FROM no_ids',
|
||||
variables: [],
|
||||
readsFrom: {
|
||||
|
@ -2081,25 +2070,25 @@ typedef ReadView$where = Expression<bool> Function(MyView my_view);
|
|||
|
||||
class NestedResult extends CustomResultSet {
|
||||
final WithDefault defaults;
|
||||
final List<WithConstraint> nestedQuery0;
|
||||
final List<WithConstraint> nestedQuery1;
|
||||
NestedResult({
|
||||
required QueryRow row,
|
||||
required this.defaults,
|
||||
required this.nestedQuery0,
|
||||
required this.nestedQuery1,
|
||||
}) : super(row);
|
||||
@override
|
||||
int get hashCode => Object.hash(defaults, nestedQuery0);
|
||||
int get hashCode => Object.hash(defaults, nestedQuery1);
|
||||
@override
|
||||
bool operator ==(Object other) =>
|
||||
identical(this, other) ||
|
||||
(other is NestedResult &&
|
||||
other.defaults == this.defaults &&
|
||||
other.nestedQuery0 == this.nestedQuery0);
|
||||
other.nestedQuery1 == this.nestedQuery1);
|
||||
@override
|
||||
String toString() {
|
||||
return (StringBuffer('NestedResult(')
|
||||
..write('defaults: $defaults, ')
|
||||
..write('nestedQuery0: $nestedQuery0')
|
||||
..write('nestedQuery1: $nestedQuery1')
|
||||
..write(')'))
|
||||
.toString();
|
||||
}
|
||||
|
|
|
@ -1714,9 +1714,8 @@ abstract class _$TodoDb extends GeneratedDatabase {
|
|||
readsFrom: {
|
||||
categories,
|
||||
todosTable,
|
||||
}).map((QueryRow row) {
|
||||
return AllTodosWithCategoryResult(
|
||||
row: row,
|
||||
}).map((QueryRow row) => AllTodosWithCategoryResult(
|
||||
raw: row,
|
||||
id: row.read<int>('id'),
|
||||
title: row.readNullable<String>('title'),
|
||||
content: row.read<String>('content'),
|
||||
|
@ -1727,8 +1726,7 @@ abstract class _$TodoDb extends GeneratedDatabase {
|
|||
row.readNullable<String>('status')),
|
||||
catId: row.read<int>('catId'),
|
||||
catDesc: row.read<String>('catDesc'),
|
||||
);
|
||||
});
|
||||
));
|
||||
}
|
||||
|
||||
Future<int> deleteTodoById(int var1) {
|
||||
|
|
|
@ -136,7 +136,7 @@ void main() {
|
|||
contains(
|
||||
isA<NestedResult>()
|
||||
.having((e) => e.defaults, 'defaults', first)
|
||||
.having((e) => e.nestedQuery0, 'nested', hasLength(2)),
|
||||
.having((e) => e.nestedQuery1, 'nested', hasLength(2)),
|
||||
),
|
||||
);
|
||||
|
||||
|
@ -145,7 +145,7 @@ void main() {
|
|||
contains(
|
||||
isA<NestedResult>()
|
||||
.having((e) => e.defaults, 'defaults', second)
|
||||
.having((e) => e.nestedQuery0, 'nested', hasLength(1)),
|
||||
.having((e) => e.nestedQuery1, 'nested', hasLength(1)),
|
||||
),
|
||||
);
|
||||
});
|
||||
|
|
|
@ -30,6 +30,6 @@ void main() {
|
|||
|
||||
final result = results.single;
|
||||
expect(result.defaults, defaults);
|
||||
expect(result.nestedQuery0, [constraints]);
|
||||
expect(result.nestedQuery1, [constraints]);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -171,11 +171,11 @@ class AnnotatedDartCodeBuilder {
|
|||
'This query (${query.name}) does not have a result set');
|
||||
}
|
||||
|
||||
addResultSetRowType(resultSet, resultSet.resultClassName!);
|
||||
addResultSetRowType(resultSet, () => query.resultClassName);
|
||||
}
|
||||
|
||||
void addResultSetRowType(
|
||||
InferredResultSet resultSet, String resultClassName) {
|
||||
InferredResultSet resultSet, String Function() resultClassName) {
|
||||
if (resultSet.existingRowType != null) {
|
||||
return addCode(resultSet.existingRowType!.rowType);
|
||||
}
|
||||
|
@ -188,13 +188,13 @@ class AnnotatedDartCodeBuilder {
|
|||
return addDriftType(resultSet.scalarColumns.single);
|
||||
}
|
||||
|
||||
return addText(resultClassName);
|
||||
return addText(resultClassName());
|
||||
}
|
||||
|
||||
void addTypeOfNestedResult(NestedResult nested) {
|
||||
if (nested is NestedResultTable) {
|
||||
return addResultSetRowType(
|
||||
nested.innerResultSet, nested.nameForGeneratedRowClass);
|
||||
nested.innerResultSet, () => nested.nameForGeneratedRowClass);
|
||||
} else if (nested is NestedResultQuery) {
|
||||
addSymbol('List', AnnotatedDartCode.dartCore);
|
||||
addText('<');
|
||||
|
|
|
@ -172,13 +172,19 @@ abstract class SqlQuery {
|
|||
return false;
|
||||
}
|
||||
|
||||
bool get _useResultClassName {
|
||||
final resultSet = this.resultSet!;
|
||||
|
||||
return resultSet.matchingTable == null && !resultSet.singleColumn;
|
||||
}
|
||||
|
||||
String get resultClassName {
|
||||
final resultSet = this.resultSet;
|
||||
if (resultSet == null) {
|
||||
throw StateError('This query ($name) does not have a result set');
|
||||
}
|
||||
|
||||
if (resultSet.matchingTable != null || resultSet.singleColumn) {
|
||||
if (!_useResultClassName) {
|
||||
throw UnsupportedError('This result set does not introduce a class, '
|
||||
'either because it has a matching table or because it only returns '
|
||||
'one column.');
|
||||
|
@ -216,7 +222,7 @@ abstract class SqlQuery {
|
|||
}
|
||||
|
||||
return resultSet.mappingToRowClass(
|
||||
resultSet.needsOwnClass ? resultClassName : null, options);
|
||||
_useResultClassName ? resultClassName : null, options);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -125,7 +125,7 @@ class QueryWriter {
|
|||
case StructuredFromNestedColumn():
|
||||
final prefix = resultSet.nestedPrefixFor(argument.table);
|
||||
_writeArgumentExpression(
|
||||
argument,
|
||||
argument.nestedType,
|
||||
resultSet,
|
||||
(sqlPrefix: prefix, isNullable: argument.nullable),
|
||||
);
|
||||
|
@ -251,8 +251,6 @@ class QueryWriter {
|
|||
..write(', ');
|
||||
}
|
||||
|
||||
_emitter.write('}');
|
||||
|
||||
_emitter.write('})');
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue