152 lines
3.9 KiB
Markdown
152 lines
3.9 KiB
Markdown
# 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.
|
||
|
||

|
||
|
||
### `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
|