Categorygithub.com/Enthreeka/go-service-notification
module
0.0.0-20231011195551-89a9ba0d11d0
Repository: https://github.com/enthreeka/go-service-notification.git
Documentation: pkg.go.dev

# README

Notification Service

Сервис в папке cmd/mail/mail.go занимается рассылкой сообщений на вшений севрис: https://probe.fbrq.cloud/v1/send/{id}

Сервис в папке cmd/server/server.go занимается главной бизнес логикой по сбору рассылок, созданию клиентов и тд

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

make docker-up
make migrate-up

Инструкция по использованию

КомандыОписание
make serverЗапуск главного сервиса
make mailЗапуск сервиса, которые осуществляет рассылки
make migrate-upСоздание миграций бд
make migrate-downУдаление всех таблиц в бд
make migrate-forceПрименяется в случае dirty бд
make docker-upПоднятие сервисов
make docker-downЗавершение работы сервисов
make docker-buildПересборка docker compose
make docker-clearУдаление неиспользуемых докер контейнеров

API

Client entity

POST - /api/client/create

Запрос:

{
  "client_property": {
    "operator_code": "750",
    "tag": "vip"
  },
  "phone_number": "79506137355",
  "time_zone": "Europe/Moscow"
}

Ответ:

Код ответасообщение
201-
400{"message": "string"}
500{"message": "string"}

POST - /api/client/update

Запрос:

{
  "id": "c93694e0-72ed-45c4-8a31-852c17e2c066",
  "phone_number":"71506117100",
  "client_property":{
    "tag":"vip",
    "operator_code":"800"
  },
  "time_zone":"Africa/Bangui"
}

Ответ:

Код ответасообщение
204-
400{"message": "string"}
500{"message": "string"}

Delete - /api/client/delete

Запрос:

{
  "id": "bb44bf9d-8892-493b-855d-808426033b44"
}

Ответ:

Код ответасообщение
204-
400{"message": "string"}
500{"message": "string"}

Message entity

Get - /api/message/group

Ответ:

Код ответасообщение
200map[string][]entity.MessageInfo
500{"message": "string"}

Get - /api/message/info/{id}

Запрос:

 {
  "id": "cba47385-e24b-40ec-9b19-ff3ffbdf3e4a"
}

Ответ:

Код ответасообщение
200map[string][]entity.MessageInfo
400{"message": "string"}
404{"message": "string"}
500{"message": "string"}

Notification entity

Post - api/notification/create

Запрос:

{
  "message":"Hello world",
  "create_at":"01:00 11.10.2023",
  "expires_at":"01:00 11.10.2023",
  "tags":[
    {
      "tag":"vip"
    },
    {
      "tag":"bomj"
    }
  ],
  "operator_codes":[
    {
      "operator_code":"121"
    },
    {
      "operator_code":"750"
    }
  ]
}

Ответ:

Код ответасообщение
201-
404{"message": "string"}
500{"message": "string"}

Post - api/notification/stat

Запрос:

{
  "create_at": "01:22 10.10.2023"
}

Ответ:

Код ответасообщение
200ниженаписанный json
404{"message": "string"}
500{"message": "string"}
[
  {
    "client_property": [
      {
        "operator_code": "string",
        "tag": "string"
      }
    ],
    "create_at": "string",
    "expires_at": "string",
    "id": "string",
    "id_client_properties": [
      "string"
    ],
    "message": "string"
  }
]

Post - api/notification/update

Запрос:

{
  "create_at": "string",
  "expires_at": "string",
  "message": "string"
}

Ответ:

Код ответасообщение
204-
400{"message": "string"}
500{"message": "string"}

Delete - api/notification/delete

Запрос:

{
  "create_at": "11:21 11.10.2023"
}

Ответ:

Код ответасообщение
204-
400{"message": "string"}
500{"message": "string"}

Дополнительные задания

  • подготовить docker-compose для запуска всех сервисов проекта одной командой

  • сделать так, чтобы по адресу /docs/ открывалась страница со Swagger UI и в нём отображалось описание разработанного API. Пример: https://petstore.swagger.io

Замечания по реализации:

  • При создании клиента с несуществующими атрибутами, они добавятся в таблицу client_properties;

  • При создании рассылки с created_at меньше времени сейчас и с expires_at меньше времени сейчас будет ошибка;

  • При создании рассылки с created_at меньше времени сейчас и с expires_at больше времени сейчас будет добавлена запись в таблицу signal и в таблице notification будет добавлен true к записи with_signal;

  • Записи в таблице signal удяляются после их селекта.

Swagger UI:

http://localhost:8080/docs

# Packages

No description provided by the author
Package docs Code generated by swaggo/swag.
No description provided by the author