feat(core): Allow filtering workflows by availableInMCP (#18646)

This commit is contained in:
Ricardo Espinoza
2025-09-02 16:21:12 -04:00
committed by GitHub
parent a12e782225
commit 6432555082
5 changed files with 46 additions and 0 deletions

View File

@@ -435,6 +435,30 @@ export class WorkflowRepository extends Repository<WorkflowEntity> {
this.applyTagsFilter(qb, filter);
this.applyProjectFilter(qb, filter);
this.applyParentFolderFilter(qb, filter);
this.applyAvailableInMCPFilter(qb, filter);
}
private applyAvailableInMCPFilter(
qb: SelectQueryBuilder<WorkflowEntity>,
filter: ListQuery.Options['filter'],
): void {
if (typeof filter?.availableInMCP === 'boolean') {
const dbType = this.globalConfig.database.type;
if (['postgresdb'].includes(dbType)) {
qb.andWhere("workflow.settings ->> 'availableInMCP' = :availableInMCP", {
availableInMCP: filter.availableInMCP.toString(),
});
} else if (['mysqldb', 'mariadb'].includes(dbType)) {
qb.andWhere("JSON_EXTRACT(workflow.settings, '$.availableInMCP') = :availableInMCP", {
availableInMCP: filter.availableInMCP,
});
} else if (dbType === 'sqlite') {
qb.andWhere("JSON_EXTRACT(workflow.settings, '$.availableInMCP') = :availableInMCP", {
availableInMCP: filter.availableInMCP ? 1 : 0, // SQLite stores booleans as 0/1
});
}
}
}
private applyNameFilter(