Проект собрал по Java версии 11 и Spring Boot версии 2.7.6 Автор: Муратбек Бауыржан
Установил библиотеки spring-boot-starter-web, spring-boot-starter-data-jpa, h2 (для хранения данных) lombok (для автоматической подставки setter + getter методов для Entity) io.jsonwebtoken:jjwt (библиотека для генерации/валидации токена)
В коде я поделил структуру на controllers (классы, которые слушают и отправляют ответы путем отправки запросов на эндпоинты), на models (модели, которые содержат Entity для пользователя и сообщения) на repositories (классы, через которые выполняются манипуляции по данным) на services (классы, которые исполняют бизнес логику)
Controllers: Handler - основной класс, который слушает запросы и отправляет пользователю статус код или другие ответы Models: AuthenticationResponse - класс, который возвращает токен MessageRequest - класс, который возвращает содержания сообщения, либо выступает как параметр при отправке запросов (name - имя пользователя, password - пароль, created_date - дата создания, updated_date - дата изменения, user - данные пользователя) UserDataRequest - класс, который выступает как параметр при отправке запросов (name - имя пользователя, password - пароль) Repositores: MessagesRepository - репозиторий, которые манипулирует данными MessageRequest UsersRepository - репозиторий, которые манипулирует данными UserDataRequest Services: DataControllerService - сервис, который позволяет выполнять бизнес логику данных, например создния пользователя, создание сообщения
Самые основные и нужные методы:
// данный метод позволяет создавать пользователя по передаче имени и пароля
public void createUser(UserDataRequest user)
// Проверяет на наличие пароля в БД, и позже создает токен для пользователя
public AuthenticationResponse checkPassAndCreateToken(UserDataRequest data)
// создает новое сообщение путем передачи имени (здесь оно привязано к классу UserDataRequest) и самого содержания сообщения
public void createNewMessage(MessageRequest messageRequest)
// Проводит валидацию токена, и сохранения сообшения в случае успеха, или вывода 10 последних сообщении данного пользователя
public List<MessageRequest> saveMessageOrGetLastTenMessages(String token, MessageRequest data) throws Exception
TokenGeneratorUtility - сервис, который отвечает за генерацию, валидацию токена
Тесты: DataControllerServiceTests - сервис, которые включает в себя Mock тесты... я уже расписал внутри все подробнее, здесь в детали не буду вдаваться я создал тесты только для этого класса, так как по мне это самый важный и необходимый из них
Обязательно прочтите файл requests.txt, чтобы запустить curl запросы через терминал!