Siema rozglądam się z pracą na Junior Java Developera i dostałem takie oto zadanie do zrobienia:
Przygotować usługę backend (REST) - projekt zarządzania kartoteką produktową.
Produkt występuje w następującej hierarchii:
1. DEFINICJA MODELU - dane producena
(producent, typ, nazwa modelu, płeć...)
2. DEFINICJA WARIANTU - każdy model może mieć różne warianty (kolor producenta)
- np. czerwony, czarny, biała perła
3. DEFINICJA ROZMIARU - każdy wariant jest dostępny w różnych rozmiarach
- np. dla butów 41, 42 lub dla nart 170, 176
4. SŁOWNIK PŁCI
- dla DEFINICJI MODELU (M:N)
5. SŁOWNIK ROZMIARÓW
- dla DEFINICJI ROZMIARU (M:N)
TODO:
1. Przygotować strukturę bazy danych (mysql)
2. Dorzucić kolumnę z aktualną ceną (z założeniem, że cena może być różna per wariant/rozmiar)
3. Przygotować płaski widok (sql view) zawierający kolumny (typ, producent, nazwa modelu, kolor, rozmiar, aktualna cena)
4. (opcjonalnie) Zaimplementować proces archiwizacji danych produktowych:
a. MODEL z wszystkimi WARIANTAMI i ROZMIARAMI
b. WARIANT ze wszystkimi ROZMIARAMI
c. ROZMIAR
5. Przygotować rest api
a. dla DEFINICJI CRUD + (opcjonalnie) przeniesienie do archiwum
b. dla SŁOWNIKÓW dodanie i usunięcie z założeniem, że nie można usunąć wykorzystywanej pozycji
6. Wykonać dokumentację techniczną (swagger)
7. (opcjonalnie) Konteneryzacja, przygotować:
a. Dockerfile dla usługi
b. Komendę do utworzenia obrazu
c. Docker-compose do uruchomienia całej usługi (db + usługa rest)
Rozwiązanie powinno zawierać:
1. Skrypty sql do utworzenia struktury bazy danych lub skonfigurować DDL w usłudze (spring.jpa.hibernate.ddl-auto)
2. Przykładowe dane wejściowe do DB w formie skryptu sql lub json
3. Skrypt sql do utworzenia widoku (TODO pkt 3)
4. Kod usługi backend
5. Informację jak poprawnie skonfigurować / odpalić projekt
Czy to normalny poziom zadania na Juniora? XD
Jakby samo zakodowanie tego to luz, ale wymyślenie struktury projektu/bazy danych i jaka klasa co powinna zawierać a przede wszystkim wariant, kolor i size i ogarnięcie jak to zapisać/zbudować z klas/interfejsów jest dla mnie trochę trudne.
Plus samo polecenie jest dość niejasno zapisane (?) czy tylko to moje wrażenie? O co chodzi z Słownikiem płci oraz słownik rozmiarów (na zrobiłbym to po prostu na enumach)
Moja wstępna struktura wygląda tak:
- Product.class
- Long id
- String productName
@ManyToOne
- Producer producer;
@OneToMany()
- Category category
- Model.class
- Long Id
- String modelName
- Type type
- Sex sex
@OneToMany
- HashSet<Variant> variants
- Variant.class
- Long id
- Color color;
- Size size;
- Size.class
tu jest problem bo np koszulka ma rozmiar XL XS, buty 42, 44 itp narty 165, 170 itp
- Sex.enum
MALE, FEMALE, UNISEX;
- Color.enum enum z kolorami ale chyba zmienie to na klasę Color z polem ID oraz String
- Producer.class - tutaj będą dane producenta itp
Wy co myślicie jak zrobilibyście tę strukture? :v