public makeFilterStatementForOneHop()

in src/parsers/odata-parser.ts [95:112]


    public makeFilterStatementForOneHop(): string {
        const filterStatement = this.makeFilterStatement(this.query.sourceClauses);
        let linksQueryAdditionalClause: string = null;
        if (this.query.filterOptions !== LinkQueryMode.LinksOneHopMayContain) {
            // if not 'may contain', filter the base query down to only the work items in the target/link clause.
            const additionalFilterStatements = [
                this.makeFilterStatementSimple(this.query.targetClauses, 'l/TargetWorkItem'),
                this.makeFilterStatementSimple(this.query.linkClauses, 'l'),
            ].filter((column) => column != null).join(' and ');

            linksQueryAdditionalClause = additionalFilterStatements.length === 0 ? null :
                `${this.query.filterOptions === LinkQueryMode.LinksOneHopDoesNotContain ? 'not ' : ''}Links/any(l: ${additionalFilterStatements})`;
        }

        return filterStatement != null ?
            `${filterStatement}${linksQueryAdditionalClause != null ? ` and ${linksQueryAdditionalClause}` : ``}` :
            linksQueryAdditionalClause != null ? `$filter=${linksQueryAdditionalClause}` : null;
    }