Narzędzie konsolowe .NET 8.0 do zarządzania metadanymi bazy danych Firebird 5.0.
Aplikacja obsługuje trzy główne operacje:
- build-db - Budowa nowej bazy danych ze skryptów SQL
- export-scripts - Eksport metadanych z istniejącej bazy do plików SQL
- update-db - Aktualizacja istniejącej bazy na podstawie skryptów (synchronizacja)
Aplikacja obsługuje:
- Domeny (DOMAIN) - typy niestandardowe z walidacją
- Tabele (TABLE) - struktury danych z kolumnami
- Procedury składowane (STORED PROCEDURE) - logika biznesowa w bazie
Uwaga: Constrainty, triggery i indeksy nie są obsługiwane w tej uproszczonej wersji.
- .NET 8.0 SDK lub nowszy - Instrukcje instalacji
- Firebird 5.0 zainstalowany lokalnie - Instrukcje instalacji
- Domyślny użytkownik:
SYSDBA - Domyślne hasło:
masterkey
- Domyślny użytkownik:
dotnet restore DbMetaTool.csproj
dotnet build DbMetaTool.csprojAplikację można uruchamiać bezpośrednio przez dotnet run (wskazując plik projektu) lub używając skompilowanego pliku .exe.
Ważne: Ze względu na strukturę projektu, przy używaniu dotnet run należy zawsze wskazywać plik projektu flagą --project.
Tworzy nową pustą bazę danych Firebird i wypełnia ją obiektami ze skryptów SQL. Rozwiązuje zależności cykliczne między procedurami.
Składnia:
dotnet run --project DbMetaTool.csproj -- build-db --db-dir <katalog-bazy> --scripts-dir <katalog-skryptów>Przykład:
dotnet run --project DbMetaTool.csproj -- build-db --db-dir "C:\db" --scripts-dir "C:\scripts"Eksportuje metadane z istniejącej bazy danych do plików SQL w strukturze katalogów (domains/, tables/, procedures/).
Składnia:
dotnet run --project DbMetaTool.csproj -- export-scripts --connection-string <conn-string> --output-dir <katalog-wyjściowy>Przykład:
dotnet run --project DbMetaTool.csproj -- export-scripts --connection-string "User ID=SYSDBA;Password=masterkey;Database=C:\db\database.fdb;DataSource=localhost;Port=3050;Dialect=3;charset=UTF8" --output-dir "C:\export"Synchronizuje istniejącą bazę danych ze stanem opisanym w plikach skryptów.
- Usuwa nadmiarowe tabele i procedury
- Dodaje brakujące tabele i domeny
- Aktualizuje kolumny w tabelach (dodaje/usuwa)
- Aktualizuje procedury (rozwiązując zależności cykliczne)
Składnia:
dotnet run --project DbMetaTool.csproj -- update-db --connection-string <conn-string> --scripts-dir <katalog-skryptów>Przykład:
dotnet run --project DbMetaTool.csproj -- update-db --connection-string "User ID=SYSDBA;Password=masterkey;Database=C:\db\database.fdb;DataSource=localhost;Port=3050;Dialect=3;charset=UTF8" --scripts-dir "C:\scripts"Projekt wykorzystuje Clean Architecture z podziałem na warstwy:
DbMetaTool/
├── Domain/ # Warstwa domenowa (modele + interfejsy)
├── Infrastructure/ # Warstwa infrastruktury (Firebird)
├── Application/ # Warstwa aplikacji (serwisy)
├── Common/ # Utilities i wyjątki
└── Program.cs # Entry point (CLI)
- Dependency Injection - Zarządzanie zależnościami
- Serilog - Strukturalne logowanie operacji
- Obsługa UTF8 - Poprawne przeliczanie długości pól tekstowych (bajty vs znaki)
- Circular Dependency Handling - Dwufazowe wgrywanie procedur (Stub Pass -> Full Pass)
- Inteligentna synchronizacja - Porównywanie metadanych zamiast ślepego wgrywania skryptów
- FirebirdSql.Data.FirebirdClient (10.3.1) - ADO.NET provider dla Firebird
- Microsoft.Extensions.DependencyInjection (8.0.1) - Kontener DI
- Serilog (4.1.0) - Strukturalne logowanie
Implementacja wykorzystuje AI (GitHub Copilot) zgodnie z wymaganiami zadania.