# REST API-elemek lekérdezése adattípusok és műveletek szerint

> CCT-végpont elemeinek szűrése a REST API lekérdezés _filters kulcsával: egész, tört, szöveg, jelölőnégyzet, dátum és időbélyeg.

Ez a fejezet azt írja le, hogyan kérdezheted le egy másik oldal egyéni tartalomtípus (CCT) végpontjának elemeit különböző mezőtípusok szerint a **REST API lekérdezés** típussal. Feltétel: JetEngine egy létrehozott CCT-végponttal.

## Adattípusok és műveletek

A feltételekben az adattípust és a műveletet is meg kell adnod, hogy az érték szükség esetén átalakuljon, és az adatbázis-lekérdezésben a megadott típusúra legyen kényszerítve.

Átalakítás nélküli típusok:

- `integer`: egész szám;
- `float`: tizedesjegyes szám;
- `char`: szöveg.

Átalakítással:

- `timestamp`: a Unix-korszaktól (1970. január 1., UTC) eltelt másodpercek. A beírt értéket UNIX-időbélyegre alakítja, például a „13.07.2023” értékből 1689199200 lesz; a „today” a mai nap időbélyege.
- `date`: MySQL DATETIME formátumú dátum; a „13.07.2023” értékből „13.07.2023 00:00:00” lesz.

Műveletek: Equal, Not equal, Greater than, Greater or equal, Less than, Equal or less, Like, Not like, In, Not in, Between, Not between.

## Előkészítés

1. A **JetEngine → REST API-végpontok** fülön vedd fel a másik oldal CCT-elemeket adó végpontját.
2. A **JetEngine → Lekérdezéskészítő → Új hozzáadása** oldalon a típus legyen **REST API lekérdezés**, és a **From Endpoint** listában válaszd ki a végpontot.
3. Kapcsold be az **Eredmények előnézete** kapcsolót, hogy az eredmény azonnal látsszon jobbra.
4. Vegyél fel egy új elemet a lekérdezésben, és a **Key** legyen `_filters`. A CCT végpontja ezt a paramétert használja az elemek szűrésére.

A **Value** mezőbe JSON kerül, feltételek listája: `field` (mező), `operator` (művelet), `value` (érték), `type` (típus).

## Példák

### Egész szám

```json
[{"field":"f2","operator":"=","value":"12","type":"INTEGER"}]
```

Az `f2` mezőben 12-t tartalmazó elemeket adja vissza.

### Tört szám

```json
[{"field":"num2","operator":">","value":"67.50","type":"FLOATING"}]
```

A 67,50-nél nagyobb értékű elemeket adja vissza.

### Szöveg

```json
[{"field":"cct_status","operator":"=","value":"publish","type":"CHAR"}]
```

A „publish” állapotú elemeket adja vissza.

### Jelölőnégyzet (checkbox) mező

A jelölőnégyzet az adatbázisban sorosított tömbként tárolódik, ezért a típus `CHAR`. A példamező (`check1`) két opciója: „one” és „two”.

Legalább a „one” legyen bejelölve (a másik is lehet):

```json
[{"field":"check1","operator":"LIKE","value":"one","type":"CHAR"}]
```

Csak a „one” legyen bejelölve:

```json
[{"field":"check1","operator":"REGEXP","value":"a:1:.*one","type":"CHAR"}]
```

Mindkét opció legyen bejelölve (ÉS kapcsolat):

```json
[{"field":"check1","operator":"LIKE","value":"one","type":"CHAR"},
{"field":"check1","operator":"LIKE","value":"two","type":"CHAR"}]
```

Legalább az egyik teljesüljön (VAGY kapcsolat, több mezőre is):

```json
[
{ "relation":"OR",
"0":{"field":"f2","operator":"=","value":"12","type":"CHAR"},
"1":{"field":"f1","operator":"=","value":"1","type":"CHAR"}
}
]
```

VAGY és ÉS együtt: vagy a „one” legyen bejelölve, vagy mindkettő:

```json
[
  {
    "relation":"OR",
    "0" : {
            "relation" : "AND",
            "0" : {"field" : "check1", "operator" : "LIKE", "value" : "one", "type" : "CHAR"},
            "1" : {"field" : "check1", "operator" : "LIKE", "value" : "two", "type" : "CHAR"}
           },
    "1" : {"field" : "check1", "operator" : "LIKE", "value" : "one", "type" : "CHAR"}
  }
]
```

### Dátum

A `cct_created` mező dátumformátumban tárolja a létrehozás idejét:

```json
[{"field":"cct_created","operator":"BETWEEN","value":"2023-01-01,2023-04-22","type":"DATE"}]
```

A két dátum közötti elemeket adja vissza.

### Időbélyeg

Ha a mező (például `date1`) időbélyegként tárolja a dátumot, a `TIMESTAMP` típust használd. A mai napon vagy később lévő elemekhez:

```json
[{"field":"date1","operator":">=","value":"today","type":"TIMESTAMP"}]
```

A „today” helyett más relatív dátum- és időkifejezést is használhatsz (például „+1 week”, „tomorrow”), a PHP relatív dátumformátumai szerint.
