mirror of
https://github.com/3ybactuk/marketplace-go-service-project.git
synced 2025-10-30 14:03:45 +03:00
[hw-4] add postgres db
This commit is contained in:
@@ -17,3 +17,4 @@
|
||||
1. [Основы Go](./homework-1)
|
||||
2. [Тестирование в Go](./homework-2)
|
||||
3. [Межсервисное взаимодействие и основы эксплуатации](./homework-3)
|
||||
4. [Базы данных](./homework-4)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
### create normal order
|
||||
POST http://localhost:8084/order/create
|
||||
POST http://192.168.64.4:8084/order/create
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
@@ -19,14 +19,14 @@ Content-Type: application/json
|
||||
|
||||
|
||||
### get info, assert status="awaiting payment"
|
||||
GET http://localhost:8084/order/info?orderId=1
|
||||
GET http://192.168.64.4:8084/order/info?orderId=1
|
||||
Content-Type: application/json
|
||||
|
||||
### expected: 200 (OK) {"status":"awaiting payment","user":31337,"Items":[{"sku":1076963,"count":3},{"sku":135717466,"count":2}]}
|
||||
|
||||
|
||||
### pay order
|
||||
POST http://localhost:8084/order/pay
|
||||
POST http://192.168.64.4:8084/order/pay
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
@@ -36,14 +36,14 @@ Content-Type: application/json
|
||||
|
||||
|
||||
### check actual status is "payed"
|
||||
GET http://localhost:8084/order/info?orderId=1
|
||||
GET http://192.168.64.4:8084/order/info?orderId=1
|
||||
Content-Type: application/json
|
||||
|
||||
### expected: 200 (OK) {"status":"payed","user":31337,"Items":[{"sku":1076963,"count":3},{"sku":135717466,"count":2}]}
|
||||
|
||||
|
||||
### unable to cancel payed order
|
||||
POST http://localhost:8084/order/cancel
|
||||
POST http://192.168.64.4:8084/order/cancel
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
@@ -53,14 +53,14 @@ Content-Type: application/json
|
||||
|
||||
|
||||
### get unknown order
|
||||
GET http://localhost:8084/order/info?orderId=404
|
||||
GET http://192.168.64.4:8084/order/info?orderId=404
|
||||
Content-Type: application/json
|
||||
|
||||
### expected: 404 (Not Found) {"code": 5, ... }
|
||||
|
||||
|
||||
### cancel order not exists
|
||||
POST http://localhost:8084/order/cancel
|
||||
POST http://192.168.64.4:8084/order/cancel
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
@@ -70,7 +70,7 @@ Content-Type: application/json
|
||||
|
||||
|
||||
### create order with item that has no stocks info
|
||||
POST http://localhost:8084/order/create
|
||||
POST http://192.168.64.4:8084/order/create
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
@@ -86,13 +86,13 @@ Content-Type: application/json
|
||||
|
||||
|
||||
### check order status is failed (not necessary, because no orderId after creation if any fails)
|
||||
GET http://localhost:8084/order/info?orderId=2
|
||||
GET http://192.168.64.4:8084/order/info?orderId=2
|
||||
Content-Type: application/json
|
||||
|
||||
### expected: 200 (OK) {"status":"failed","userId":31337,"Items":[{"sku":404,"count":3}]}
|
||||
|
||||
### cancel failed order
|
||||
POST http://localhost:8084/order/cancel
|
||||
POST http://192.168.64.4:8084/order/cancel
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
@@ -102,21 +102,21 @@ Content-Type: application/json
|
||||
|
||||
|
||||
### stock info for unknown sku
|
||||
GET http://localhost:8084/stock/info?sku=404
|
||||
GET http://192.168.64.4:8084/stock/info?sku=404
|
||||
Content-Type: application/json
|
||||
|
||||
### expected: 404 Not Found {"code":5, ... }
|
||||
|
||||
|
||||
### stock info for normal sku
|
||||
GET http://localhost:8084/stock/info?sku=135717466
|
||||
GET http://192.168.64.4:8084/stock/info?sku=135717466
|
||||
Content-Type: application/json
|
||||
|
||||
### expected: 200 (OK) {"count":78}
|
||||
|
||||
|
||||
### create order with count for sku more than stock
|
||||
POST http://localhost:8084/order/create
|
||||
POST http://192.168.64.4:8084/order/create
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
@@ -131,13 +131,13 @@ Content-Type: application/json
|
||||
### expected: 400 (Bad Request) {"code":9, ... }
|
||||
|
||||
### no change in stock info after failed order creation
|
||||
GET http://localhost:8084/stock/info?sku=135717466
|
||||
GET http://192.168.64.4:8084/stock/info?sku=135717466
|
||||
Content-Type: application/json
|
||||
|
||||
### expected: 200 (OK) {"count":78}
|
||||
|
||||
### create normal order for cancellation
|
||||
POST http://localhost:8084/order/create
|
||||
POST http://192.168.64.4:8084/order/create
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
@@ -153,7 +153,7 @@ Content-Type: application/json
|
||||
|
||||
|
||||
### cancel order
|
||||
POST http://localhost:8084/order/cancel
|
||||
POST http://192.168.64.4:8084/order/cancel
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
@@ -163,14 +163,14 @@ Content-Type: application/json
|
||||
|
||||
|
||||
### check canceled order status
|
||||
GET http://localhost:8084/order/info?orderId=4
|
||||
GET http://192.168.64.4:8084/order/info?orderId=4
|
||||
Content-Type: application/json
|
||||
|
||||
### expected: {"status":"cancelled","user":31337,"Items":[{"sku":1076963,"count":2}]}
|
||||
|
||||
|
||||
### check stocks returns
|
||||
GET http://localhost:8084/stock/info?sku=135717466
|
||||
GET http://192.168.64.4:8084/stock/info?sku=135717466
|
||||
Content-Type: application/json
|
||||
|
||||
### expected: {"count":78}; 200 OK
|
||||
|
||||
33
docs/homework-4/README.md
Normal file
33
docs/homework-4/README.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# Домашнее задание по модулю "Базы данных"
|
||||
|
||||
Необходимо развернуть БД PostgreSQL для сервиса loms. Реализовать слой `Repository`, в котором будут походы в БД
|
||||
|
||||
## Основное задание
|
||||
|
||||
1. Для сервиса loms реализовать в слое `Repository` поход в БД
|
||||
2. Развернуть экземпляр БД PostgreSQL в отдельном контейнере
|
||||
3. Корректно использовать транзакции в операции создания заказа
|
||||
4. Реализовать автоматические миграции, накатывающие схему БД и/или тестовые данные
|
||||
5. SQL-код должен быть написан в виде raw. Без использования ORM или билдеров (можно sqlc)
|
||||
|
||||
## Дополнительное задание
|
||||
|
||||
1. Для БД поднять синхронную реплику. Балансировать read/write запросы между ними (write только в master, read в любую из реплик)
|
||||
2. Написать по одному интеграционному тесту на каждый SQL-запрос в репозитории сервиса loms. Не забыть накатывать тестовые данные в миграции, после прогона тестов - удалить данные из БД
|
||||
3. Реализовать SQL-запросы с помощью sqlc
|
||||
|
||||
## Автоматические проверки
|
||||
|
||||
Ваше решение должно проходить автоматические проверки:
|
||||
|
||||
- Компиляция
|
||||
- Линтер
|
||||
- Unit-тесты
|
||||
- Code coverage >40%
|
||||
- Автотесты
|
||||
|
||||
Прохождение автоматических проверок влияет на итоговую оценку за домашнюю работу.
|
||||
|
||||
### Дедлайны сдачи и проверки задания:
|
||||
|
||||
- 21 июня 23:59 (сдача) / 24 июня, 23:59 (проверка)
|
||||
Reference in New Issue
Block a user