ProGress z DenoGresem
Bardzo krótki przegląd Deno
Deno to szybko rozwijające się środowisko uruchomieniowe JavaScript, TypeScript i WebAssembly zbudowane w Rust na silniku V8 Chrome, z bezpiecznymi ustawieniami domyślnymi, wbudowanymi narzędziami i importem adresów URL do zarządzania zależnościami. Został wprowadzony przez twórcę Node, Ryana Dahla, na JSconf EU w 2018 roku podczas jego wykładu zatytułowanego „ 10 rzeczy, których żałuję z powodu Node . ”
Dlaczego ORM?
Dla tych, którzy nie są zaznajomieni, ORM oznacza Object-Relational Mapper. "Co to znaczy?" możesz zapytać. Mówiąc najprościej, ORM umożliwia programistom pracę z relacyjnymi bazami danych za pośrednictwem obiektów, a nie ciągów zapytań. Przełączanie między programowaniem obiektowym a deklaratywną składnią SQL może stać się uciążliwe i przerwać przepływ pracy podczas programowania. ORM umożliwiają programistom interakcję z ich bazą danych jako klasami i instancjami. Na naszą korzyść istnieje mnóstwo narzędzi ORM — niestety opcje open source, które zostały zaprojektowane z pierwszorzędną obsługą TypeScript, są ograniczone, a jeszcze mniej jest zaprojektowanych dla środowiska wykonawczego Deno.
DenoGres, rozwiązanie
DenoGres zapewnia TypeScript ORM dla programistów pracujących z PostgreSQL w środowisku wykonawczym Deno. Narzędzie działa poprzez introspekcję bazy danych użytkownika — w tym jej etykiet, typów i ograniczeń — i transponowanie każdej tabeli do klasy, która rozszerza abstrakcyjną klasę „Model”. Daje to tym klasom tabel dostęp do zestawu statycznych właściwości i metod, które bezpiecznie obsługują zapytania do bazy danych pod maską, podczas gdy użytkownik doświadcza interakcji z bazą danych za pośrednictwem znanego mechanizmu OOP.
Aby rozpocząć pracę z DenoGres w projekcie Deno, postępuj zgodnie z instrukcjami wiersza poleceń:
Zaimportuj DenoGres do swojego projektu:
deno install --allow-read --allow-write --allow-net --allow-env
--allow-run --name denogres https://deno.land/x/denogres/mod.ts
denogres --init
Przeanalizuj swoją bazę danych i stwórz modele:
denogres --db-pull
denogres --gui
Funkcje DenoGres 4.0
DenoGres 4.0 wprowadza szeroką gamę aktualizacji do już potężnego ORM. Być może najbardziej ekscytujące jest to, że dodaje funkcję transakcji i wycofywania, aby umożliwić użytkownikom grupowanie wielu zapytań, zachowując integralność transakcji i zgodność z ACID.
Atomowość, pierwsza zasada w akronimie ACID, jest zasadniczo zasadą, że podczas grupowania wielu zapytań do bazy danych albo wszystkie zmiany powinny zostać zatwierdzone, albo żadne. Chroni to ważne tabele w bazie danych przed niepożądanymi zmianami w przypadku awarii, problemów z połączeniem lub nieudanych zapytań.
Aby korzystać z transakcji w DenoGres, użytkownik może połączyć .transaction() z końcem innych metod zapytań w celu utworzenia lub kontynuowania transakcji. Transakcje mogą być używane w kilku modelach do wykonywania zapytań wsadowych. Dzięki temu możesz mieć pewność, że ważne tabele pozostają zsynchronizowane, gdy manipulowanie jedną tabelą zależy od innej. Aby zakończyć transakcję, połącz .endTransaction() z ostatnim zapytaniem. Jeśli jakiekolwiek zapytanie w transakcji nie powiedzie się, wszystkie poprzednie zapytania zostaną wycofane, a tabele powrócą do swojego pierwotnego stanu.
Oto przykład:
await Person.insert('name = Alex').transaction();
await Animal.delete().where('name = Spot').transaction();
await Person.insert('nae = Rachel').endTransaction();
// throws an error since 'nae' isn't a column, rolls back all previous queries and returns the error for the query that failed
DenoGres 4.0 znacznie zwiększa również pokrycie kodu, aby zapewnić sprawne działanie zarówno użytkownikom, jak i programistom. Rygorystycznie zwrócono uwagę na każdy potencjalny przypadek użycia, co oznacza, że użytkownicy mogą używać DenoGres do bardziej wyrafinowanych zapytań bez obawy, że dane przepadną przez szczeliny.
Przyszłość DenoGres
Ponieważ DenoGres jest produktem typu open source opracowanym w ramach OSLabs, narzędzie jest stale ulepszane i istnieje wiele funkcji, na które czekamy w przyszłości:
- Funkcjonalność SavePoint pozwoli użytkownikom na posiadanie większych transakcji, które można podzielić na sekcje i umożliwi częściowe wycofanie transakcji do punktu zapisu. Jest to przydatne przy wdrażaniu złożonego odzyskiwania po błędach.
- Metoda ustawiająca, którą można dołączyć do modeli po ustanowieniu powiązania z innym modelem, co pozwala na szybkie dodawanie powiązanych wierszy.
- Funkcja manyToMany utworzy nową tabelę połączeń, umożliwiając użytkownikom ORM inicjowanie bardziej złożonych relacji między tabelami.
Współtwórcy DenoGres 4.0:
- Rachel Cheman | LinkedIn | GitHub
- Jakub Marcin | LinkedIn | GitHub
- Mia Gussen | LinkedIn | GitHub
- Aleksandra Lin | LinkedIn | GitHub

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































