# Knihovna ## Struktura projektu Projekt je organizován do několika klíčových částí: ```shell Knihovna/ │ ├── src/ # Zdrojové soubory – zde bude vaše implementace │ ├── Funkce1.cs │ ├── Funkce2.cs │ └── ... │ ├── Database.cs # Definice databázových tabulek a datových modelů │ ├── Program.cs # Hlavní vstupní bod programu (spuštění aplikace) │ └── docs/ # Dokumentace a zadání pro jednotlivé týmy ├── TymA.md ├── TymB.md └── ... ``` --- ## Popis hlavních souborů ### `./src/` - každý tým implementuje své funkce **v samostatném souboru**, abychom se vyhnuli git konfliktům - Například funkci pro vyhledávání knih uložte do souboru `VyhledavaniKnih.cs`. - Tento přístup zajišťuje přehlednost, modularitu a snadné testování. > [!IMPORTANT] > Všechny proměnné se pojmenovávají v angličtině ve stylu PascalCase, to stejné platí pro názvy souborů. ### `Database.cs` - Obsahuje **definici tabulek** a **datových struktur**, které reprezentují databázi (např. `Knihy`, `Ctenari`, `Vypujcky`). - Není vhodné měnit strukturu bez předchozí domluvy s ostatními členy týmu, protože soubor je sdílený v rámci celého projektu. ![Databaze](docs/db-erd.svg) ### `Program.cs` - Slouží jako **hlavní vstupní bod** aplikace. - Zde se spouští program, načítají data a volají funkce z adresáře `src`. - Tento soubor zajišťuje propojení všech částí projektu. --- ## Postup při přidávání vaší práce ### Klonování repozitáře Stáhněte si projekt lokálně pomocí GITu: ```bash git clone https://gitea.homework.zip/shinya/Knihovna.git ``` Tímto příkazem vytvoříte lokální kopii projektu na vašem počítači. ## Úpravy a implementace Vytvořte nebo upravte soubory v adresáři ./src/. Dodržujte strukturu projektu a konvence psaní kódu. Průběžně testujte své změny (např. pomocí dotnet run). Pokud nemate dotnet tak docker compose up -d a docker exec -it knihovna bash Tam mate prostredi s nainstalovanym dotnetem a vsemi dependencies ## Commit a push Jakmile máte změny hotové, proveďte následující příkazy: Dodržujte conventional commits: https://www.conventionalcommits.org/en/v1.0.0/ Cheatsheet: https://ashababnoor.github.io/cheatsheets/cheatsheets/conventional-commits ```bash git add . git commit -m "feat: funkce vyhledávání knih" git push ``` Tímto nahrajete změny zpět na server. Pozor: Před odesláním změn vždy nejprve stáhněte aktuální verzi projektu: ```bash git pull ``` - a vyřešte případné konflikty, pokud se vyskytnou. ## Zadání projektů V adresáři ./docs se nachází zadání pro jednotlivé týmy. Každý tým má svůj vlastní soubor (např. TymA.md, TymB.md), který obsahuje: - konkrétní popis úkolu, - technické požadavky, - a případně hodnoticí kritéria. ## Info - Přidat, upravit, vypsat, vymazat knihy - Filtrace knih podle autora atd... - Počet dostupných výtisků 1. Přidat knihu 2. Upravit knihu 3. Vymazat knihu - Vyhledávat podle konkrétního specifikovaného parametru - Vyhledávat podle názvu, autora - Filtrace podle autora, nakladatelství - Filtrování na serveru - Implementace uživatele a jeho výpůjček - Kniha má maximálně 6/7 autorů ## Práce 1. Struktura databáze 2. Informace z databáze zpracování 3. ## Funkce - GetBooks() param. filter wrapper function, pick if by name or author - GetBooksByAuthor() param. filter - GetBooksByName() param. filter - GetStolenBooks() param. filter - GetAvailableBooks() param. filter - GetBorrowedBooks() param. userID - GetBookInfo() param. knihaID - AddBook() param. KnihaInfo - RemoveBook() param. knihaID - EditBook() param. knihaID - AddAuthor() param. AutorInfo - EditAuthor() param. AutorID - AddNakladatelstvi() param. NakladatelstviInfo - EditNakladatelstvi() param. NakladatelstviID