Add deletedAt to foreignKey indexes (#7133)
We had to remove soft-deletion on default filters due to the missing indexes. We now generate composite indexes with the foreign key containing the deletedAt column as well which should improve performances
This commit is contained in:
+36
-4
@@ -30,16 +30,48 @@ export class GraphqlQueryParser {
|
||||
this.fieldMetadataMap = fieldMetadataMap;
|
||||
}
|
||||
|
||||
parseFilter(
|
||||
recordFilter: RecordFilter,
|
||||
): FindOptionsWhere<ObjectLiteral> | FindOptionsWhere<ObjectLiteral>[] {
|
||||
parseFilter(recordFilter: RecordFilter): {
|
||||
parsedFilters:
|
||||
| FindOptionsWhere<ObjectLiteral>
|
||||
| FindOptionsWhere<ObjectLiteral>[];
|
||||
withDeleted: boolean;
|
||||
} {
|
||||
const graphqlQueryFilterParser = new GraphqlQueryFilterParser(
|
||||
this.fieldMetadataMap,
|
||||
);
|
||||
|
||||
const parsedFilter = graphqlQueryFilterParser.parse(recordFilter);
|
||||
|
||||
return parsedFilter;
|
||||
const hasDeletedAtFilter = this.checkForDeletedAtFilter(parsedFilter);
|
||||
|
||||
return {
|
||||
parsedFilters: parsedFilter,
|
||||
withDeleted: hasDeletedAtFilter,
|
||||
};
|
||||
}
|
||||
|
||||
private checkForDeletedAtFilter(
|
||||
filter: FindOptionsWhere<ObjectLiteral> | FindOptionsWhere<ObjectLiteral>[],
|
||||
): boolean {
|
||||
if (Array.isArray(filter)) {
|
||||
return filter.some(this.checkForDeletedAtFilter);
|
||||
}
|
||||
|
||||
for (const [key, value] of Object.entries(filter)) {
|
||||
if (key === 'deletedAt') {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (typeof value === 'object' && value !== null) {
|
||||
if (
|
||||
this.checkForDeletedAtFilter(value as FindOptionsWhere<ObjectLiteral>)
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
parseOrder(
|
||||
|
||||
Reference in New Issue
Block a user