Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Таблицы: // а где авторизация и аутентификация?
- -Операции(id отправителя, id получателя, статус операции, сумма перевода) // нужно еще время создании операции и время изменения операции, также стоит создать историю операций
- id операции: uuid
- id отправителя: uuid
- id получателя: uuid (при снятии/зачислении средств поле принимает значение NULL)
- статус операции: enum
- -успешно
- -в обработке
- -провалено
- тип операции: enum
- -перевод
- -снятие средств
- -зачисление средств
- сумма перевода: bigint
- -Баланс пользователя: (id пользователя, баланс)
- id пользователя: uuid
- баланс: bigint
- handlers:
- -зачисления/снятия средств:
- обрабатывает json, содержащий поля id операции, id пользователя, тип операции (зачисление/снятие средств/перевод), является, как основной, так и вспомогательной операцией.
- при снятии средств, проверяет возможность снятия (хватает ли денег на балансе для осуществления операции), если операция осуществима, в таблице 1
- изменяется статус операции на succesful, в противном случает - failed. При успешном статусе изменяет балансы пользователей.
- -перевод:
- обрабатывает json, содержащий поля id операции, id отправителя, id получателя. Создает строку в базе данных и создает статус "в обработке" для обработки балансов пользователей.
- -создание пользователя:
- обрабатывает json, содежащий поля id пользователя, первоначальный баланс(поле может быть пустым). создает пользователя в таблице 2. при наличии поля с первоначальным балансом
- создается строка в таблицу с операциями, как зачисление.
- Примечание: можно объединить две ручки в одном, обрабатывая два вхождения в базу данных, как один постгрес-запрос.
- openapi: 3.0.0
- info:
- version: 1.0.0
- servers: 'qwerty'
- title: ''
- paths: // зачем везде префикс /example?
- /example/operations:
- post:
- request:
- parameters: // нужен токен идемпотентности, так же нужно прикидывать токен сессии
- user_id:
- type: uuid
- operation_type: // при создании енама ты должен его полностью описать. Пример: https://pastebin.com/GukHEMgj
- type: enum
- example: 'sending'
- operation_status:
- type: enum // ^^ same
- example: 'succesful'
- summary: // это что? Сумма? Как будто неправильный нейминг
- type: int64
- responce: // нормальное опиши статусы
- '200':
- description: OK
- parameters: // а зачем мы это возвращаем? Подумай над тем, что мы должны возвращать
- user_id:
- type: uuid
- operation_type:
- type: enum
- example: 'sending'
- operation_status:
- type: enum
- example: 'succesful'
- summary:
- type: int64
- '400':
- description: BadRequest
- parameters:
- null: null
- '404':
- description: NotFound
- parameters:
- null: null
- /example/transfer:
- post:
- request:
- parameters: // ^^ same про токены
- sender_id:
- type: uuid
- recipient_id:
- type: uuid
- operation_type:
- type: enum
- example: 'sending'
- summary: // скорее value
- type: int64
- rescponce:
- '200':
- description: OK
- parameters: // ^^ same про параметры
- sender_id:
- type: uuid
- recipient_id:
- type: uuid
- operation_type:
- type: enum
- example: 'sending'
- summary:
- type: int64
- '400':
- description: BadRequest
- parameters:
- null: null
- '404':
- description: NotFound
- parameters:
- null: null
- /example/user: // это что? Зачем?
- post:
- request:
- parameters:
- username:
- type: string
- responce:
- '200':
- description: OK
- parameters:
- user_id:
- type: uuid
- '400':
- description: BadRequest
- parameters:
- null: null
- /example/balance/{user_id}: // нельзя так делать, любой пользователь может узнать баланс другого пользователя; делай по-другому
- get:
- request:
- parameters:
- user_id:
- type: uuid
- responce:
- '200':
- description: OK
- parameters:
- user_id:
- type: uuid
- balance:
- type: int64
- '400':
- description: BadRequest
- parameters:
- null: null
- '404':
- description: NotFound
- parameters:
- null: null
- Итог:
- 1) Везде добавь description и опиши, что он делает
- 2) Укажи везде какие поля required, а какие опциональны
- 3) Нет аутентификации и авторизации
- 4) Неправильная ручка получения баланса
- 5) !!!!!!!научись писать response!!!!!!!!!!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement