Skip to content

Тестовое задание в компанию Аксбит

Notifications You must be signed in to change notification settings

IraZimareva/test-axbit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание в компанию Аксбит

Стек технологий: Java8, Postgres, Liquibase, Hibernate, Spring Data, SpringBoot

Чтобы запустить приложение необходимо иметь установленную СУБД PostgreSQL и в файле application.properties изменить дефолтные креды к бд на свои. По умолчанию используется стандартный суперюзер postges, для которого необходимо создать бд library (CREATE DATABASE library WITH OWNER = postgres). После старта приложение работает, как обычный REST-сервис

Задача: Реализовать систему ввода и отображения информации об авторах книг посредством RESTfull API, включающую следующие сущности и их атрибуты:

  • Автор (Имя, Фамилия, Отчество, Дата рождения, Книги)
  • Книга (ISBN, Жанр)
  • Жанр (Название)

Требования:

  • Каждая таблица должна иметь первичный ключ типа Long, поля: дата создания, дата изменения. Общие поля из сущности должны быть вынесены в абстрактный класс. Технические поля должны быть запрещены для инициализации вручную или пользователем.
  • CRUD операции + фильтры на чтение (getAllPaged, getByFilters, getById)
  • Мягкое удаление сущностей по ид
  • Система должна иметь защиту на уровне БД от удаления авторов с книгами.
  • Создание БД через систему контроля миграций Liquibase или Flyway

Система имеет следующие endpoints:

  1. AuthorController
    GET /authors
    GET /authors/{id}
    GET /authors with different parameters (lastname, firstname, middlename, dateOfBirth). For example GET /authors?lastname=Толстой&firstname=Алексей
    POST /authors with Request body as JSON: { "lastname": "Пушкин", "firstname": "Александр", "middlename": "Сергеевич", "dateOfBirth": "1799-06-06" }
    DELETE /authors/{id}
    PATCH /authors/{id} with Request body as JSON: { "firstname": "Александр", "dateOfBirth": "1799-06-06" }

  2. BookController
    GET /books
    GET /books/{id}
    GET /books with different parameters (isbn, genre). For example GET /books?genre=Роман
    POST /books with Request body as JSON: { "isbn": "9780747532743", "genreId": 2 }
    DELETE /books/{id}
    PATCH /books/{id} with Request body as JSON: { "isbn": "9780439064873", "genre": 2 }
    PUT /books/{idAuthor} with parameter (author_id). For example GET /books/7?author_id=4
    PUT /books/ with parameter (author_id) and Request body as JSON: { "isbn": "9780132350884", "genreId": 2 }

  3. GenreController
    GET /genres
    GET /genres/{id}
    GET /genres with parameter (name). For example GET /genres?name=Детектив
    POST /genres with Request body as JSON: { "name": "Пьеса" }
    DELETE /genres/{id}
    PATCH /genres/{id} with Request body as JSON: { "name": "Повесть" }

About

Тестовое задание в компанию Аксбит

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages