Dla bujnego rozwoju Sealiousa w przyszłości będzie potrzebna możliwosć używania go zarówno na bazach Mongo (jak dotychczas), jak i bazach opartych o SQL.
Kluczowym dla tej przyszłości elementem jest stworzenie modułu, który będzie pozwalał tłumaczyć sealiousowe Query do stringów SQL.
Task nie polega na napisaniu logiki tego modułu. Ten task polega na stworzeniu repozytorium na ten moduł i przygotowania szablonów testów tego modułu wewnątrz tego repozytorium.
Testów powinno być tak na oko 20. Powinny testować (jeszcze nieistniejący) moduł, który będzie tłumaczył zapytania do Mongo w postaci listy agregacji na stringa z zapytaniem SQL, które ma realizować taką samą logikę.
Każdy test powinien zatem składać się z:
- Jakiegoś zapytania w postaci listy aggregation pipeline stages (zob. opis poniżej)
- Odpowiadającego temu zapytaniu stringowi z zapytaniem SQL (trzeba je przygotować ręcznie na podstawie tego queriesa mongowego)
- Wywołaniu jakiejś placeholderowej funkcji podając jej query z pkt. 1 i porównaniu jej wyniku z query z pkt 2. Placeholderowa funckja będzie zawsze zwracać "", więc testy będą zawodzić - to jest pożądany stan rzeczy. W przyszłości będą taski na to, aby tak aktualizować tę funkcję placeholderową, aby coraz więcej testów zaczęło przechodzić.
Dobrane queries powinny być wyciągnięte z logów testów Sealiousa. Można dodać console.log do tej funkcji: https://hub.sealcode.org/source/sealious/browse/dev/src/datastore/datastore.ts$129, wtedy wszystkie aggregation stages będą się wypisywały do terminala.
Należy do testów wziąć zapytania od najprostszych aż po najbardziej złożone.
Repo powinno być napisane w typescript. Można się mocno inspirować setupem z https://hub.sealcode.org/diffusion/RIMAGEROUTER/