Odczyt i zapis danych w Open Mercato
Trasy API przyjmują żądania, komendy zmieniają dane biznesowe, a usługi zapytań je odczytują. Znajomość tej ścieżki pomaga dodać walidację, uprawnienia i działania wykonywane po zapisie.
Na tej stronie
Zacznij od trasy API
makeCrudRoute łączy typowe operacje: walidację, zapytania w określonym zakresie, kontrolę dostępu i zapis przez komendy. To konfiguracja oraz zarejestrowane procedury określają, które elementy się wykonają. Sprawdź konkretną trasę przed dodaniem własnego endpointu.
Trasa i komenda określają użyte rozszerzenia. Bezpośredni zapis do bazy nie przechodzi automatycznie przez całą tę ścieżkę.
Kod i dokumentacja
Prześledź jedną zmianę
- Sprawdź dane żądania i prawo użytkownika do zmiany wskazanego rekordu.
- Wykonaj zarejestrowaną komendę oraz skonfigurowane procedury towarzyszące.
- Zapisz zmianę. Przy zapisie przez DataEngine może on obsłużyć zadeklarowane zdarzenia i indeksowanie.
- Odczytaj wynik odpowiednią ścieżką zapytań. Sprawdź, kiedy zmiana pojawia się w indeksach.
Kod i dokumentacja
Odczyt i zapis mają różne zadania
| Ścieżka | Za co odpowiada |
|---|---|
| Odczyt przez QueryEngine / ORM | Wyszukuje i zwraca rekordy. Zapytanie uwzględnia dozwolony zakres oraz pola dostępne dla użytkownika. |
| CommandBus + zarejestrowana komenda | Wykonuje nazwaną operację biznesową. Komenda określa sprawdzenia, zapis oraz opcjonalną historię i cofanie. |
| DataEngine | Koordynuje zapis i skonfigurowane działania dla operacji, które z niego korzystają. Bezpośrednie wywołania ORM mają własną logikę. |
Kod i dokumentacja
Komenda opisuje operację biznesową
Przykładowa operacja closeServiceCase może sprawdzić wymagane pola, zapisać status i zwrócić identyfikator sprawy. Trasa API, import i narzędzie AI mogą wywołać tę samą operację, korzystając ze wspólnych reguł. Każde wywołanie musi nadal przekazać właściwy kontekst uprawnień.
Funkcje komendy pozwalają przygotować stan sprzed zmiany, zbudować wpis historii i zaimplementować cofnięcie. Autor komendy wybiera potrzebne funkcje i pisze ich obsługę. Cofnięcie rekordu w bazie nie wycofa dostarczonego maila ani automatycznie nie anuluje płatności w drugim systemie.
Kod i dokumentacja
Identyfikator tenantu nie sprawdza uprawnień
withScopedPayload uzupełnia tenantId i organizationId, dając pierwszeństwo wartościom z żądania. Sprawdza obecność tych wartości. Trasa lub komenda musi sprawdzić dostęp użytkownika do tenantu, organizacji i rekordu. parseScopedCommandInput odrzuca także obcy tenant u użytkownika bez uprawnień superadministratora; nadal trzeba sprawdzić dostęp do organizacji.
Kod i dokumentacja
Sprawdź dwa przypadki błędów
- Użyj poprawnego identyfikatora rekordu z innej organizacji. Trasa powinna odmówić dostępu.
- Sprawdź wyszukiwanie po zaszyfrowanych polach. Niedeterministycznego szyfrogramu nie wyszukasz po wartości jawnej; użyj obsługiwanego skrótu lub innego identyfikatora.