Skip to content

AnatoliyPostnov/LibraryMicroservice

Repository files navigation

Задание Focus Start: Реализация ORM для работника библиотеки.

Программа состоит из пяти сервисов:

    1. libraryOrchestrator - сервис, который принимает запросы от клиента и перенаправляется их
    на другие сервисы.
    2. bookService - сервис учета книг.
    3. clientService - сервис учета пользователей.
    4. receivedBookService - сервис, позволяющий управлять процессом взаимодействия пользователей с книгами.
    (например, взять книгу, сдать книгу и т.п.)
    5. emailSender - сервис для отправки сообщений пользователям. Отправляет сообщение,
    если пользователь держит книгу более месяца.

Программа обладает следующей функциональностью:

1. Добавление книг в базу данных.
2. Поиск книг по разным условиям.
3. Удаление книг по разным условиям.
4. Поиск авторов всех книг.
5. Добавление пользователей в базу данных.
6. Возможность взять книгу пользователем.
7. Возможность сдать книгу пользователю.
8. Контроль за книгами:
    а) можно получить все книги, которые были взяты пользователями.
    б) можно посмотреть всю историю взятых и сданных книг по конкретному пользователю.
    в) можно получить все книги, которые были взяты пользователями.
    в) в программе постоянно крутится Scheduled, который отслеживает все книги, которые были
    взяты более чем один месяц назад и отправляет пользователям извещение о том, что книги нужно сдать.


10 Для взаимодействия с ORM доступен следующий интерфейс:


1. Добавить несколько книг:
	метод - POST;
	адрес - http://localhost:8080/add/books;
	пример Body -
[
	{
	    "name": "55 устных тем по английскому языку",
	    "volume": "155",
	    "dateOfPublishing": "2003-11-05",
	    "dateOfWriting": "2002-05-05",
	    "authors": [
	        {
	            "name": "Татьяна",
	            "surname": "Журина",
	            "birthday": "1996-06-17"
	        },
	        {
	            "name": "Неизвестный",
	            "surname": "Автор",
	            "birthday": "1999-06-17"
	        }
	    ]
	},
	{
	    "name": "Java. Полное руководство",
	    "volume": "1486",
	    "dateOfPublishing": "2019-10-16",
	    "dateOfWriting": "2002-05-05",
	    "authors": [
	        {
	            "name": "Герберт",
	            "surname": "Шилдт",
	            "birthday": "1977-06-17"
	        }
	    ]
	},
	{
	    "name": "Неизвестная книга",
	    "volume": "10",
	    "dateOfPublishing": "2019-10-16",
	    "dateOfWriting": "2002-05-05",
	    "authors": [
	        {
	            "name": "Неизвестный",
	            "surname": "Автор",
	            "birthday": "1999-06-17"
	        }
	    ]
	}
]

2. Получить все книги
	метод - GET;
	адрес - http://localhost:8080/books/filter?fromBookId={fromBookId}&toBookId={toBookId};
	Body - пусто

3. Найти книги по названию и объему книги
	метод - GET;
	адрес - http://localhost:8080/book/filter?name={название}&volume={объем};
	Body - пусто

4. Найти книги по имени и фамилии автора.
    метод GET
    адрес - http://localhost:8080/books/author/filter?name=Неизвестный&surname=Автор
    Body пуст

5. Удалить книгу по нахзванию книги и объему книги
	метод DELETE;
	адрес - http://localhost:8080/book/filter?name=Spring 5 для профессионалов&volume=1120;
	Body - пуст

6. Добавить читательский билет
    метод - POST
    адрес - http://localhost:8080/add/libraryCards
    пример Body:
[
	{
	"client":
		{
	   	 "phone": "89533576500",
	   	 "email": "postnov-90@mail.ru",
	    	"passport":
	        	{
	            	"name": "Петя",
	           	"surname": "Бубликов",
	            	"birthday": "1964-06-15",
	            	"number": "4567",
	            	"series": "1553445",
	            	"authorityIssuer": "Piter",
	            	"dateSigning": "1990-05-05"
	        	}
		}
	}
]

7. Получить все зарегистрированные читательские билеты
    метод - GET
    адрес - http://localhost:8080/libraryCards/filter?fromLibraryCardsId={...}&toLibraryCardsId={...}
    Body пуст.

8. Найти конкретный читательский билет по номеру и серии паспорта пользователя
    метод - GET
    адрес - http://localhost:8080/libraryCard/filter?number={номер паспорта}&series={номер серии паспорта}
    Body пуст.

9. Удалить читательский билет
    метод - DELETE
    адрес - http://localhost:8080/libraryCard/filter?number={...}&series={...}
    Body пуст

10. Дать книжку пользователю
    метод POST
    адрес - http://localhost:8080/received/book
    Пример Body:
{
	"book":
		{
		    "name": "Java. Полное руководство",
		    "volume": "1486",
		    "dateOfPublishing": "2019-10-16",
		    "dateOfWriting": "2002-05-05",
		    "authors": [
		        {
		            "name": "Герберт",
		            "surname": "Шилдт",
		            "birthday": "1977-06-17"
		        }
		    ]
		},
	"libraryCard":
		{
		"client":
			{
			    "phone": "89533576500",
			    "email": "postnov-90@mail.ru",
			    "passport":
			        {
			            "name": "Петя",
			            "surname": "Бубликов",
			            "birthday": "1964-06-15",
			            "number": "4567",
			            "series": "1553445",
			            "authorityIssuer": "Piter",
			            "dateSigning": "1990-05-05"
			        }
			}
		}
}

11. Вернуть книжку пользователем по названию книжки
    метод - POST
    адрес - http://localhost:8080/return/book/filter?number={номер паспорта пользователя}&series={номер серии пользователя}&name={Название книжки}
    Body пуст.

12. Получить всю историю взятия книжек конкретным пользователем.
    метод - GET
    адре - http://localhost:8080/history/received/books/filter?number={номер паспорта}&series={серия паспорта}
    Body пуст.

13. Получить вообще все книжки которые в данный момент находятся у пользователей.
    метод - GET
    адрес - http://localhost:8080/all/received/books/filter?fromReceivedBookId={...}&toReceivedBookId={...}
    Body пуст.

14. Получить вообще все книжки которые в данный момент находятся у пользователя.
    метод - GET
    адрес - http://localhost:8080/received/books/filter?number={...}&series={...}
    Body пуст.

Для тестирования проекта через postman необходимо установить в Headers: Content-Type - application/json;charset=UTF-8

Перед запуском приложения нужно сделать следущее:
1. Проверить, что свободны порты 8080, 8081, 8082, 8083, 8084.
2. Установить PostgresSQL, RabbitMQ на свой компьютер.
3. Зайти в файл application.properties в каждом сервисе.
4. Указать пароль от своей базы данных PostgresSql.
5. Создать в свой базе данных postgresSql базы данных:
    book_service, book_service_test,
    client_service, library_card_test,
    received_book, received_book_test,
    library_orchestrator
6. В файле application.properties сервиса EmailSenderService указать свою почту и пароль от нее.

Для запуска проекта необходимо запустить все сервисы.

Спасибо за внимание!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages