Skip to content

streamlined2/REST-application

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Запуск програми

Метод main основного класу застосунку com.streamlined.restapp.RestApplication

Імпорт даних основної сутності

Вихідний файл для імпорту даних основної сутності Person розташований за посиланням

https://github.com/streamlined2/REST-application/blob/main/src/main/resources/data/data0.json

Файл створений за допомогою метода main класа генератора випадкових даних com.streamlined.restapp.generator.PersonDataGenerator із параметрами кількість файлів 1, кількість сутностей 1000.

Скріпти Liquibase

Скріпти Liquibase для створення таблиць, індексів сутностей Person, Country і заповнення таблиці допоміжної сутності Country розташовані в теці src/main/resources/db

Збереження даних

Для збереження і роботи із даними використовується імідж PostgreSQL 16.2

https://hub.docker.com/r/bitnami/postgresql

Сервіс запускається за допомогою Docker Compose, файл налаштування compose.yaml розташований в корні проєкту.

Дані контейнера відображаються в локальну теку D:\postgresql.

Виконання запитів для ендпойнтів _list, _report основної сутності Person

Приклад виконання запитів для ендпойнта /api/person/_list

Запит для отримання першої сторінки розміром 10 сутностей зі значеннями статі FEMALE, кольору очей RED та волосся YELLOW

{ "sex":"FEMALE", "eyeColor":"RED", "hairColor":"YELLOW", "page":0, "size":10 }

Для пошуку людини Person по допоміжній сутності країни Country можна зазначити одну із властивостей id, name, або capital

Наприклад, для пошуку людини за іменем країни походження та за іменем столиці країни громадянства слід вказати запит

{ "countryOfOrigin":{ "name": "USA" }, "citizenship":{ "capital": "Washington" }, "page":0, "size":10 }

Для пошуку за первинним ключем id країни походження можна вказати запит

{ "countryOfOrigin":{ "id":1 }, "page":0, "size":10 }

Оскільки основна сутність Person містить дві властивості допоміжної сутності Country, а саме countryOfOrigin та citizenship, посилання на первинний ключ допоміжної сутності countryId є двозначним і неможливим.

Запити для ендпойнта /api/person/_report ідентичні, але без використання параметрів page, size

Валідація даних

Валідація даних виконується компонентом Validator на рівні сервісу перевіркою сутностей, а не DTO на рівні контролера, що спрощує супровід проєкту.