RoTerentev / nestjs-practice

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Nest.js practice task

Технологии

На фреймворке Nest.js (https://nestjs.com/) реализовать HTTP REST сервер, работающий с СУБД PostgreSQL через ORM TypeOrm (https://typeorm.io).

Описание задачи

Есть охотники (hunter) и егеря(guide). Егеря используют систему, чтобы выложить свои предложения (offer) по организации охоты (hunt). Охотники используют систему, чтобы найти подходящее для себя предложение егеря.

Что нужно
  • авторизация по номеру телефона
  • эндпоинт /offers (предложения)
    • GET — список всех предложений
    • GET /:id — конкретное предложение по иденттификатору
    • POST — создание нового предложения (егерь создает новое предложение чтобы его видели охотники)
    • PUT /:id — обновление предложения
    • DELETE /:id — удаление предложения
  • эндпоинт /bookings (бронь)
    • GET /:id — получить информацию о брони
    • POST — забронировать охоту (охотник бронирует охоту соглашаясь с каким-то offer)
    • DELETE /:id — удалить бронь охоты
Модели
  • Offer (предложение)
    • id
    • dateStart — дата начала охоты
    • dateEnd — дата конца охоты
    • description — описание
    • latitude — широта
    • longitude — долгота
    • guideId — идентификатор егеря
    • dateCreated — дата создания
    • dateUpdated — дата обновления
  • Fowl (дичь)
    • id
    • name — название
    • class — вид (пушнина, копытные, птицы)
    • image — аватарка
    • dateCreated — дата создания
    • dateUpdated — дата обновления
  • Hunt (охота)
    • id
    • offerId — идентификатор предложения
    • fowlId — идентификатор дичи
    • dayPrice — стоимость за 1 день
    • licencePrice — стоимость лицензии
  • Booking (бронь)
    • id
    • huntId — идентификатор охоты
    • hunterId — идентификатор охотника
    • confirmed — подтверждена егерем или нет
    • dateCreated — дата создания
    • dateUpdated — дата обновления
  • User (пользователь)
    • id
    • type — тип пользователя (охотник, егерь, админ)
    • phone — номер телефона
    • email — адрес электронной почты
    • dateCreated — дата создания
    • dateUpdated — дата обновления

About


Languages

Language:TypeScript 100.0%