+
Skip to content

P1coFly/CarInfoEM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Реализовать каталог автомобилей.

Необходимо реализовать следующее:

  1. Выставить rest методы
    1. Получение данных с фильтрацией по всем полям и пагинацией
    2. Удаления по идентификатору
    3. Изменение одного или нескольких полей по идентификатору
    4. Добавления новых автомобилей в формате
{
    "regNums": ["X123XX150"] // массив гос. номеров
}
  1. При добавлении сделать запрос во внешнее АПИ, описанного сваггером (это описание некоторого внешнего АПИ, которого нет, но к которому надо обращаться. Реализованное, согласно описанию, АПИ будет использоваться при проверке)
openapi: 3.0.3
info:
  title: Car info
  version: 0.0.1
paths:
  /info:
    get:
      parameters:
        - name: regNum
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Car'
        '400':
          description: Bad request
        '500':
          description: Internal server error
components:
  schemas:
    Car:
      required:
        - regNum
        - mark
        - model
        - owner
      type: object
      properties:
        regNum:
          type: string
          example: X123XX150
        mark:
          type: string
          example: Lada
        model:
          type: string
          example: Vesta
        year:
          type: integer
          example: 2002
        owner:
          $ref: '#/components/schemas/People'
    People:
      required:
        - name
        - surname
      type: object
      properties:
        name:
          type: string
        surname:
          type: string
        patronymic:
          type: string
  1. Обогащенную информацию положить в БД postgres (структура БД должна быть создана путем миграций при старте сервиса)
  2. Покрыть код debug- и info-логами
  3. Вынести конфигурационные данные в .env-файл
  4. Сгенерировать сваггер на реализованное АПИ

Запуск проекта

Запуск через Docker-контейнер.

Необходимо ввести в терминал из корня проекта - docker-compose up --build -d
Будет развёрнуто 2 контейнера:

  1. db - СУБД PostgreSQL
  2. server - сам сервис

Запуск локально

Конфигурация БД

Сервис использует Postgresql, для успешной работы сервиса подтребуется:

  1. Подготовить бд к использованию
  2. Изменить параметры конфигурации в файле .env

Запуск сервиса

  1. Необходимо установить зависимости, для это из корня проекта надо выполнить команду - go mod download
  2. Скомпелировать выполняемый файл - go build -o <название_выполняемого_файла> ./cmd/main.go
  3. Запуск - ./<название_выполняемого_файла>

Проверка

Для удобной проверки была сгенирирована спецификация swagger (использовался подход code-first). Спецификация находится в директории docs. Также воспользоваться спецификацией можно по URI - /swagger/ (например: http://localhost:8080/swagger/)

Конфигурация

Для конфигурации проекта надо изменить файл .env Также по необходимости dockerfile и dockercompose

About

Test task from "Effective Mobile" on the Implementation of the REST API of the car catalog.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载