MongoDB Project jest projektem zaliczeniowym z przedmiotów:
- Przetwarzanie w chmurach obliczeniowych 24/25Z
- Modelowanie nierelacyjnych baz danych 24/25Z
Do instalacji projektu wymagane jest następujące oprogramowanie:
- Docker https://docs.docker.com/engine/install/
- git (
apt install git
Debian & Ubuntu lubdnf install git
RHEL & Oracle Linux) - cron
Komendy wymagające podwyższonych uprawnień (wykorzystanie konta root, sudo) będą posiadały prefix #
$ git clone https://github.com/koloiyolo/mongodb_project.git
$ cd mongodb_project
# docker compose up -d
$ export PROJECT_PATH="/path/to/mongodb_project"
Pamiętaj o zmianie ścieżki przykładowej na ścieżkę całkowitą do pliku cicd.sh
# echo "* * * * * root /path/to/your/project/cicd.sh" >> /etc/crontab
- Aplikacja CRUD z wdrożeniem w chmurze z użyciem potoku CI/CD.
- Uwzględnione aspekty bezpieczeństwa zarówno przy przesyłaniu jak i przechowywaniu danych. (https, szyfrowanie haseł)
- Wdrożenie w postaci maszyny wirtualnej(użycie Terraform/Ansible) lub kontenera Dockera(docker compose)
- Wdrożenie w architekturze mikrousług - min. Dwie komunikujace się ze sobą maszyny wirtualne lub kontenery Dockera.
- Wdrożenie uzupełnione o testy (jednostkowe, e2e) w ramach protokołu CI/CD
Napisać program symulujący wypożyczalnie video. Program ma operować na dowolnie wybranej bazie NoSQL. Ma zawierać 3 rodzaje informacji:
- Lista możliwych do wypożyczenia filmów (Tytuł filmu, Gatunek, reżyser, czas trwania, ocena w skali od 1 do 10, krótki opis filmu, aktorzy, data dodania filmu do kolekcji)
- Lista klientów wypożyczalni ( imię, nazwisko, adres, telefon, data rejestracji)
- Lista wypożyczeń dla danego klienta (Dane klienta, Tytuł filmu, data i godzina wypożyczenia, data i godzina planowanego zwrotu, data i godzina faktycznego zwrotu)
Każdy klient może wypożyczyć maksymalnie 3 filmy naraz. Film wypożyczany jest na okres 2 dni. Program umożliwia zalogowanie się jako administrator wypożyczalni i wówczas oferuje następujące funkcje:
- Wyświetl listę filmów – wyświetla wszystkie dostępne filmy do wypożyczenia (lp, tytuł, gatunek, reżyser, czas trwania). Ponadto możliwe jest wyświetlenie szczegółowych informacji o każdym z filmów (opis, ocena, obsada aktorska). Filmy wypożyczone nie są uwzględniane na liście (lub są oznaczone jako niedostępne). Możliwe jest także sortowanie oraz wyszukiwanie po tytule lub gatunku.
- Wyświetl listę wszystkich wypożyczeń – wyświetla listę wypożyczeń dokonanych przez każdego klienta w formie (dane klienta ,tytuł filmu, data i godzina wypożyczenia, data i godzina planowanego zwrotu, data i godzina faktycznego zwrotu). Możliwe jest sortowanie po danych klienta, dacie wypożyczenia oraz wyszukiwanie po danych klienta, id_filmu, tytule filmu, dacie wypożyczenia. Możliwe jest także zwrócenie filmu wypożyczonego przez określonego klienta.
- Wypożycz film – po podaniu tytułu filmu i id_klienta lub jego imienia + nazwiska, jeśli dany film jest dostępny do wypożyczenia i klient nie przekroczył jeszcze limitu wypożyczeń to program zapisuje fakt wypożyczenia (rejestrując datę i godzinę wypożyczenia, obliczając datę planowanego zwrotu)
- Dodaj nowego klienta.
- Usuń klienta.
- Modyfikuj dane klienta – wyświetla listę wszystkich klientów. I umożliwia modyfikacje wszystkich danych określonego klienta.
- Dodaj nowy film.
- Modyfikuj opis filmu – wyświetla listę wszystkich filmów i umożliwia modyfikacje wszelkich danych dla każdego filmu danych.
- Usuń film.
Ponadto należy przewidzieć opcję rejestracji nowych użytkowników. Wówczas taki użytkownik może zobaczyć aktualną listę filmów, listę swoich wypożyczeń, dokonać wypożyczenia filmu.
Zwroty filmów obsługiwane są wyłącznie przez administratora.
Proszę zaimplementować obsługę błędów (np. przy dodawaniu filmu czy należy zwrócić uwagę czy film o takim tytule już istnieje w bazie i wyświetlić stosowny komunikat, nie można usunąć filmu, które jest aktualnie wypożyczony, nie można usunąć klienta jeśli ma on aktywne wypożyczenia itp).
Baza ma posiadać minimum 10 filmów, 5-ciu użytkowników i 4 aktywne wypożyczenia.
Program powinien posiadać graficzny interfejs użytkownika.