Azure / Azure/data-api-builder

[Enhancement]: Predicate operators in REST for GraphQL parity

Ouverte
#2,823 1 commentaire 1 réaction 0 personnes assignées Voir sur GitHub
2.x azure-host ⛅ rest
Langage dominant
C#
Étoiles
1.5k
Forks
370
Merge moyen
3 j 22 h
PR mergées (30 j)
9

Description

## Graphql currently supports:

- `in`: checks if a column's value exists in a specified set of values.
- `contains`: finds a fragment anywhere in a string
- `notContains`: excludes strings containing a fragment
- `startsWith`: matches the beginning of a string
- `endsWith`: matches the end of a string

https://github.com/Azure/data-api-builder/blob/main/src/Core/Models/GraphQLFilterParsers.cs#L655-L701

## What?

Bring REST in parity with GraphQL.

## Why?

REST is our most popular endpoint type.

## How?

Here are the SQL `WHERE` clause equivalents for each `$filter` expression:

### `$filter=Category in ('Books', 'Movies', 'Games')`

```sql
WHERE Category IN ('Books', 'Movies', 'Games')
```

### `$filter=contains(Name, 'son')`

```sql
WHERE Name LIKE '%son%'
```

### `$filter=not contains(Description,'beta')`

or

### `$filter=not(contains(Description, 'beta'))`

```sql
WHERE Description NOT LIKE '%beta%'
```

### `$filter=startsWith(Name, 'Al')`

```sql
WHERE Name LIKE 'Al%'
```

### `$filter=endsWith(Name, 'son')`

```sql
WHERE Name LIKE '%son'
```

### `$filter=contains(Name, 'son') and Category in ('Books', 'Movies')`

```sql
WHERE Name LIKE '%son%' AND Category IN ('Books', 'Movies')
```

## Support

GraphQL only supports these for SQL, we can start there with REST.

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par src/Core/Models/GraphQLFilterParsers.cs aux lignes 655-701 pour comprendre le comportement existant des opérateurs, puis suivez le parcours jusqu’à l’endroit où les expressions REST $filter sont analysées. Le travail est considéré comme terminé lorsque les filtres REST adossés à SQL prennent en charge in, contains, not contains, startsWith et endsWith, y compris les combinaisons présentées ; vérifiez les exemples documentés par rapport aux réponses REST.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
csharp, graphql, sql
Domaine
api, backend
Type d'issue
Fonctionnalité
Difficulté
4/5
Temps estimé
3-5 jours
Activité
Active
Clarté
Plutôt claire
Accessibilité débutants
58/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.