Spis treści

Gabinet dentystyczny - prosta aplikacja webowa w Go

Wyzwanie na najbliższy miesiąc: zaprojektuję i zaimplementuję program do obsługi gabinetu dentystycznego. Napiszę go w go. Let’s go 😄!

Ćwiczenie

Dziś postanowiłam, że podejmę się pewnego wyzwania: chcę zaprojektować i zaimplementować prosty program do obsługi gabinetu dentystycznego. Będzie to tak naprawdę prototyp, choć całkiem możliwe, że jednak będę go dalej rozwijać.

Założenia

  • prostota
  • polski interfejs
  • plikowa baza danych
  • pacjenci, wizyty, panel “zębowy” (do oznaczania zabiegów)

Technologia

Czyli o tym, jak chcę to zrobić.

Opcje

  • JPA w Spring Boot z javafx albo z interfejsem webowym (wtedy REST)
  • Jeśli Bulma/Bootstrap, to może jednak baza będzie na SQLite i backend w Javascript/TypeScript?
  • Jeśli Java to może warto rozważyć Kotlina i jego rozwiązania ORM-owe? Albo przynajmniej biblioteki do JDBC?

Najbliższa mi będzie jednak Java/Kotlin. No i GUI w JavaFX.

Aktualizacja 2021-08-20

Buhaha! No więc nie wybrałam żadnej opcji z powyższych. Ciągnie mnie do wypróbowywania Go.

Język jets prosty bardzo, prawie że prostacki, ale ta prostota trafia do mnie (chyba się starzeję), bo rzeczywiście czytanie kodu w Go jest dużo mniej stresujące, niż na przykład w Clojure (bardziej odpowiada mi kierunek czytania od góry do dołu a nie od środka na zewnątrz)

Ostatecznie (albo tymczasowo) postanowiłam, że zrobię projekt w Go. Dla fanu, jak mówią moje dzieci :)

Czego się nauczyłam

Całkiem sporo! Przejrzałam trochę stron, żeby uczyć się w trakcie pisania:

Framework webowy

Do zrobienia prostej strony z odrobiną webowej dynamiki potrzebowałam wybrać bibliotekę do tworzenia aplikacji webowych. W środowisku golangowym istnieje kilka Gin, Echo, fiber, Confetti, iris. Wybrałam pierwszy (z powodu gwiazdek na githubie).

Templejty

Templejty piszę w standardowym dla go html/emplate który ma API takie jak text/template.

CSS

Upiększam swojego htmla przy użyciu Bulma

Baza danych

Odpowiednikiem javowego jdbc jest API database/sql implementoane przez driver do sqlite3 go-sqlite3. Przydał mi się Tutorial about databases oraz Informacje nt. interfejsu

Co zrobiłam do tej pory

Po wielu ekperymentach z nowymi bibliotekami udało mi się stworzyć proste gui do prezentowania tabelki z pacjentami oraz formularza do dodawania oraz edycji wybranego pacjenta:

Strona do edycji pacjentów

Uczę się też używania interfejsu wiersza poleceń do sqlite. Prosty, miły, szybki. Same zalety.

Schemat bazy wyświeltony w sqlite

Co jest jeszcze do zrobienia

  • Wizyty widoczne dla każdego pacjenta.
  • Możliwość dodania nowej wizyty dla pacjenta.
  • Wyszukiwanie pacjentów
  • Widok “uzębienia” pacjenta (będzie częścią danych pacjenta). Wizyty mogą dodawać “zabiegi” do uzębienia w ramach pewnej wizyty.

Wyzwania

Jestem tak bardzo przyzwyczajona do JPA, że pisanie SQL-a ręcznie jest bardzo pouczającym doświadczeniem. Istnieje biblioteka do mapowania obiektowo-relacyjnego w Go, ale na razie chcę się trzymać blisko sql-a i zobaczyć, czy będę w stanie stworzyć w ten sposób używalny prototyp.

Życzcie mi powodzenia 😅