ProGress z DenoGresem

Jan 26 2023
Co powinieneś wiedzieć o DenoGres 4.0
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 słynnego wystąpienia zatytułowanego „10 rzeczy, których żałuję z powodu Node.

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