generated from PenaSide/GolangTemplate
feat: oapi gen
This commit is contained in:
parent
35541bb9a3
commit
8bfd447d46
@ -4,6 +4,7 @@ run:
|
|||||||
- \.pb\.go$
|
- \.pb\.go$
|
||||||
- \.pb\.validate\.go$
|
- \.pb\.validate\.go$
|
||||||
- \.pb\.gw\.go$
|
- \.pb\.gw\.go$
|
||||||
|
- \.gen\.go$
|
||||||
skip-dirs:
|
skip-dirs:
|
||||||
- mocks
|
- mocks
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Package api provides primitives to interact with the openapi HTTP API.
|
// Package swagger provides primitives to interact with the openapi HTTP API.
|
||||||
//
|
//
|
||||||
// Code generated by github.com/deepmap/oapi-codegen version v1.12.4 DO NOT EDIT.
|
// Code generated by github.com/deepmap/oapi-codegen version v1.12.4 DO NOT EDIT.
|
||||||
package swagger
|
package swagger
|
||||||
@ -12,133 +12,12 @@ import (
|
|||||||
"net/url"
|
"net/url"
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/deepmap/oapi-codegen/pkg/runtime"
|
"github.com/deepmap/oapi-codegen/pkg/runtime"
|
||||||
"github.com/getkin/kin-openapi/openapi3"
|
"github.com/getkin/kin-openapi/openapi3"
|
||||||
"github.com/labstack/echo/v4"
|
"github.com/labstack/echo/v4"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Defines values for RecordType.
|
|
||||||
const (
|
|
||||||
BuyCart RecordType = "buyCart"
|
|
||||||
DeclinedPayment RecordType = "declinedPayment"
|
|
||||||
SubsriptionEnd RecordType = "subsriptionEnd"
|
|
||||||
SuccessfulPayment RecordType = "successfulPayment"
|
|
||||||
TimeoutPayment RecordType = "timeoutPayment"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Account defines model for Account.
|
|
||||||
type Account struct {
|
|
||||||
Id *string `json:"_id,omitempty"`
|
|
||||||
Cart *Cart `json:"cart,omitempty"`
|
|
||||||
IsDeleted *bool `json:"isDeleted,omitempty"`
|
|
||||||
UserId *string `json:"userId,omitempty"`
|
|
||||||
Wallet *Wallet `json:"wallet,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Cart defines model for Cart.
|
|
||||||
type Cart = []string
|
|
||||||
|
|
||||||
// Record defines model for Record.
|
|
||||||
type Record struct {
|
|
||||||
Comment *string `json:"comment,omitempty"`
|
|
||||||
CreatedAt *time.Time `json:"createdAt,omitempty"`
|
|
||||||
Id *string `json:"id,omitempty"`
|
|
||||||
|
|
||||||
// Subject я пока не могу предположить, какие будут фильтры по истории, поэтому предлагаю в это поле просто класть строку с json. ибо для каждого типа записи она своя.
|
|
||||||
Subject *string `json:"subject,omitempty"`
|
|
||||||
Type *RecordType `json:"type,omitempty"`
|
|
||||||
UserId *string `json:"userId,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// RecordType defines model for Record.Type.
|
|
||||||
type RecordType string
|
|
||||||
|
|
||||||
// Wallet defines model for Wallet.
|
|
||||||
type Wallet struct {
|
|
||||||
Cash *int64 `json:"cash,omitempty"`
|
|
||||||
Currency *string `json:"currency,omitempty"`
|
|
||||||
|
|
||||||
// Money деньги на счету в копейках. Чтобы при перессчётах не возникало денег изниоткуда. фиксируемся к одной валюте, она будет внутренней, никому её не покажем
|
|
||||||
Money *int64 `json:"money,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// PaginationAccountsParams defines parameters for PaginationAccounts.
|
|
||||||
type PaginationAccountsParams struct {
|
|
||||||
// P Номер страницы, начиная с 0
|
|
||||||
P *int `form:"p,omitempty" json:"p,omitempty"`
|
|
||||||
|
|
||||||
// S размер страницы
|
|
||||||
S *int `form:"s,omitempty" json:"s,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// RemoveFromCartParams defines parameters for RemoveFromCart.
|
|
||||||
type RemoveFromCartParams struct {
|
|
||||||
Id string `form:"id" json:"id"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add2cartJSONBody defines parameters for Add2cart.
|
|
||||||
type Add2cartJSONBody struct {
|
|
||||||
Id *string `json:"id,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// PayCartJSONBody defines parameters for PayCart.
|
|
||||||
type PayCartJSONBody struct {
|
|
||||||
// Id айдишник для того, чтобы указать сервису оплаты, какой юзер оплатил
|
|
||||||
Id *string `json:"id,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// UpdateCurrenciesJSONBody defines parameters for UpdateCurrencies.
|
|
||||||
type UpdateCurrenciesJSONBody = []string
|
|
||||||
|
|
||||||
// GetHistoryParams defines parameters for GetHistory.
|
|
||||||
type GetHistoryParams struct {
|
|
||||||
// P Номер страницы, начиная с 0
|
|
||||||
P *int `form:"p,omitempty" json:"p,omitempty"`
|
|
||||||
|
|
||||||
// S размер страницы
|
|
||||||
S *int `form:"s,omitempty" json:"s,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// ChangeCurrencyJSONBody defines parameters for ChangeCurrency.
|
|
||||||
type ChangeCurrencyJSONBody struct {
|
|
||||||
Currency *string `json:"currency,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// RequestMoneyJSONBody defines parameters for RequestMoney.
|
|
||||||
type RequestMoneyJSONBody struct {
|
|
||||||
Cash *int `json:"cash,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// PutMoneyJSONBody defines parameters for PutMoney.
|
|
||||||
type PutMoneyJSONBody struct {
|
|
||||||
Cash *int `json:"cash,omitempty"`
|
|
||||||
Currency *string `json:"currency,omitempty"`
|
|
||||||
Id *string `json:"id,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add2cartJSONRequestBody defines body for Add2cart for application/json ContentType.
|
|
||||||
type Add2cartJSONRequestBody Add2cartJSONBody
|
|
||||||
|
|
||||||
// PayCartJSONRequestBody defines body for PayCart for application/json ContentType.
|
|
||||||
type PayCartJSONRequestBody PayCartJSONBody
|
|
||||||
|
|
||||||
// UpdateCurrenciesJSONRequestBody defines body for UpdateCurrencies for application/json ContentType.
|
|
||||||
type UpdateCurrenciesJSONRequestBody = UpdateCurrenciesJSONBody
|
|
||||||
|
|
||||||
// Add2historyJSONRequestBody defines body for Add2history for application/json ContentType.
|
|
||||||
type Add2historyJSONRequestBody = Record
|
|
||||||
|
|
||||||
// ChangeCurrencyJSONRequestBody defines body for ChangeCurrency for application/json ContentType.
|
|
||||||
type ChangeCurrencyJSONRequestBody ChangeCurrencyJSONBody
|
|
||||||
|
|
||||||
// RequestMoneyJSONRequestBody defines body for RequestMoney for application/json ContentType.
|
|
||||||
type RequestMoneyJSONRequestBody RequestMoneyJSONBody
|
|
||||||
|
|
||||||
// PutMoneyJSONRequestBody defines body for PutMoney for application/json ContentType.
|
|
||||||
type PutMoneyJSONRequestBody PutMoneyJSONBody
|
|
||||||
|
|
||||||
// ServerInterface represents all server handlers.
|
// ServerInterface represents all server handlers.
|
||||||
type ServerInterface interface {
|
type ServerInterface interface {
|
||||||
// удалить собственный аккаунт
|
// удалить собственный аккаунт
|
||||||
@ -147,23 +26,23 @@ type ServerInterface interface {
|
|||||||
// Получение текущего аккаунта юзера
|
// Получение текущего аккаунта юзера
|
||||||
// (GET /account)
|
// (GET /account)
|
||||||
GetAccount(ctx echo.Context) error
|
GetAccount(ctx echo.Context) error
|
||||||
// создать новый аккаунт
|
// Создать новый аккаунт
|
||||||
// (POST /account)
|
// (POST /account)
|
||||||
AddAccount(ctx echo.Context) error
|
AddAccount(ctx echo.Context) error
|
||||||
// удалить аккаунт по айди
|
// Удалить аккаунт по айди
|
||||||
// (DELETE /account/{accountId})
|
// (DELETE /account/{accountId})
|
||||||
DeleteDirectAccount(ctx echo.Context, accountId string) error
|
DeleteDirectAccount(ctx echo.Context, accountId string) error
|
||||||
// получить аккаунт по айди
|
// Получить аккаунт по ID
|
||||||
// (GET /account/{accountId})
|
// (GET /account/{accountId})
|
||||||
GetDirectAccount(ctx echo.Context, accountId string) error
|
GetDirectAccount(ctx echo.Context, accountId string) error
|
||||||
// списко аккаунтов с пагинацией
|
// списко аккаунтов с пагинацией
|
||||||
// (GET /accounts)
|
// (GET /accounts)
|
||||||
PaginationAccounts(ctx echo.Context, params PaginationAccountsParams) error
|
PaginationAccounts(ctx echo.Context, params PaginationAccountsParams) error
|
||||||
// удаляем из корзины тариф
|
// Удаляем из корзины тариф
|
||||||
// (DELETE /cart)
|
// (DELETE /cart)
|
||||||
RemoveFromCart(ctx echo.Context, params RemoveFromCartParams) error
|
RemoveFromCart(ctx echo.Context, params RemoveFromCartParams) error
|
||||||
// добавляем в корзину тариф
|
// Добавляем в корзину тариф
|
||||||
// (PUT /cart)
|
// (PATCH /cart)
|
||||||
Add2cart(ctx echo.Context) error
|
Add2cart(ctx echo.Context) error
|
||||||
// оплатить козину
|
// оплатить козину
|
||||||
// (POST /cart/pay)
|
// (POST /cart/pay)
|
||||||
@ -172,22 +51,22 @@ type ServerInterface interface {
|
|||||||
// (GET /currencies)
|
// (GET /currencies)
|
||||||
GetCurrencies(ctx echo.Context) error
|
GetCurrencies(ctx echo.Context) error
|
||||||
// обновляет список одобренных валют
|
// обновляет список одобренных валют
|
||||||
// (PATCH /currencies)
|
// (PUT /currencies)
|
||||||
UpdateCurrencies(ctx echo.Context) error
|
UpdateCurrencies(ctx echo.Context) error
|
||||||
// получение лога событий связанных с аккаунтом
|
// Получение лога событий связанных с аккаунтом
|
||||||
// (GET /history)
|
// (GET /history)
|
||||||
GetHistory(ctx echo.Context, params GetHistoryParams) error
|
GetHistory(ctx echo.Context, params GetHistoryParams) error
|
||||||
// публикация лога в истории
|
// Публикация лога в истории
|
||||||
// (POST /history)
|
// (POST /history)
|
||||||
Add2history(ctx echo.Context) error
|
Add2history(ctx echo.Context) error
|
||||||
// изменить валюту кошелька
|
// Запрос на получение ссылки на оплату
|
||||||
|
// (GET /wallet)
|
||||||
|
RequestMoney(ctx echo.Context, params RequestMoneyParams) error
|
||||||
|
// Изменить валюту кошелька
|
||||||
// (PATCH /wallet)
|
// (PATCH /wallet)
|
||||||
ChangeCurrency(ctx echo.Context) error
|
ChangeCurrency(ctx echo.Context) error
|
||||||
// запрос на получение ссылки на оплату
|
// Зачислить деньги на кошелёк
|
||||||
// (POST /wallet)
|
// (POST /wallet)
|
||||||
RequestMoney(ctx echo.Context) error
|
|
||||||
// зачислить деньги на кошелёк
|
|
||||||
// (PUT /wallet)
|
|
||||||
PutMoney(ctx echo.Context) error
|
PutMoney(ctx echo.Context) error
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -200,6 +79,8 @@ type ServerInterfaceWrapper struct {
|
|||||||
func (w *ServerInterfaceWrapper) DeleteAccount(ctx echo.Context) error {
|
func (w *ServerInterfaceWrapper) DeleteAccount(ctx echo.Context) error {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
|
ctx.Set(BearerScopes, []string{""})
|
||||||
|
|
||||||
// Invoke the callback with all the unmarshalled arguments
|
// Invoke the callback with all the unmarshalled arguments
|
||||||
err = w.Handler.DeleteAccount(ctx)
|
err = w.Handler.DeleteAccount(ctx)
|
||||||
return err
|
return err
|
||||||
@ -209,6 +90,8 @@ func (w *ServerInterfaceWrapper) DeleteAccount(ctx echo.Context) error {
|
|||||||
func (w *ServerInterfaceWrapper) GetAccount(ctx echo.Context) error {
|
func (w *ServerInterfaceWrapper) GetAccount(ctx echo.Context) error {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
|
ctx.Set(BearerScopes, []string{""})
|
||||||
|
|
||||||
// Invoke the callback with all the unmarshalled arguments
|
// Invoke the callback with all the unmarshalled arguments
|
||||||
err = w.Handler.GetAccount(ctx)
|
err = w.Handler.GetAccount(ctx)
|
||||||
return err
|
return err
|
||||||
@ -218,6 +101,8 @@ func (w *ServerInterfaceWrapper) GetAccount(ctx echo.Context) error {
|
|||||||
func (w *ServerInterfaceWrapper) AddAccount(ctx echo.Context) error {
|
func (w *ServerInterfaceWrapper) AddAccount(ctx echo.Context) error {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
|
ctx.Set(BearerScopes, []string{""})
|
||||||
|
|
||||||
// Invoke the callback with all the unmarshalled arguments
|
// Invoke the callback with all the unmarshalled arguments
|
||||||
err = w.Handler.AddAccount(ctx)
|
err = w.Handler.AddAccount(ctx)
|
||||||
return err
|
return err
|
||||||
@ -234,6 +119,8 @@ func (w *ServerInterfaceWrapper) DeleteDirectAccount(ctx echo.Context) error {
|
|||||||
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter accountId: %s", err))
|
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter accountId: %s", err))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ctx.Set(BearerScopes, []string{""})
|
||||||
|
|
||||||
// Invoke the callback with all the unmarshalled arguments
|
// Invoke the callback with all the unmarshalled arguments
|
||||||
err = w.Handler.DeleteDirectAccount(ctx, accountId)
|
err = w.Handler.DeleteDirectAccount(ctx, accountId)
|
||||||
return err
|
return err
|
||||||
@ -250,6 +137,8 @@ func (w *ServerInterfaceWrapper) GetDirectAccount(ctx echo.Context) error {
|
|||||||
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter accountId: %s", err))
|
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter accountId: %s", err))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ctx.Set(BearerScopes, []string{""})
|
||||||
|
|
||||||
// Invoke the callback with all the unmarshalled arguments
|
// Invoke the callback with all the unmarshalled arguments
|
||||||
err = w.Handler.GetDirectAccount(ctx, accountId)
|
err = w.Handler.GetDirectAccount(ctx, accountId)
|
||||||
return err
|
return err
|
||||||
@ -261,18 +150,18 @@ func (w *ServerInterfaceWrapper) PaginationAccounts(ctx echo.Context) error {
|
|||||||
|
|
||||||
// Parameter object where we will unmarshal all parameters from the context
|
// Parameter object where we will unmarshal all parameters from the context
|
||||||
var params PaginationAccountsParams
|
var params PaginationAccountsParams
|
||||||
// ------------- Optional query parameter "p" -------------
|
// ------------- Optional query parameter "page" -------------
|
||||||
|
|
||||||
err = runtime.BindQueryParameter("form", false, false, "p", ctx.QueryParams(), ¶ms.P)
|
err = runtime.BindQueryParameter("form", false, false, "page", ctx.QueryParams(), ¶ms.Page)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter p: %s", err))
|
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter page: %s", err))
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------- Optional query parameter "s" -------------
|
// ------------- Optional query parameter "limit" -------------
|
||||||
|
|
||||||
err = runtime.BindQueryParameter("form", false, false, "s", ctx.QueryParams(), ¶ms.S)
|
err = runtime.BindQueryParameter("form", false, false, "limit", ctx.QueryParams(), ¶ms.Limit)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter s: %s", err))
|
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter limit: %s", err))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Invoke the callback with all the unmarshalled arguments
|
// Invoke the callback with all the unmarshalled arguments
|
||||||
@ -284,6 +173,8 @@ func (w *ServerInterfaceWrapper) PaginationAccounts(ctx echo.Context) error {
|
|||||||
func (w *ServerInterfaceWrapper) RemoveFromCart(ctx echo.Context) error {
|
func (w *ServerInterfaceWrapper) RemoveFromCart(ctx echo.Context) error {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
|
ctx.Set(BearerScopes, []string{""})
|
||||||
|
|
||||||
// Parameter object where we will unmarshal all parameters from the context
|
// Parameter object where we will unmarshal all parameters from the context
|
||||||
var params RemoveFromCartParams
|
var params RemoveFromCartParams
|
||||||
// ------------- Required query parameter "id" -------------
|
// ------------- Required query parameter "id" -------------
|
||||||
@ -302,6 +193,8 @@ func (w *ServerInterfaceWrapper) RemoveFromCart(ctx echo.Context) error {
|
|||||||
func (w *ServerInterfaceWrapper) Add2cart(ctx echo.Context) error {
|
func (w *ServerInterfaceWrapper) Add2cart(ctx echo.Context) error {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
|
ctx.Set(BearerScopes, []string{""})
|
||||||
|
|
||||||
// Invoke the callback with all the unmarshalled arguments
|
// Invoke the callback with all the unmarshalled arguments
|
||||||
err = w.Handler.Add2cart(ctx)
|
err = w.Handler.Add2cart(ctx)
|
||||||
return err
|
return err
|
||||||
@ -311,6 +204,8 @@ func (w *ServerInterfaceWrapper) Add2cart(ctx echo.Context) error {
|
|||||||
func (w *ServerInterfaceWrapper) PayCart(ctx echo.Context) error {
|
func (w *ServerInterfaceWrapper) PayCart(ctx echo.Context) error {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
|
ctx.Set(BearerScopes, []string{""})
|
||||||
|
|
||||||
// Invoke the callback with all the unmarshalled arguments
|
// Invoke the callback with all the unmarshalled arguments
|
||||||
err = w.Handler.PayCart(ctx)
|
err = w.Handler.PayCart(ctx)
|
||||||
return err
|
return err
|
||||||
@ -338,6 +233,8 @@ func (w *ServerInterfaceWrapper) UpdateCurrencies(ctx echo.Context) error {
|
|||||||
func (w *ServerInterfaceWrapper) GetHistory(ctx echo.Context) error {
|
func (w *ServerInterfaceWrapper) GetHistory(ctx echo.Context) error {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
|
ctx.Set(BearerScopes, []string{""})
|
||||||
|
|
||||||
// Parameter object where we will unmarshal all parameters from the context
|
// Parameter object where we will unmarshal all parameters from the context
|
||||||
var params GetHistoryParams
|
var params GetHistoryParams
|
||||||
// ------------- Optional query parameter "p" -------------
|
// ------------- Optional query parameter "p" -------------
|
||||||
@ -363,26 +260,41 @@ func (w *ServerInterfaceWrapper) GetHistory(ctx echo.Context) error {
|
|||||||
func (w *ServerInterfaceWrapper) Add2history(ctx echo.Context) error {
|
func (w *ServerInterfaceWrapper) Add2history(ctx echo.Context) error {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
|
ctx.Set(BearerScopes, []string{""})
|
||||||
|
|
||||||
// Invoke the callback with all the unmarshalled arguments
|
// Invoke the callback with all the unmarshalled arguments
|
||||||
err = w.Handler.Add2history(ctx)
|
err = w.Handler.Add2history(ctx)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// ChangeCurrency converts echo context to params.
|
|
||||||
func (w *ServerInterfaceWrapper) ChangeCurrency(ctx echo.Context) error {
|
|
||||||
var err error
|
|
||||||
|
|
||||||
// Invoke the callback with all the unmarshalled arguments
|
|
||||||
err = w.Handler.ChangeCurrency(ctx)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// RequestMoney converts echo context to params.
|
// RequestMoney converts echo context to params.
|
||||||
func (w *ServerInterfaceWrapper) RequestMoney(ctx echo.Context) error {
|
func (w *ServerInterfaceWrapper) RequestMoney(ctx echo.Context) error {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
|
ctx.Set(BearerScopes, []string{""})
|
||||||
|
|
||||||
|
// Parameter object where we will unmarshal all parameters from the context
|
||||||
|
var params RequestMoneyParams
|
||||||
|
// ------------- Required query parameter "cash" -------------
|
||||||
|
|
||||||
|
err = runtime.BindQueryParameter("form", true, true, "cash", ctx.QueryParams(), ¶ms.Cash)
|
||||||
|
if err != nil {
|
||||||
|
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter cash: %s", err))
|
||||||
|
}
|
||||||
|
|
||||||
// Invoke the callback with all the unmarshalled arguments
|
// Invoke the callback with all the unmarshalled arguments
|
||||||
err = w.Handler.RequestMoney(ctx)
|
err = w.Handler.RequestMoney(ctx, params)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ChangeCurrency converts echo context to params.
|
||||||
|
func (w *ServerInterfaceWrapper) ChangeCurrency(ctx echo.Context) error {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
ctx.Set(BearerScopes, []string{""})
|
||||||
|
|
||||||
|
// Invoke the callback with all the unmarshalled arguments
|
||||||
|
err = w.Handler.ChangeCurrency(ctx)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -390,6 +302,8 @@ func (w *ServerInterfaceWrapper) RequestMoney(ctx echo.Context) error {
|
|||||||
func (w *ServerInterfaceWrapper) PutMoney(ctx echo.Context) error {
|
func (w *ServerInterfaceWrapper) PutMoney(ctx echo.Context) error {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
|
ctx.Set(BearerScopes, []string{""})
|
||||||
|
|
||||||
// Invoke the callback with all the unmarshalled arguments
|
// Invoke the callback with all the unmarshalled arguments
|
||||||
err = w.Handler.PutMoney(ctx)
|
err = w.Handler.PutMoney(ctx)
|
||||||
return err
|
return err
|
||||||
@ -430,73 +344,79 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL
|
|||||||
router.GET(baseURL+"/account/:accountId", wrapper.GetDirectAccount)
|
router.GET(baseURL+"/account/:accountId", wrapper.GetDirectAccount)
|
||||||
router.GET(baseURL+"/accounts", wrapper.PaginationAccounts)
|
router.GET(baseURL+"/accounts", wrapper.PaginationAccounts)
|
||||||
router.DELETE(baseURL+"/cart", wrapper.RemoveFromCart)
|
router.DELETE(baseURL+"/cart", wrapper.RemoveFromCart)
|
||||||
router.PUT(baseURL+"/cart", wrapper.Add2cart)
|
router.PATCH(baseURL+"/cart", wrapper.Add2cart)
|
||||||
router.POST(baseURL+"/cart/pay", wrapper.PayCart)
|
router.POST(baseURL+"/cart/pay", wrapper.PayCart)
|
||||||
router.GET(baseURL+"/currencies", wrapper.GetCurrencies)
|
router.GET(baseURL+"/currencies", wrapper.GetCurrencies)
|
||||||
router.PATCH(baseURL+"/currencies", wrapper.UpdateCurrencies)
|
router.PUT(baseURL+"/currencies", wrapper.UpdateCurrencies)
|
||||||
router.GET(baseURL+"/history", wrapper.GetHistory)
|
router.GET(baseURL+"/history", wrapper.GetHistory)
|
||||||
router.POST(baseURL+"/history", wrapper.Add2history)
|
router.POST(baseURL+"/history", wrapper.Add2history)
|
||||||
|
router.GET(baseURL+"/wallet", wrapper.RequestMoney)
|
||||||
router.PATCH(baseURL+"/wallet", wrapper.ChangeCurrency)
|
router.PATCH(baseURL+"/wallet", wrapper.ChangeCurrency)
|
||||||
router.POST(baseURL+"/wallet", wrapper.RequestMoney)
|
router.POST(baseURL+"/wallet", wrapper.PutMoney)
|
||||||
router.PUT(baseURL+"/wallet", wrapper.PutMoney)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Base64 encoded, gzipped, json marshaled Swagger object
|
// Base64 encoded, gzipped, json marshaled Swagger object
|
||||||
var swaggerSpec = []string{
|
var swaggerSpec = []string{
|
||||||
|
|
||||||
"H4sIAAAAAAAC/+xb3W4bx/V/lcH+/xcJSlFk4tax7hy5H7koELgwctEaxZocSpuSu8zuMq0qCBBF105A",
|
"H4sIAAAAAAAC/+xbW28bxxX+K4NtHxKUpkhHiRO+OXbSukCBIKmRB0doVuRQ2oTcZXaXSVSDgCi6dgIp",
|
||||||
"2aofwC3Qm96uKK61IrnUK5x5o+Kcmf0eSrIkf6ToTUztzs6cOed3fudjJrtGy+n1HZvbvmds7Bpea5v3",
|
"Vly0SB5qu2kK9LE0JVor3vQXzvyj4pyZ3Z29UKYuseUmLzZFzs6cOZfvXPe2UXWaLcfmtu8ZlduGV13n",
|
||||||
"TPp5v9VyBraPP/uu0+eub3F68Uerjf/wv5i9fpcbG8YXjbudZufu3SetzhfNVvvuvXt3Pr/XaDaNmuHv",
|
"TZM+Xq1Wnbbt48eW67S461ucfviTVcP/+Jdms9XgRsV4s3SlXq5fubJarb9ZrtauvPXW8mtvlcplo2D4",
|
||||||
"9HGE57uWvWXs1YyW6dKU/+/yjrFh/N96tv66Wnx9E8fs1QzLe8C73OfF5Tpm1+PpzE8cp8tNG4cPPO5+",
|
"Gy1c4fmuZa8ZnYJRNV0/8fSt4x6f89NlY6VgWD5vEj2ZM9QXpuuaG3Smy02f167SwXXHbZq+UTFqps8v",
|
||||||
"dQPR/mx2u/xS4b6Ro/b20hmcJ9/yFgm8qTZn+bznFQT5/UWSXOfVY80G1APTdc0d/Pshbzluu2rAltPr",
|
"+VaT55FZ4w3u8+Q962bD49HaVcdpcNPWFp9k/3ardlKS2h53b5yB81+YjQan837t8rpRMX61FMt+SQl+",
|
||||||
"cWnZTFPiiIkX4gCWTAxhCiHMIYA5g3NY4lNYiBETz2nAnc+0lnW56fP2fZq347g90zc2jLbp8zXf6nHd",
|
"6UO5qtMpGC7/rG25yIRbJPOIBCXFaMuYXTqv9UuuRPQ4q5/wqo/0vOO6jpvVrib3PHONJ++JBzPb8Vnd",
|
||||||
"JzcBkjeQat/YNdrca7lW37ccW24EhYYZBAxiCBksYAknYsTgXOxDCFN6PYclvIFIHIjDGsPBMIMIRx+L",
|
"adu1vNt5vum3vWtOLfnkcmm5EPPXsv03luOnLdvna9zNXLaKuxQiSvKI/53l+Y67kSW/6jSb3E6quCF2",
|
||||||
"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",
|
||||||
"pr/3eO8/AQAA//8nG+8kJDMAAA==",
|
"oKLfEIavqoOlsQ9UUS/QiMWdUkPNTPZmBzCToKGtLeqLH2DoPKVaZVj3EnfpFaGZLK2oaJ50OVHESMy+",
|
||||||
|
"qZltQpwpJbiHhLZRtSma9VY1I5LCfeoGH4bLCAHT78VIkFEFL4lDJJYx6c9mNPIVvkcgX0YISKjDeAqV",
|
||||||
|
"LjWVrxlk8PDaummvhXnfxrlVh/JftpAJ2AXuH6TDEtFVEzV6CocKkFI5GeCWnttAatZgpzIPTVjtz6rV",
|
||||||
|
"8Tg3ANhRnNF6ICdA+O9l/khOX1Zmj4GdOWCeP5VLWJ7upCTdh8qtDlSgEeUiI4YBBZOh6aZ0KxkXEOJk",
|
||||||
|
"WCxXP9BbQdqrQHmXSJWN21GsdE7IkH2DKzfoKZwEQ87/FbSLURCeyXfCptTMiTQg0eDop1zaRYai54ED",
|
||||||
|
"3yY7Zmew/u9kgC/bSmHEk3r9L8X7HAgg3ZJfZlAgPaqdnIY0cmpaqpklenAUBl6aX9JyjtB2cvbQegpk",
|
||||||
|
"8FGa4vrzlus3VMvVBXMe0DJasRs/ECa0nZXO/wIAAP//vkWxS/xAAAA=",
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetSwagger returns the content of the embedded swagger specification file
|
// GetSwagger returns the content of the embedded swagger specification file
|
4
internal/swagger/api.go
Normal file
4
internal/swagger/api.go
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
package swagger
|
||||||
|
|
||||||
|
//go:generate oapi-codegen --config api.yaml ../../openapi.yaml
|
||||||
|
//go:generate oapi-codegen --config models.yaml ../../openapi.yaml
|
6
internal/swagger/api.yaml
Normal file
6
internal/swagger/api.yaml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
output: api.gen.go
|
||||||
|
package: swagger
|
||||||
|
generate:
|
||||||
|
echo-server: true
|
||||||
|
models: false
|
||||||
|
embedded-spec: true
|
@ -1,3 +0,0 @@
|
|||||||
package swagger
|
|
||||||
|
|
||||||
//go:generate oapi-codegen --config oapi-codegen.yaml ../../openapi.yaml
|
|
139
internal/swagger/models.gen.go
Normal file
139
internal/swagger/models.gen.go
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
// Package swagger provides primitives to interact with the openapi HTTP API.
|
||||||
|
//
|
||||||
|
// Code generated by github.com/deepmap/oapi-codegen version v1.12.4 DO NOT EDIT.
|
||||||
|
package swagger
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
BearerScopes = "Bearer.Scopes"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Defines values for HistoryType.
|
||||||
|
const (
|
||||||
|
BuyCart HistoryType = "buyCart"
|
||||||
|
DeclinedPayment HistoryType = "declinedPayment"
|
||||||
|
SubsriptionEnd HistoryType = "subsriptionEnd"
|
||||||
|
SuccessfulPayment HistoryType = "successfulPayment"
|
||||||
|
TimeoutPayment HistoryType = "timeoutPayment"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Account defines model for Account.
|
||||||
|
type Account struct {
|
||||||
|
Id string `json:"_id"`
|
||||||
|
Cart []string `json:"cart"`
|
||||||
|
CreatedAt time.Time `json:"createdAt"`
|
||||||
|
Deleted bool `json:"deleted"`
|
||||||
|
DeletedAt *time.Time `json:"deletedAt,omitempty"`
|
||||||
|
UpdatedAt time.Time `json:"updatedAt"`
|
||||||
|
UserId string `json:"userId"`
|
||||||
|
Wallet Wallet `json:"wallet"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Error defines model for Error.
|
||||||
|
type Error struct {
|
||||||
|
Message string `json:"message"`
|
||||||
|
StatusCode *int64 `json:"statusCode,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// History defines model for History.
|
||||||
|
type History struct {
|
||||||
|
Comment *string `json:"comment,omitempty"`
|
||||||
|
CreatedAt *time.Time `json:"createdAt,omitempty"`
|
||||||
|
Deleted *bool `json:"deleted,omitempty"`
|
||||||
|
DeletedAt *time.Time `json:"deletedAt,omitempty"`
|
||||||
|
Id *string `json:"id,omitempty"`
|
||||||
|
|
||||||
|
// Subject Я пока не могу предположить, какие будут фильтры по истории, поэтому предлагаю в это поле просто класть строку с json. ибо для каждого типа записи она своя.
|
||||||
|
Subject *string `json:"subject,omitempty"`
|
||||||
|
Type *HistoryType `json:"type,omitempty"`
|
||||||
|
UpdatedAt *time.Time `json:"updatedAt,omitempty"`
|
||||||
|
UserId *string `json:"userId,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// HistoryType defines model for History.Type.
|
||||||
|
type HistoryType string
|
||||||
|
|
||||||
|
// Wallet defines model for Wallet.
|
||||||
|
type Wallet struct {
|
||||||
|
Cash *int64 `json:"cash,omitempty"`
|
||||||
|
Currency *string `json:"currency,omitempty"`
|
||||||
|
|
||||||
|
// Money деньги на счету в копейках. Чтобы при перессчётах не возникало денег изниоткуда. фиксируемся к одной валюте, она будет внутренней, никому её не покажем
|
||||||
|
Money *int64 `json:"money,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// PaginationAccountsParams defines parameters for PaginationAccounts.
|
||||||
|
type PaginationAccountsParams struct {
|
||||||
|
// Page Номер страницы, начиная с 1
|
||||||
|
Page *int `form:"page,omitempty" json:"page,omitempty"`
|
||||||
|
|
||||||
|
// Limit размер страницы
|
||||||
|
Limit *int `form:"limit,omitempty" json:"limit,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveFromCartParams defines parameters for RemoveFromCart.
|
||||||
|
type RemoveFromCartParams struct {
|
||||||
|
Id string `form:"id" json:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add2cartJSONBody defines parameters for Add2cart.
|
||||||
|
type Add2cartJSONBody struct {
|
||||||
|
Id *string `json:"id,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// PayCartJSONBody defines parameters for PayCart.
|
||||||
|
type PayCartJSONBody struct {
|
||||||
|
// UserId ID для того, чтобы указать сервису оплаты, какой юзер оплатил
|
||||||
|
UserId *string `json:"userId,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateCurrenciesJSONBody defines parameters for UpdateCurrencies.
|
||||||
|
type UpdateCurrenciesJSONBody = []string
|
||||||
|
|
||||||
|
// GetHistoryParams defines parameters for GetHistory.
|
||||||
|
type GetHistoryParams struct {
|
||||||
|
// P Номер страницы, начиная с 1
|
||||||
|
P *int `form:"p,omitempty" json:"p,omitempty"`
|
||||||
|
|
||||||
|
// S Размер страницы
|
||||||
|
S *int `form:"s,omitempty" json:"s,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// RequestMoneyParams defines parameters for RequestMoney.
|
||||||
|
type RequestMoneyParams struct {
|
||||||
|
// Cash Номер страницы, начиная с 1
|
||||||
|
Cash int `form:"cash" json:"cash"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ChangeCurrencyJSONBody defines parameters for ChangeCurrency.
|
||||||
|
type ChangeCurrencyJSONBody struct {
|
||||||
|
Currency *string `json:"currency,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// PutMoneyJSONBody defines parameters for PutMoney.
|
||||||
|
type PutMoneyJSONBody struct {
|
||||||
|
Cash *int `json:"cash,omitempty"`
|
||||||
|
Currency *string `json:"currency,omitempty"`
|
||||||
|
UserId *string `json:"userId,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add2cartJSONRequestBody defines body for Add2cart for application/json ContentType.
|
||||||
|
type Add2cartJSONRequestBody Add2cartJSONBody
|
||||||
|
|
||||||
|
// PayCartJSONRequestBody defines body for PayCart for application/json ContentType.
|
||||||
|
type PayCartJSONRequestBody PayCartJSONBody
|
||||||
|
|
||||||
|
// UpdateCurrenciesJSONRequestBody defines body for UpdateCurrencies for application/json ContentType.
|
||||||
|
type UpdateCurrenciesJSONRequestBody = UpdateCurrenciesJSONBody
|
||||||
|
|
||||||
|
// Add2historyJSONRequestBody defines body for Add2history for application/json ContentType.
|
||||||
|
type Add2historyJSONRequestBody = History
|
||||||
|
|
||||||
|
// ChangeCurrencyJSONRequestBody defines body for ChangeCurrency for application/json ContentType.
|
||||||
|
type ChangeCurrencyJSONRequestBody ChangeCurrencyJSONBody
|
||||||
|
|
||||||
|
// PutMoneyJSONRequestBody defines body for PutMoney for application/json ContentType.
|
||||||
|
type PutMoneyJSONRequestBody PutMoneyJSONBody
|
4
internal/swagger/models.yaml
Normal file
4
internal/swagger/models.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
output: models.gen.go
|
||||||
|
package: swagger
|
||||||
|
generate:
|
||||||
|
models: true
|
@ -1,7 +0,0 @@
|
|||||||
output: server.gen.go
|
|
||||||
package: swagger
|
|
||||||
generate:
|
|
||||||
# other servers are available!
|
|
||||||
echo-server: true
|
|
||||||
models: true
|
|
||||||
embedded-spec: true
|
|
389
openapi.yaml
389
openapi.yaml
@ -4,6 +4,7 @@ info:
|
|||||||
description: |-
|
description: |-
|
||||||
Область ответственности сервиса - предоставление пользователю функционала корзины и кошелька.
|
Область ответственности сервиса - предоставление пользователю функционала корзины и кошелька.
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
|
|
||||||
tags:
|
tags:
|
||||||
- name: account
|
- name: account
|
||||||
description: аккаунт
|
description: аккаунт
|
||||||
@ -15,14 +16,17 @@ tags:
|
|||||||
description: кошелёк
|
description: кошелёк
|
||||||
- name: history
|
- name: history
|
||||||
description: история
|
description: история
|
||||||
|
|
||||||
paths:
|
paths:
|
||||||
/account:
|
/account:
|
||||||
get:
|
get:
|
||||||
tags:
|
tags:
|
||||||
- account
|
- account
|
||||||
summary: Получение текущего аккаунта юзера
|
summary: Получение текущего аккаунта юзера
|
||||||
description: используется при заходе юзера в систему. Айдишник юзера получает из токена, который передаётся в заголовке authorization
|
description: Используется при заходе юзера в систему. Айдишник юзера получает из токена, который передаётся в заголовке authorization
|
||||||
operationId: getAccount
|
operationId: getAccount
|
||||||
|
security:
|
||||||
|
- Bearer: []
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: успешное получение
|
description: успешное получение
|
||||||
@ -32,34 +36,59 @@ paths:
|
|||||||
$ref: '#/components/schemas/Account'
|
$ref: '#/components/schemas/Account'
|
||||||
'401':
|
'401':
|
||||||
description: Неавторизован
|
description: Неавторизован
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Error'
|
||||||
'404':
|
'404':
|
||||||
description: Такого пользователя нет
|
description: Такого пользователя нет
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Error'
|
||||||
post:
|
post:
|
||||||
tags:
|
tags:
|
||||||
- account
|
- account
|
||||||
summary: создать новый аккаунт
|
summary: Создать новый аккаунт
|
||||||
description: создаёт новый аккаунт для юзера, если такого ещё не было
|
description: Создаёт новый аккаунт для юзера, если такого ещё не было
|
||||||
operationId: addAccount
|
operationId: addAccount
|
||||||
|
security:
|
||||||
|
- Bearer: []
|
||||||
responses:
|
responses:
|
||||||
'201':
|
'200':
|
||||||
description: успешное созание аккаунта
|
description: успешное создание аккаунта
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/Account'
|
$ref: '#/components/schemas/Account'
|
||||||
'401':
|
'401':
|
||||||
description: Неавторизован
|
description: Неавторизован
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Error'
|
||||||
delete:
|
delete:
|
||||||
tags:
|
tags:
|
||||||
- account
|
- account
|
||||||
summary: удалить собственный аккаунт
|
summary: удалить собственный аккаунт
|
||||||
description: помечает аккаунт удалённым
|
description: помечает аккаунт удалённым
|
||||||
operationId: deleteAccount
|
operationId: deleteAccount
|
||||||
|
security:
|
||||||
|
- Bearer: []
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: успешное удаление аккаунта
|
description: успешное удаление аккаунта
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Account'
|
||||||
'401':
|
'401':
|
||||||
description: Неавторизован
|
description: Неавторизован
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Error'
|
||||||
|
|
||||||
/accounts:
|
/accounts:
|
||||||
get:
|
get:
|
||||||
tags:
|
tags:
|
||||||
@ -68,22 +97,22 @@ paths:
|
|||||||
description: получает список аккаунтов на указанной странице + общее количество аккаунтов
|
description: получает список аккаунтов на указанной странице + общее количество аккаунтов
|
||||||
operationId: paginationAccounts
|
operationId: paginationAccounts
|
||||||
parameters:
|
parameters:
|
||||||
- name: p
|
- name: page
|
||||||
in: query
|
in: query
|
||||||
description: Номер страницы, начиная с 0
|
description: Номер страницы, начиная с 1
|
||||||
required: false
|
required: false
|
||||||
explode: false
|
explode: false
|
||||||
schema:
|
schema:
|
||||||
type: integer
|
type: integer
|
||||||
default: 0
|
default: 1
|
||||||
- name: s
|
- name: limit
|
||||||
in: query
|
in: query
|
||||||
description: размер страницы
|
description: размер страницы
|
||||||
required: false
|
required: false
|
||||||
explode: false
|
explode: false
|
||||||
schema:
|
schema:
|
||||||
type: integer
|
type: integer
|
||||||
default: 10
|
default: 100
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: успешное получение страницы аккаунтов
|
description: успешное получение страницы аккаунтов
|
||||||
@ -92,60 +121,84 @@ paths:
|
|||||||
schema:
|
schema:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
count:
|
totalPages:
|
||||||
type: integer
|
type: integer
|
||||||
example: 11
|
example: 11
|
||||||
items:
|
accounts:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: "#/components/schemas/Account"
|
$ref: "#/components/schemas/Account"
|
||||||
'401':
|
|
||||||
description: Неавторизован
|
|
||||||
/account/{accountId}:
|
/account/{accountId}:
|
||||||
get:
|
get:
|
||||||
tags:
|
tags:
|
||||||
- account
|
- account
|
||||||
summary: получить аккаунт по айди
|
summary: Получить аккаунт по ID
|
||||||
description: метод необходимый в основном только менеджерам, для получения данных о клиенте
|
description: Метод необходимый в основном только менеджерам, для получения данных о клиенте
|
||||||
|
security:
|
||||||
|
- Bearer: []
|
||||||
operationId: getDirectAccount
|
operationId: getDirectAccount
|
||||||
parameters:
|
parameters:
|
||||||
- name: accountId
|
- name: accountId
|
||||||
in: path
|
in: path
|
||||||
description: айдишник аккаунта
|
description: id аккаунта
|
||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: успешное получение аккаунта
|
description: Успешное получение аккаунта
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/Account'
|
$ref: '#/components/schemas/Account'
|
||||||
'401':
|
'401':
|
||||||
description: Неавторизован
|
description: Неавторизован
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Error'
|
||||||
'404':
|
'404':
|
||||||
description: Нет такого пользователя
|
description: Нет такого пользователя
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Error'
|
||||||
delete:
|
delete:
|
||||||
tags:
|
tags:
|
||||||
- account
|
- account
|
||||||
summary: удалить аккаунт по айди
|
summary: Удалить аккаунт по айди
|
||||||
description: метод необходимый в основном только менеджерам, для удаления клиента
|
description: Метод необходимый в основном только менеджерам, для удаления клиента
|
||||||
operationId: deleteDirectAccount
|
operationId: deleteDirectAccount
|
||||||
|
security:
|
||||||
|
- Bearer: []
|
||||||
parameters:
|
parameters:
|
||||||
- name: accountId
|
- name: accountId
|
||||||
in: path
|
in: path
|
||||||
description: айдишник аккаунта
|
description: ID аккаунта
|
||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: успешное удаление аккаунта
|
description: Успешное удаление аккаунта
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Account'
|
||||||
'401':
|
'401':
|
||||||
description: Неавторизован
|
description: Неавторизован
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Error'
|
||||||
'404':
|
'404':
|
||||||
description: Нет такого пользователя
|
description: Нет такого пользователя
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Error'
|
||||||
|
|
||||||
/currencies:
|
/currencies:
|
||||||
get:
|
get:
|
||||||
tags:
|
tags:
|
||||||
@ -165,7 +218,7 @@ paths:
|
|||||||
- "CAD"
|
- "CAD"
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
patch:
|
put:
|
||||||
tags:
|
tags:
|
||||||
- currency
|
- currency
|
||||||
summary: обновляет список одобренных валют
|
summary: обновляет список одобренных валют
|
||||||
@ -182,15 +235,30 @@ paths:
|
|||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
responses:
|
responses:
|
||||||
|
'200':
|
||||||
|
description: успешное обновление списка валют
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
example:
|
||||||
|
- "RUB"
|
||||||
|
- "USD"
|
||||||
|
- "CAD"
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
'401':
|
'401':
|
||||||
description: Uanuthorized
|
description: Uanuthorized
|
||||||
|
|
||||||
/cart:
|
/cart:
|
||||||
put:
|
patch:
|
||||||
tags:
|
tags:
|
||||||
- cart
|
- cart
|
||||||
summary: добавляем в корзину тариф
|
summary: Добавляем в корзину тариф
|
||||||
description: 'необходимо проверить, что такой тариф существует'
|
description: Необходимо проверить, что такой тариф существует
|
||||||
operationId: add2cart
|
operationId: add2cart
|
||||||
|
security:
|
||||||
|
- Bearer: []
|
||||||
requestBody:
|
requestBody:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
@ -202,16 +270,30 @@ paths:
|
|||||||
example: "807f1f77bcf81cd799439011"
|
example: "807f1f77bcf81cd799439011"
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: добавлено в корзину
|
description: Добавлено в корзину
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Account'
|
||||||
'401':
|
'401':
|
||||||
description: неавторизован
|
description: Неавторизован
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Error'
|
||||||
'404':
|
'404':
|
||||||
description: не найден такой тариф
|
description: Не найден такой тариф
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Error'
|
||||||
delete:
|
delete:
|
||||||
tags:
|
tags:
|
||||||
- cart
|
- cart
|
||||||
summary: удаляем из корзины тариф
|
summary: Удаляем из корзины тариф
|
||||||
operationId: removeFromCart
|
operationId: removeFromCart
|
||||||
|
security:
|
||||||
|
- Bearer: []
|
||||||
parameters:
|
parameters:
|
||||||
- name: id
|
- name: id
|
||||||
in: query
|
in: query
|
||||||
@ -221,30 +303,50 @@ paths:
|
|||||||
example: "807f1f77bcf81cd799439011"
|
example: "807f1f77bcf81cd799439011"
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: удалено из корзины
|
description: Удалено из корзины
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Account'
|
||||||
'401':
|
'401':
|
||||||
description: неавторизован
|
description: Неавторизован
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Error'
|
||||||
'404':
|
'404':
|
||||||
description: не найден такой тариф
|
description: Не найден такой тариф
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Error'
|
||||||
|
|
||||||
/cart/pay:
|
/cart/pay:
|
||||||
post:
|
post:
|
||||||
tags:
|
tags:
|
||||||
- cart
|
- cart
|
||||||
summary: оплатить козину
|
summary: оплатить козину
|
||||||
description: "- очевидно нужен воркер или очередь(место где можно потрогать кафку), которая будет слать запросы в конечные сервисы для добавления привилегий в аккаунт пользователя\n
|
|
||||||
- в случае если денег в кошельке достаточно - отправить в воркер или очередь задачи на разослать конкретным сервисам добавление привилегий\n
|
|
||||||
- если денег недостаточно, получить ссылку на оплату у сервиса платёжки и вернуть её. в случае оплаты, повторить вызов этого метода\n
|
|
||||||
- очистить корзину"
|
|
||||||
operationId: payCart
|
operationId: payCart
|
||||||
|
security:
|
||||||
|
- Bearer: []
|
||||||
|
description: >-
|
||||||
|
- Очевидно нужен воркер или очередь(место где можно потрогать кафку), которая будет слать запросы в конечные сервисы для добавления привилегий в аккаунт пользователя
|
||||||
|
|
||||||
|
- В случае если денег в кошельке достаточно - отправить в воркер или очередь задачи на разослать конкретным сервисам добавление привилегий
|
||||||
|
|
||||||
|
- Если денег недостаточно, получить ссылку на оплату у сервиса платёжки и вернуть её. в случае оплаты, повторить вызов этого метода
|
||||||
|
|
||||||
|
- Очистить корзину
|
||||||
|
|
||||||
requestBody:
|
requestBody:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
id:
|
userId:
|
||||||
type: string
|
type: string
|
||||||
description: айдишник для того, чтобы указать сервису оплаты, какой юзер оплатил
|
description: ID для того, чтобы указать сервису оплаты, какой юзер оплатил
|
||||||
example: "807f1f77bcf81cd799439011"
|
example: "807f1f77bcf81cd799439011"
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
@ -255,16 +357,28 @@ paths:
|
|||||||
$ref: '#/components/schemas/Account'
|
$ref: '#/components/schemas/Account'
|
||||||
'401':
|
'401':
|
||||||
description: Неавторизован
|
description: Неавторизован
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Error'
|
||||||
|
|
||||||
/wallet:
|
/wallet:
|
||||||
patch:
|
patch:
|
||||||
tags:
|
tags:
|
||||||
- wallet
|
- wallet
|
||||||
summary: изменить валюту кошелька
|
summary: Изменить валюту кошелька
|
||||||
description: "при запросе:\n
|
|
||||||
- отвалидировать, что такая валюта одобрена \n
|
|
||||||
- получить данные из сервиса cbrf(выдам задачу на него чуть позднее)\n
|
|
||||||
- перевести валюту кошелька в нвоую валюту. кошелёк нарочно целочисленный, чтобы не было претензий к точности с плавающей точкой, поэтому, например долларовый счёт считается в центах"
|
|
||||||
operationId: changeCurrency
|
operationId: changeCurrency
|
||||||
|
description: >-
|
||||||
|
При запросе необходимо:
|
||||||
|
|
||||||
|
- Отвалидировать, что такая валюта одобрена
|
||||||
|
|
||||||
|
- Получить данные из сервиса cbrf(выдам задачу на него чуть позднее)
|
||||||
|
|
||||||
|
- Перевести валюту кошелька в нвоую валюту. кошелёк нарочно целочисленный, чтобы не было претензий к точности с плавающей точкой, поэтому, например долларовый счёт считается в центах
|
||||||
|
|
||||||
|
security:
|
||||||
|
- Bearer: []
|
||||||
requestBody:
|
requestBody:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
@ -276,21 +390,37 @@ paths:
|
|||||||
example: "USD"
|
example: "USD"
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: успешная смена валюты кошелька
|
description: Успешная смена валюты кошелька
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/components/schemas/Account"
|
$ref: "#/components/schemas/Account"
|
||||||
'401':
|
'401':
|
||||||
description: Неавторизован
|
description: Неавторизован
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/Error"
|
||||||
'400':
|
'400':
|
||||||
description: Такая валюта не одобрена
|
description: Такая валюта не одобрена
|
||||||
put:
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/Error"
|
||||||
|
'404':
|
||||||
|
description: Пользователь не найден
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/Error"
|
||||||
|
post:
|
||||||
tags:
|
tags:
|
||||||
- wallet
|
- wallet
|
||||||
summary: зачислить деньги на кошелёк
|
summary: Зачислить деньги на кошелёк
|
||||||
description: "прибавляем полученное значение к cash и при необходимости приводим к валюте кошелька"
|
description: "Прибавляем полученное значение к cash и при необходимости приводим к валюте кошелька"
|
||||||
operationId: putMoney
|
operationId: putMoney
|
||||||
|
security:
|
||||||
|
- Bearer: []
|
||||||
requestBody:
|
requestBody:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
@ -303,7 +433,7 @@ paths:
|
|||||||
currency:
|
currency:
|
||||||
type: string
|
type: string
|
||||||
example: "USD"
|
example: "USD"
|
||||||
id:
|
userId:
|
||||||
type: string
|
type: string
|
||||||
example: "807f1f77bcf81cd799439011"
|
example: "807f1f77bcf81cd799439011"
|
||||||
responses:
|
responses:
|
||||||
@ -315,25 +445,39 @@ paths:
|
|||||||
$ref: "#/components/schemas/Account"
|
$ref: "#/components/schemas/Account"
|
||||||
'400':
|
'400':
|
||||||
description: Такая валюта не одобрена
|
description: Такая валюта не одобрена
|
||||||
post:
|
|
||||||
tags:
|
|
||||||
- wallet
|
|
||||||
summary: запрос на получение ссылки на оплату
|
|
||||||
description: "- формируем запрос к сервису оплаты, с необходимыми постбэками\n
|
|
||||||
- получаем ответ от сервиса оплаты с ссылкой на оплату, которую надо передать пользователю"
|
|
||||||
operationId: requestMoney
|
|
||||||
requestBody:
|
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
type: object
|
$ref: "#/components/schemas/Error"
|
||||||
properties:
|
'404':
|
||||||
cash:
|
description: Аккаунт не найден
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/Error"
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- wallet
|
||||||
|
summary: Запрос на получение ссылки на оплату
|
||||||
|
operationId: requestMoney
|
||||||
|
description: >-
|
||||||
|
- Формируем запрос к сервису оплаты, с необходимыми постбэками
|
||||||
|
|
||||||
|
- Получаем ответ от сервиса оплаты с ссылкой на оплату, которую надо передать пользователю
|
||||||
|
|
||||||
|
security:
|
||||||
|
- Bearer: []
|
||||||
|
parameters:
|
||||||
|
- name: cash
|
||||||
|
in: query
|
||||||
|
description: Номер страницы, начиная с 1
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
type: integer
|
type: integer
|
||||||
example: 10000
|
default: 10000
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: успешный зпрос денег
|
description: Успешный запрос денег
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
@ -343,17 +487,24 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
example: "https://google.ru"
|
example: "https://google.ru"
|
||||||
'500':
|
'500':
|
||||||
description: сервис оплаты вернул ошибку
|
description: Сервис оплаты вернул ошибку
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Error'
|
||||||
|
|
||||||
/history:
|
/history:
|
||||||
get:
|
get:
|
||||||
tags:
|
tags:
|
||||||
- history
|
- history
|
||||||
summary: получение лога событий связанных с аккаунтом
|
summary: Получение лога событий связанных с аккаунтом
|
||||||
operationId: getHistory
|
operationId: getHistory
|
||||||
|
security:
|
||||||
|
- Bearer: []
|
||||||
parameters:
|
parameters:
|
||||||
- name: p
|
- name: p
|
||||||
in: query
|
in: query
|
||||||
description: Номер страницы, начиная с 0
|
description: Номер страницы, начиная с 1
|
||||||
required: false
|
required: false
|
||||||
explode: false
|
explode: false
|
||||||
schema:
|
schema:
|
||||||
@ -361,46 +512,66 @@ paths:
|
|||||||
default: 0
|
default: 0
|
||||||
- name: s
|
- name: s
|
||||||
in: query
|
in: query
|
||||||
description: размер страницы
|
description: Размер страницы
|
||||||
required: false
|
required: false
|
||||||
explode: false
|
explode: false
|
||||||
schema:
|
schema:
|
||||||
type: integer
|
type: integer
|
||||||
default: 10
|
default: 100
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: successful operation
|
description: Успешное получение событий
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
count:
|
totalPages:
|
||||||
type: integer
|
type: integer
|
||||||
example: 11
|
example: 11
|
||||||
items:
|
records:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/Record'
|
$ref: '#/components/schemas/History'
|
||||||
'401':
|
'401':
|
||||||
description: Неавторизован
|
description: Неавторизован
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Error'
|
||||||
post:
|
post:
|
||||||
tags:
|
tags:
|
||||||
- history
|
- history
|
||||||
summary: публикация лога в истории
|
summary: Публикация лога в истории
|
||||||
operationId: add2history
|
operationId: add2history
|
||||||
|
security:
|
||||||
|
- Bearer: []
|
||||||
requestBody:
|
requestBody:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/components/schemas/Record"
|
$ref: "#/components/schemas/History"
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: successful operation
|
description: Успешная публикация лога
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/History"
|
||||||
|
'500':
|
||||||
|
description: Ошибка при публикации
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/Error"
|
||||||
|
|
||||||
|
|
||||||
components:
|
components:
|
||||||
schemas:
|
schemas:
|
||||||
|
|
||||||
Account:
|
Account:
|
||||||
type: object
|
type: object
|
||||||
|
required: [_id, userId, cart, wallet, deleted, createdAt, updatedAt]
|
||||||
properties:
|
properties:
|
||||||
_id:
|
_id:
|
||||||
type: string
|
type: string
|
||||||
@ -409,12 +580,27 @@ components:
|
|||||||
type: string
|
type: string
|
||||||
example: "807f1f77bcf81cd799439011"
|
example: "807f1f77bcf81cd799439011"
|
||||||
cart:
|
cart:
|
||||||
$ref: "#/components/schemas/Cart"
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
example:
|
||||||
|
- "807f1f77bcf81cd799439011"
|
||||||
|
- "807f1f77bcf81cd799439012"
|
||||||
wallet:
|
wallet:
|
||||||
$ref: "#/components/schemas/Wallet"
|
$ref: "#/components/schemas/Wallet"
|
||||||
isDeleted:
|
deleted:
|
||||||
type: boolean
|
type: boolean
|
||||||
example: false
|
example: false
|
||||||
|
createdAt:
|
||||||
|
type: string
|
||||||
|
format: "date-time"
|
||||||
|
updatedAt:
|
||||||
|
type: string
|
||||||
|
format: "date-time"
|
||||||
|
deletedAt:
|
||||||
|
type: string
|
||||||
|
format: "date-time"
|
||||||
|
|
||||||
Wallet:
|
Wallet:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
@ -429,16 +615,9 @@ components:
|
|||||||
type: integer
|
type: integer
|
||||||
format: int64
|
format: int64
|
||||||
description: деньги на счету в копейках. Чтобы при перессчётах не возникало денег изниоткуда. фиксируемся к одной валюте, она будет внутренней, никому её не покажем
|
description: деньги на счету в копейках. Чтобы при перессчётах не возникало денег изниоткуда. фиксируемся к одной валюте, она будет внутренней, никому её не покажем
|
||||||
example: 10701
|
example: 10701.60
|
||||||
Cart:
|
|
||||||
type: array
|
History:
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
example:
|
|
||||||
- "807f1f77bcf81cd799439011"
|
|
||||||
- "807f1f77bcf81cd799439011"
|
|
||||||
- "807f1f77bcf81cd799439011"
|
|
||||||
Record:
|
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
id:
|
id:
|
||||||
@ -451,13 +630,47 @@ components:
|
|||||||
type: string
|
type: string
|
||||||
enum: ["successfulPayment", "declinedPayment", "timeoutPayment", "buyCart", "subsriptionEnd"]
|
enum: ["successfulPayment", "declinedPayment", "timeoutPayment", "buyCart", "subsriptionEnd"]
|
||||||
example: "successfulPayment"
|
example: "successfulPayment"
|
||||||
|
deleted:
|
||||||
|
type: boolean
|
||||||
|
example: false
|
||||||
createdAt:
|
createdAt:
|
||||||
type: string
|
type: string
|
||||||
format: date-time
|
format: "date-time"
|
||||||
|
updatedAt:
|
||||||
|
type: string
|
||||||
|
format: "date-time"
|
||||||
|
deletedAt:
|
||||||
|
type: string
|
||||||
|
format: "date-time"
|
||||||
comment:
|
comment:
|
||||||
type: string
|
type: string
|
||||||
example: "я это сделал потому что 42"
|
example: "я это сделал потому что 42"
|
||||||
subject:
|
subject:
|
||||||
type: string
|
type: string
|
||||||
description: я пока не могу предположить, какие будут фильтры по истории, поэтому предлагаю в это поле просто класть строку с json. ибо для каждого типа записи она своя.
|
description: >-
|
||||||
|
Я пока не могу предположить, какие будут фильтры по истории, поэтому
|
||||||
|
предлагаю в это поле просто класть строку с json. ибо для каждого типа
|
||||||
|
записи она своя.
|
||||||
example: {"tariffs":["807f1f77bcf81cd799439011","807f1f77bcf81cd799439011"]}
|
example: {"tariffs":["807f1f77bcf81cd799439011","807f1f77bcf81cd799439011"]}
|
||||||
|
|
||||||
|
Error:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- code
|
||||||
|
- message
|
||||||
|
properties:
|
||||||
|
statusCode:
|
||||||
|
type: integer
|
||||||
|
format: int64
|
||||||
|
example: 404
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
example: user not found
|
||||||
|
|
||||||
|
securitySchemes:
|
||||||
|
Bearer: # arbitrary name for the security scheme
|
||||||
|
type: http
|
||||||
|
scheme: bearer
|
||||||
|
bearerFormat: JWT
|
||||||
|
description: >-
|
||||||
|
Enter the token with the `Bearer: ` prefix, e.g. "Bearer abcde12345".
|
||||||
|
Loading…
Reference in New Issue
Block a user