# Compare

## Endpointy

<table data-full-width="true"><thead><tr><th width="112">Method</th><th width="503">Endpoint</th><th></th></tr></thead><tbody><tr><td><mark style="color:yellow;">POST</mark></td><td>compare</td><td>Uruchom porównywanie</td></tr><tr><td><mark style="color:green;">GET</mark></td><td>compare/config</td><td>Opcje konfiguracyjne dla tworzonych porównań</td></tr><tr><td><mark style="color:green;">GET</mark></td><td>compare/status?page=1&#x26;size=10&#x26;sort=createDate,asc</td><td>Sprawdź statusy porównywań. Obsługuje pełny paging</td></tr><tr><td><mark style="color:green;">GET</mark></td><td>compare/status/<mark style="color:green;">{uuid}</mark></td><td>Sprawdź status porównywania</td></tr><tr><td><mark style="color:green;">GET</mark></td><td>compare/result/<mark style="color:green;">{uuid}</mark>/no_sql?page=1&#x26;size=10&#x26;sort=createDate,asc</td><td>Pobierz wyniki porównywania dla każdej z tabel. Obsługuje pełny paging</td></tr><tr><td><mark style="color:green;">GET</mark></td><td>compare/result/<mark style="color:green;">{uuid}</mark>/no_sql?ids=1,2,3</td><td>Pobierz wyniki porównywania dla wybrancyh z tabel z instrukcjami SQL</td></tr><tr><td><mark style="color:green;">GET</mark></td><td>compare/result/<mark style="color:green;">{uuid}</mark>/with_sql?page=1&#x26;size=10&#x26;sort=createDate,asc</td><td>Pobierz wyniki porównywania dla każdej z tabel z instrukcjami SQL. Obsługuje pełny paging</td></tr><tr><td><mark style="color:green;">GET</mark></td><td>compare/result/<mark style="color:green;">{uuid}</mark>/no_sql/<mark style="color:green;">{tableCompareId}</mark></td><td>Pobierz wyniki porównywania dla wybranej tabeli</td></tr><tr><td><mark style="color:green;">GET</mark></td><td>compare/result/<mark style="color:green;">{uuid}</mark>/with_sql/<mark style="color:green;">{tableCompareId}</mark></td><td>Pobierz wyniki porównywania dla wybranej tabeli z instrukcjami SQL</td></tr><tr><td><mark style="color:green;">GET</mark></td><td>compare/result/<mark style="color:green;">{uuid}</mark>/sql/<mark style="color:green;">{tableCompareId}</mark>/<mark style="color:green;">{queryType}</mark>?page=1&#x26;size=100</td><td>Pobierz instrukcje SQL konkretnego typu (UPDATE,DELETE,INSERT). Obsługuje paging bez sort</td></tr><tr><td><mark style="color:yellow;">POST</mark></td><td>compare/apply/<mark style="color:green;">{uuid}</mark>?ids=1,2,3</td><td>Zastosuj na bazie docelowej wyniki porównania dla wybranych tabel (kolejność tabel zgodna z tą podaną przy uruchomieniu)</td></tr></tbody></table>

<mark style="color:green;">uuid</mark> jest zwracane po poprawnym uruchomieniu porównania, które jest uruchamiane asynchronicznie.&#x20;

Przykłady użycia endpointów można znaleźć w Postmanie (GOLDENORE CDC -> Compare2.0 -> Compare backend)

### &#x20;Przykład i opis body dla <mark style="color:yellow;">POST</mark> /compare:

* `maxErrorsCount` -> maksymalna ilość błędów per tabela, zanim porównanie zostanie przerwane
* `maxDBConnectionsCount` -> maksymalna ilość połączeń do bazy danych (dotyczy źródłowej i docelowej)
* `compareType`  -> patrz [CDC COMPARE 2.0](/goldenore-cdc/moduly-goldenore-cdc/cdc-compare-2.0.md#rodzaje-analizy)
* `recheckKeys` -> flaga sterująca ponownym sprwdzaniem kluczy wykrytych w pierwszej fazie analizy
* `keyRecheckWaitDurationMillis` -> czas oczekiwania między zakończeniem pierwszej fazy, a ponownym sprawdzeniem kluczy
* `source/targetDatabaseConfiguration`-> informacje o źródłowej i docelowej bazie danych, opcje databaseType: `POSTGRES`, `ORACLE`, `SQLSERVER`
* `tablesBindings` -> lista tabel do porównania z informacją o nazwie schema, tabeli oraz kluczu głównym w tabeli źródłowej i docelowej. Do tego per para tabel można ustawić opcje mapowania typów danych.
  * W polu `primaryKeyColumnNames` należy podać klucz główny, lub listę kolumn, które gwarantują unikalność, tak żeby nie było dwóch rzędów z taką samą wartością tych kolumn. W trakcie porównywania tabela jest sortowana po tych kolumnach, więc zalecane jest podawanie kolumn z indeksami (w poprawnej kolejności!). W przeciwnym wypadku porównanie będzie trwało bardzo długo i bardziej obciążało bazę.
  * W polu `includeColumnNames` można podać listę kolumn, których wartości będą porównywane (w podanej kolejności). \
    W polu `excludeColumnNames` można podać listę kolumn, które będą pomijane przy porównywaniu wartości.\
    Tylko jedna z tych opcji może być podana jednocześnie.  Gdy żadna nie jest podana wszystkie kolumny są brane pod uwagę w kolejności alfabetycznej. Podane w nich nazwy dotyczą tylko kolumn poza kluczem głównym, nie wpływają na kolumny podane w  `primaryKeyColumnNames`.&#x20;
  * w polu `dataTypesOptions` można ustawić opcje mapowania typów danych. Jeśli pole nie jest podane to wszystkie opcje są ustawione na false. patrz [Architektura](/goldenore-cdc/moduly-goldenore-cdc/cdc-compare-2.0/architektura.md#mapowanie-typow-danych)

```json
{
    "maxErrorsCount": 1000,
    "maxDBConnectionsCount": 1,
    "compareType": "DETAILED",
    "recheckKeys": true,
    "keyRecheckWaitDurationMillis": 1000,
    "sourceDatabaseConfiguration": {
        "databaseType": "POSTGRES",
        "url": "jdbc:postgresql://localhost:5433/go_source",
        "username": "admin",
        "password": "admin"
    },
    "targetDatabaseConfiguration": {
        "databaseType": "POSTGRES",
        "url": "jdbc:postgresql://localhost:5434/go_target",
        "username": "admin",
        "password": "admin"
    },
    "tablesBindings": [
        {
            "sourceTable": {
                "schema": "test_data",
                "tableName": "dog",
                "primaryKeyColumnNames": ["id"]
                //,"includeColumnNames": ["name","color"]
                //,"excludeColumnNames": ["owner_id"]
            },
            "targetTable": {
                "schema": "test_data_rep",
                "tableName": "rep_dog",
                "primaryKeyColumnNames": ["id"]
                //,"includeColumnNames": ["name","color"]
                //,"excludeColumnNames": ["owner_id"]
            },
            "dataTypesOptions": {
                "mapBooleanTypes": true
                "mapPostgresMoneyTypeToDouble": true,
                "treatOracleDateAsTimestamp": true
            }
        },
        {
            "sourceTable": {
                "schema": "test_data",
                "tableName": "cat",
                "primaryKeyColumnNames": ["name", "color"]
            },
            "targetTable": {
                "schema": "test_data_rep",
                "tableName": "rep_cat",
                "primaryKeyColumnNames": ["name", "color"]
            }
        }
    ]
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://goldenore.gitbook.io/goldenore-cdc/moduly-goldenore-cdc/cdc-compare-2.0/compare.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
