diff --git a/api/gen.api.go b/api/gen.api.go index f2d6148..463bde1 100644 --- a/api/gen.api.go +++ b/api/gen.api.go @@ -16,13 +16,6 @@ import ( openapi_types "github.com/oapi-codegen/runtime/types" ) -// Account defines model for Account. -type Account struct { - Id *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Picture *string `json:"picture,omitempty"` -} - // JSONMessage defines model for JSONMessage. type JSONMessage struct { Message *string `json:"message,omitempty"` @@ -38,7 +31,9 @@ type Order struct { } // OrderArray defines model for OrderArray. -type OrderArray = []interface{} +type OrderArray = []struct { + Schema *Order `json:"schema,omitempty"` +} // GetOrdersParams defines parameters for GetOrders. type GetOrdersParams struct { @@ -50,9 +45,6 @@ type GetOrdersParams struct { // PostOrdersJSONRequestBody defines body for PostOrders for application/json ContentType. type PostOrdersJSONRequestBody = Order -// PutOrdersOrderIdJSONRequestBody defines body for PutOrdersOrderId for application/json ContentType. -type PutOrdersOrderIdJSONRequestBody = Order - // ServerInterface represents all server handlers. type ServerInterface interface { @@ -68,11 +60,29 @@ type ServerInterface interface { // (GET /orders/{order-id}) GetOrdersOrderId(w http.ResponseWriter, r *http.Request, orderId openapi_types.UUID) - // (PUT /orders/{order-id}) - PutOrdersOrderId(w http.ResponseWriter, r *http.Request, orderId openapi_types.UUID) + // (DELETE /orders/{order-id}/trade) + DeleteOrdersOrderIdTrade(w http.ResponseWriter, r *http.Request, orderId openapi_types.UUID) + + // (GET /orders/{order-id}/trade) + GetOrdersOrderIdTrade(w http.ResponseWriter, r *http.Request, orderId openapi_types.UUID) + + // (POST /orders/{order-id}/trade) + PostOrdersOrderIdTrade(w http.ResponseWriter, r *http.Request, orderId openapi_types.UUID) - // (PUT /profile/update) - PutProfileUpdate(w http.ResponseWriter, r *http.Request) + // (DELETE /orders/{order-id}/trade/escrow) + DeleteOrdersOrderIdTradeEscrow(w http.ResponseWriter, r *http.Request, orderId openapi_types.UUID) + + // (GET /orders/{order-id}/trade/escrow) + GetOrdersOrderIdTradeEscrow(w http.ResponseWriter, r *http.Request, orderId openapi_types.UUID) + + // (POST /orders/{order-id}/trade/escrow) + PostOrdersOrderIdTradeEscrow(w http.ResponseWriter, r *http.Request, orderId openapi_types.UUID) + + // (DELETE /orders/{order-id}/trade/escrow/dispute) + DeleteOrdersOrderIdTradeEscrowDispute(w http.ResponseWriter, r *http.Request, orderId openapi_types.UUID) + + // (POST /orders/{order-id}/trade/escrow/dispute) + PostOrdersOrderIdTradeEscrowDispute(w http.ResponseWriter, r *http.Request, orderId openapi_types.UUID) // (POST /token/generate) PostTokenGenerate(w http.ResponseWriter, r *http.Request) @@ -194,8 +204,83 @@ func (siw *ServerInterfaceWrapper) GetOrdersOrderId(w http.ResponseWriter, r *ht handler.ServeHTTP(w, r) } -// PutOrdersOrderId operation middleware -func (siw *ServerInterfaceWrapper) PutOrdersOrderId(w http.ResponseWriter, r *http.Request) { +// DeleteOrdersOrderIdTrade operation middleware +func (siw *ServerInterfaceWrapper) DeleteOrdersOrderIdTrade(w http.ResponseWriter, r *http.Request) { + + var err error + + // ------------- Path parameter "order-id" ------------- + var orderId openapi_types.UUID + + err = runtime.BindStyledParameterWithOptions("simple", "order-id", r.PathValue("order-id"), &orderId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "order-id", Err: err}) + return + } + + handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + siw.Handler.DeleteOrdersOrderIdTrade(w, r, orderId) + })) + + for _, middleware := range siw.HandlerMiddlewares { + handler = middleware(handler) + } + + handler.ServeHTTP(w, r) +} + +// GetOrdersOrderIdTrade operation middleware +func (siw *ServerInterfaceWrapper) GetOrdersOrderIdTrade(w http.ResponseWriter, r *http.Request) { + + var err error + + // ------------- Path parameter "order-id" ------------- + var orderId openapi_types.UUID + + err = runtime.BindStyledParameterWithOptions("simple", "order-id", r.PathValue("order-id"), &orderId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "order-id", Err: err}) + return + } + + handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + siw.Handler.GetOrdersOrderIdTrade(w, r, orderId) + })) + + for _, middleware := range siw.HandlerMiddlewares { + handler = middleware(handler) + } + + handler.ServeHTTP(w, r) +} + +// PostOrdersOrderIdTrade operation middleware +func (siw *ServerInterfaceWrapper) PostOrdersOrderIdTrade(w http.ResponseWriter, r *http.Request) { + + var err error + + // ------------- Path parameter "order-id" ------------- + var orderId openapi_types.UUID + + err = runtime.BindStyledParameterWithOptions("simple", "order-id", r.PathValue("order-id"), &orderId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "order-id", Err: err}) + return + } + + handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + siw.Handler.PostOrdersOrderIdTrade(w, r, orderId) + })) + + for _, middleware := range siw.HandlerMiddlewares { + handler = middleware(handler) + } + + handler.ServeHTTP(w, r) +} + +// DeleteOrdersOrderIdTradeEscrow operation middleware +func (siw *ServerInterfaceWrapper) DeleteOrdersOrderIdTradeEscrow(w http.ResponseWriter, r *http.Request) { var err error @@ -209,7 +294,7 @@ func (siw *ServerInterfaceWrapper) PutOrdersOrderId(w http.ResponseWriter, r *ht } handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.PutOrdersOrderId(w, r, orderId) + siw.Handler.DeleteOrdersOrderIdTradeEscrow(w, r, orderId) })) for _, middleware := range siw.HandlerMiddlewares { @@ -219,11 +304,97 @@ func (siw *ServerInterfaceWrapper) PutOrdersOrderId(w http.ResponseWriter, r *ht handler.ServeHTTP(w, r) } -// PutProfileUpdate operation middleware -func (siw *ServerInterfaceWrapper) PutProfileUpdate(w http.ResponseWriter, r *http.Request) { +// GetOrdersOrderIdTradeEscrow operation middleware +func (siw *ServerInterfaceWrapper) GetOrdersOrderIdTradeEscrow(w http.ResponseWriter, r *http.Request) { + + var err error + + // ------------- Path parameter "order-id" ------------- + var orderId openapi_types.UUID + + err = runtime.BindStyledParameterWithOptions("simple", "order-id", r.PathValue("order-id"), &orderId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "order-id", Err: err}) + return + } handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.PutProfileUpdate(w, r) + siw.Handler.GetOrdersOrderIdTradeEscrow(w, r, orderId) + })) + + for _, middleware := range siw.HandlerMiddlewares { + handler = middleware(handler) + } + + handler.ServeHTTP(w, r) +} + +// PostOrdersOrderIdTradeEscrow operation middleware +func (siw *ServerInterfaceWrapper) PostOrdersOrderIdTradeEscrow(w http.ResponseWriter, r *http.Request) { + + var err error + + // ------------- Path parameter "order-id" ------------- + var orderId openapi_types.UUID + + err = runtime.BindStyledParameterWithOptions("simple", "order-id", r.PathValue("order-id"), &orderId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "order-id", Err: err}) + return + } + + handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + siw.Handler.PostOrdersOrderIdTradeEscrow(w, r, orderId) + })) + + for _, middleware := range siw.HandlerMiddlewares { + handler = middleware(handler) + } + + handler.ServeHTTP(w, r) +} + +// DeleteOrdersOrderIdTradeEscrowDispute operation middleware +func (siw *ServerInterfaceWrapper) DeleteOrdersOrderIdTradeEscrowDispute(w http.ResponseWriter, r *http.Request) { + + var err error + + // ------------- Path parameter "order-id" ------------- + var orderId openapi_types.UUID + + err = runtime.BindStyledParameterWithOptions("simple", "order-id", r.PathValue("order-id"), &orderId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "order-id", Err: err}) + return + } + + handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + siw.Handler.DeleteOrdersOrderIdTradeEscrowDispute(w, r, orderId) + })) + + for _, middleware := range siw.HandlerMiddlewares { + handler = middleware(handler) + } + + handler.ServeHTTP(w, r) +} + +// PostOrdersOrderIdTradeEscrowDispute operation middleware +func (siw *ServerInterfaceWrapper) PostOrdersOrderIdTradeEscrowDispute(w http.ResponseWriter, r *http.Request) { + + var err error + + // ------------- Path parameter "order-id" ------------- + var orderId openapi_types.UUID + + err = runtime.BindStyledParameterWithOptions("simple", "order-id", r.PathValue("order-id"), &orderId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "order-id", Err: err}) + return + } + + handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + siw.Handler.PostOrdersOrderIdTradeEscrowDispute(w, r, orderId) })) for _, middleware := range siw.HandlerMiddlewares { @@ -371,8 +542,14 @@ func HandlerWithOptions(si ServerInterface, options StdHTTPServerOptions) http.H m.HandleFunc("POST "+options.BaseURL+"/orders", wrapper.PostOrders) m.HandleFunc("DELETE "+options.BaseURL+"/orders/{order-id}", wrapper.DeleteOrdersOrderId) m.HandleFunc("GET "+options.BaseURL+"/orders/{order-id}", wrapper.GetOrdersOrderId) - m.HandleFunc("PUT "+options.BaseURL+"/orders/{order-id}", wrapper.PutOrdersOrderId) - m.HandleFunc("PUT "+options.BaseURL+"/profile/update", wrapper.PutProfileUpdate) + m.HandleFunc("DELETE "+options.BaseURL+"/orders/{order-id}/trade", wrapper.DeleteOrdersOrderIdTrade) + m.HandleFunc("GET "+options.BaseURL+"/orders/{order-id}/trade", wrapper.GetOrdersOrderIdTrade) + m.HandleFunc("POST "+options.BaseURL+"/orders/{order-id}/trade", wrapper.PostOrdersOrderIdTrade) + m.HandleFunc("DELETE "+options.BaseURL+"/orders/{order-id}/trade/escrow", wrapper.DeleteOrdersOrderIdTradeEscrow) + m.HandleFunc("GET "+options.BaseURL+"/orders/{order-id}/trade/escrow", wrapper.GetOrdersOrderIdTradeEscrow) + m.HandleFunc("POST "+options.BaseURL+"/orders/{order-id}/trade/escrow", wrapper.PostOrdersOrderIdTradeEscrow) + m.HandleFunc("DELETE "+options.BaseURL+"/orders/{order-id}/trade/escrow/dispute", wrapper.DeleteOrdersOrderIdTradeEscrowDispute) + m.HandleFunc("POST "+options.BaseURL+"/orders/{order-id}/trade/escrow/dispute", wrapper.PostOrdersOrderIdTradeEscrowDispute) m.HandleFunc("POST "+options.BaseURL+"/token/generate", wrapper.PostTokenGenerate) return m @@ -446,40 +623,186 @@ func (response GetOrdersOrderId200JSONResponse) VisitGetOrdersOrderIdResponse(w return json.NewEncoder(w).Encode(response) } -type PutOrdersOrderIdRequestObject struct { +type DeleteOrdersOrderIdTradeRequestObject struct { + OrderId openapi_types.UUID `json:"order-id"` +} + +type DeleteOrdersOrderIdTradeResponseObject interface { + VisitDeleteOrdersOrderIdTradeResponse(w http.ResponseWriter) error +} + +type DeleteOrdersOrderIdTrade200Response struct { +} + +func (response DeleteOrdersOrderIdTrade200Response) VisitDeleteOrdersOrderIdTradeResponse(w http.ResponseWriter) error { + w.WriteHeader(200) + return nil +} + +type GetOrdersOrderIdTradeRequestObject struct { + OrderId openapi_types.UUID `json:"order-id"` +} + +type GetOrdersOrderIdTradeResponseObject interface { + VisitGetOrdersOrderIdTradeResponse(w http.ResponseWriter) error +} + +type GetOrdersOrderIdTrade200Response struct { +} + +func (response GetOrdersOrderIdTrade200Response) VisitGetOrdersOrderIdTradeResponse(w http.ResponseWriter) error { + w.WriteHeader(200) + return nil +} + +type PostOrdersOrderIdTradeRequestObject struct { + OrderId openapi_types.UUID `json:"order-id"` +} + +type PostOrdersOrderIdTradeResponseObject interface { + VisitPostOrdersOrderIdTradeResponse(w http.ResponseWriter) error +} + +type PostOrdersOrderIdTrade200Response struct { +} + +func (response PostOrdersOrderIdTrade200Response) VisitPostOrdersOrderIdTradeResponse(w http.ResponseWriter) error { + w.WriteHeader(200) + return nil +} + +type DeleteOrdersOrderIdTradeEscrowRequestObject struct { OrderId openapi_types.UUID `json:"order-id"` - Body *PutOrdersOrderIdJSONRequestBody } -type PutOrdersOrderIdResponseObject interface { - VisitPutOrdersOrderIdResponse(w http.ResponseWriter) error +type DeleteOrdersOrderIdTradeEscrowResponseObject interface { + VisitDeleteOrdersOrderIdTradeEscrowResponse(w http.ResponseWriter) error } -type PutOrdersOrderId200JSONResponse JSONMessage +type DeleteOrdersOrderIdTradeEscrow200JSONResponse JSONMessage -func (response PutOrdersOrderId200JSONResponse) VisitPutOrdersOrderIdResponse(w http.ResponseWriter) error { +func (response DeleteOrdersOrderIdTradeEscrow200JSONResponse) VisitDeleteOrdersOrderIdTradeEscrowResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) return json.NewEncoder(w).Encode(response) } -type PutProfileUpdateRequestObject struct { +type DeleteOrdersOrderIdTradeEscrow400Response struct { } -type PutProfileUpdateResponseObject interface { - VisitPutProfileUpdateResponse(w http.ResponseWriter) error +func (response DeleteOrdersOrderIdTradeEscrow400Response) VisitDeleteOrdersOrderIdTradeEscrowResponse(w http.ResponseWriter) error { + w.WriteHeader(400) + return nil } -type PutProfileUpdate200JSONResponse Account +type DeleteOrdersOrderIdTradeEscrow402Response struct { +} + +func (response DeleteOrdersOrderIdTradeEscrow402Response) VisitDeleteOrdersOrderIdTradeEscrowResponse(w http.ResponseWriter) error { + w.WriteHeader(402) + return nil +} + +type DeleteOrdersOrderIdTradeEscrow404Response struct { +} + +func (response DeleteOrdersOrderIdTradeEscrow404Response) VisitDeleteOrdersOrderIdTradeEscrowResponse(w http.ResponseWriter) error { + w.WriteHeader(404) + return nil +} + +type GetOrdersOrderIdTradeEscrowRequestObject struct { + OrderId openapi_types.UUID `json:"order-id"` +} + +type GetOrdersOrderIdTradeEscrowResponseObject interface { + VisitGetOrdersOrderIdTradeEscrowResponse(w http.ResponseWriter) error +} -func (response PutProfileUpdate200JSONResponse) VisitPutProfileUpdateResponse(w http.ResponseWriter) error { +type GetOrdersOrderIdTradeEscrow200JSONResponse struct { + Status *string `json:"status,omitempty"` +} + +func (response GetOrdersOrderIdTradeEscrow200JSONResponse) VisitGetOrdersOrderIdTradeEscrowResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) return json.NewEncoder(w).Encode(response) } +type GetOrdersOrderIdTradeEscrow400Response struct { +} + +func (response GetOrdersOrderIdTradeEscrow400Response) VisitGetOrdersOrderIdTradeEscrowResponse(w http.ResponseWriter) error { + w.WriteHeader(400) + return nil +} + +type GetOrdersOrderIdTradeEscrow401Response struct { +} + +func (response GetOrdersOrderIdTradeEscrow401Response) VisitGetOrdersOrderIdTradeEscrowResponse(w http.ResponseWriter) error { + w.WriteHeader(401) + return nil +} + +type GetOrdersOrderIdTradeEscrow404Response struct { +} + +func (response GetOrdersOrderIdTradeEscrow404Response) VisitGetOrdersOrderIdTradeEscrowResponse(w http.ResponseWriter) error { + w.WriteHeader(404) + return nil +} + +type PostOrdersOrderIdTradeEscrowRequestObject struct { + OrderId openapi_types.UUID `json:"order-id"` +} + +type PostOrdersOrderIdTradeEscrowResponseObject interface { + VisitPostOrdersOrderIdTradeEscrowResponse(w http.ResponseWriter) error +} + +type PostOrdersOrderIdTradeEscrow201Response struct { +} + +func (response PostOrdersOrderIdTradeEscrow201Response) VisitPostOrdersOrderIdTradeEscrowResponse(w http.ResponseWriter) error { + w.WriteHeader(201) + return nil +} + +type DeleteOrdersOrderIdTradeEscrowDisputeRequestObject struct { + OrderId openapi_types.UUID `json:"order-id"` +} + +type DeleteOrdersOrderIdTradeEscrowDisputeResponseObject interface { + VisitDeleteOrdersOrderIdTradeEscrowDisputeResponse(w http.ResponseWriter) error +} + +type DeleteOrdersOrderIdTradeEscrowDispute200Response struct { +} + +func (response DeleteOrdersOrderIdTradeEscrowDispute200Response) VisitDeleteOrdersOrderIdTradeEscrowDisputeResponse(w http.ResponseWriter) error { + w.WriteHeader(200) + return nil +} + +type PostOrdersOrderIdTradeEscrowDisputeRequestObject struct { + OrderId openapi_types.UUID `json:"order-id"` +} + +type PostOrdersOrderIdTradeEscrowDisputeResponseObject interface { + VisitPostOrdersOrderIdTradeEscrowDisputeResponse(w http.ResponseWriter) error +} + +type PostOrdersOrderIdTradeEscrowDispute201Response struct { +} + +func (response PostOrdersOrderIdTradeEscrowDispute201Response) VisitPostOrdersOrderIdTradeEscrowDisputeResponse(w http.ResponseWriter) error { + w.WriteHeader(201) + return nil +} + type PostTokenGenerateRequestObject struct { } @@ -487,13 +810,13 @@ type PostTokenGenerateResponseObject interface { VisitPostTokenGenerateResponse(w http.ResponseWriter) error } -type PostTokenGenerate200JSONResponse struct { +type PostTokenGenerate201JSONResponse struct { Token *string `json:"token,omitempty"` } -func (response PostTokenGenerate200JSONResponse) VisitPostTokenGenerateResponse(w http.ResponseWriter) error { +func (response PostTokenGenerate201JSONResponse) VisitPostTokenGenerateResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) + w.WriteHeader(201) return json.NewEncoder(w).Encode(response) } @@ -513,11 +836,29 @@ type StrictServerInterface interface { // (GET /orders/{order-id}) GetOrdersOrderId(ctx context.Context, request GetOrdersOrderIdRequestObject) (GetOrdersOrderIdResponseObject, error) - // (PUT /orders/{order-id}) - PutOrdersOrderId(ctx context.Context, request PutOrdersOrderIdRequestObject) (PutOrdersOrderIdResponseObject, error) + // (DELETE /orders/{order-id}/trade) + DeleteOrdersOrderIdTrade(ctx context.Context, request DeleteOrdersOrderIdTradeRequestObject) (DeleteOrdersOrderIdTradeResponseObject, error) - // (PUT /profile/update) - PutProfileUpdate(ctx context.Context, request PutProfileUpdateRequestObject) (PutProfileUpdateResponseObject, error) + // (GET /orders/{order-id}/trade) + GetOrdersOrderIdTrade(ctx context.Context, request GetOrdersOrderIdTradeRequestObject) (GetOrdersOrderIdTradeResponseObject, error) + + // (POST /orders/{order-id}/trade) + PostOrdersOrderIdTrade(ctx context.Context, request PostOrdersOrderIdTradeRequestObject) (PostOrdersOrderIdTradeResponseObject, error) + + // (DELETE /orders/{order-id}/trade/escrow) + DeleteOrdersOrderIdTradeEscrow(ctx context.Context, request DeleteOrdersOrderIdTradeEscrowRequestObject) (DeleteOrdersOrderIdTradeEscrowResponseObject, error) + + // (GET /orders/{order-id}/trade/escrow) + GetOrdersOrderIdTradeEscrow(ctx context.Context, request GetOrdersOrderIdTradeEscrowRequestObject) (GetOrdersOrderIdTradeEscrowResponseObject, error) + + // (POST /orders/{order-id}/trade/escrow) + PostOrdersOrderIdTradeEscrow(ctx context.Context, request PostOrdersOrderIdTradeEscrowRequestObject) (PostOrdersOrderIdTradeEscrowResponseObject, error) + + // (DELETE /orders/{order-id}/trade/escrow/dispute) + DeleteOrdersOrderIdTradeEscrowDispute(ctx context.Context, request DeleteOrdersOrderIdTradeEscrowDisputeRequestObject) (DeleteOrdersOrderIdTradeEscrowDisputeResponseObject, error) + + // (POST /orders/{order-id}/trade/escrow/dispute) + PostOrdersOrderIdTradeEscrowDispute(ctx context.Context, request PostOrdersOrderIdTradeEscrowDisputeRequestObject) (PostOrdersOrderIdTradeEscrowDisputeResponseObject, error) // (POST /token/generate) PostTokenGenerate(ctx context.Context, request PostTokenGenerateRequestObject) (PostTokenGenerateResponseObject, error) @@ -661,32 +1002,103 @@ func (sh *strictHandler) GetOrdersOrderId(w http.ResponseWriter, r *http.Request } } -// PutOrdersOrderId operation middleware -func (sh *strictHandler) PutOrdersOrderId(w http.ResponseWriter, r *http.Request, orderId openapi_types.UUID) { - var request PutOrdersOrderIdRequestObject +// DeleteOrdersOrderIdTrade operation middleware +func (sh *strictHandler) DeleteOrdersOrderIdTrade(w http.ResponseWriter, r *http.Request, orderId openapi_types.UUID) { + var request DeleteOrdersOrderIdTradeRequestObject request.OrderId = orderId - var body PutOrdersOrderIdJSONRequestBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode JSON body: %w", err)) - return + handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { + return sh.ssi.DeleteOrdersOrderIdTrade(ctx, request.(DeleteOrdersOrderIdTradeRequestObject)) } - request.Body = &body + for _, middleware := range sh.middlewares { + handler = middleware(handler, "DeleteOrdersOrderIdTrade") + } + + response, err := handler(r.Context(), w, r, request) + + if err != nil { + sh.options.ResponseErrorHandlerFunc(w, r, err) + } else if validResponse, ok := response.(DeleteOrdersOrderIdTradeResponseObject); ok { + if err := validResponse.VisitDeleteOrdersOrderIdTradeResponse(w); err != nil { + sh.options.ResponseErrorHandlerFunc(w, r, err) + } + } else if response != nil { + sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) + } +} + +// GetOrdersOrderIdTrade operation middleware +func (sh *strictHandler) GetOrdersOrderIdTrade(w http.ResponseWriter, r *http.Request, orderId openapi_types.UUID) { + var request GetOrdersOrderIdTradeRequestObject + + request.OrderId = orderId + + handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { + return sh.ssi.GetOrdersOrderIdTrade(ctx, request.(GetOrdersOrderIdTradeRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "GetOrdersOrderIdTrade") + } + + response, err := handler(r.Context(), w, r, request) + + if err != nil { + sh.options.ResponseErrorHandlerFunc(w, r, err) + } else if validResponse, ok := response.(GetOrdersOrderIdTradeResponseObject); ok { + if err := validResponse.VisitGetOrdersOrderIdTradeResponse(w); err != nil { + sh.options.ResponseErrorHandlerFunc(w, r, err) + } + } else if response != nil { + sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) + } +} + +// PostOrdersOrderIdTrade operation middleware +func (sh *strictHandler) PostOrdersOrderIdTrade(w http.ResponseWriter, r *http.Request, orderId openapi_types.UUID) { + var request PostOrdersOrderIdTradeRequestObject + + request.OrderId = orderId + + handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { + return sh.ssi.PostOrdersOrderIdTrade(ctx, request.(PostOrdersOrderIdTradeRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "PostOrdersOrderIdTrade") + } + + response, err := handler(r.Context(), w, r, request) + + if err != nil { + sh.options.ResponseErrorHandlerFunc(w, r, err) + } else if validResponse, ok := response.(PostOrdersOrderIdTradeResponseObject); ok { + if err := validResponse.VisitPostOrdersOrderIdTradeResponse(w); err != nil { + sh.options.ResponseErrorHandlerFunc(w, r, err) + } + } else if response != nil { + sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) + } +} + +// DeleteOrdersOrderIdTradeEscrow operation middleware +func (sh *strictHandler) DeleteOrdersOrderIdTradeEscrow(w http.ResponseWriter, r *http.Request, orderId openapi_types.UUID) { + var request DeleteOrdersOrderIdTradeEscrowRequestObject + + request.OrderId = orderId handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.PutOrdersOrderId(ctx, request.(PutOrdersOrderIdRequestObject)) + return sh.ssi.DeleteOrdersOrderIdTradeEscrow(ctx, request.(DeleteOrdersOrderIdTradeEscrowRequestObject)) } for _, middleware := range sh.middlewares { - handler = middleware(handler, "PutOrdersOrderId") + handler = middleware(handler, "DeleteOrdersOrderIdTradeEscrow") } response, err := handler(r.Context(), w, r, request) if err != nil { sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(PutOrdersOrderIdResponseObject); ok { - if err := validResponse.VisitPutOrdersOrderIdResponse(w); err != nil { + } else if validResponse, ok := response.(DeleteOrdersOrderIdTradeEscrowResponseObject); ok { + if err := validResponse.VisitDeleteOrdersOrderIdTradeEscrowResponse(w); err != nil { sh.options.ResponseErrorHandlerFunc(w, r, err) } } else if response != nil { @@ -694,23 +1106,103 @@ func (sh *strictHandler) PutOrdersOrderId(w http.ResponseWriter, r *http.Request } } -// PutProfileUpdate operation middleware -func (sh *strictHandler) PutProfileUpdate(w http.ResponseWriter, r *http.Request) { - var request PutProfileUpdateRequestObject +// GetOrdersOrderIdTradeEscrow operation middleware +func (sh *strictHandler) GetOrdersOrderIdTradeEscrow(w http.ResponseWriter, r *http.Request, orderId openapi_types.UUID) { + var request GetOrdersOrderIdTradeEscrowRequestObject + + request.OrderId = orderId + + handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { + return sh.ssi.GetOrdersOrderIdTradeEscrow(ctx, request.(GetOrdersOrderIdTradeEscrowRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "GetOrdersOrderIdTradeEscrow") + } + + response, err := handler(r.Context(), w, r, request) + + if err != nil { + sh.options.ResponseErrorHandlerFunc(w, r, err) + } else if validResponse, ok := response.(GetOrdersOrderIdTradeEscrowResponseObject); ok { + if err := validResponse.VisitGetOrdersOrderIdTradeEscrowResponse(w); err != nil { + sh.options.ResponseErrorHandlerFunc(w, r, err) + } + } else if response != nil { + sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) + } +} + +// PostOrdersOrderIdTradeEscrow operation middleware +func (sh *strictHandler) PostOrdersOrderIdTradeEscrow(w http.ResponseWriter, r *http.Request, orderId openapi_types.UUID) { + var request PostOrdersOrderIdTradeEscrowRequestObject + + request.OrderId = orderId + + handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { + return sh.ssi.PostOrdersOrderIdTradeEscrow(ctx, request.(PostOrdersOrderIdTradeEscrowRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "PostOrdersOrderIdTradeEscrow") + } + + response, err := handler(r.Context(), w, r, request) + + if err != nil { + sh.options.ResponseErrorHandlerFunc(w, r, err) + } else if validResponse, ok := response.(PostOrdersOrderIdTradeEscrowResponseObject); ok { + if err := validResponse.VisitPostOrdersOrderIdTradeEscrowResponse(w); err != nil { + sh.options.ResponseErrorHandlerFunc(w, r, err) + } + } else if response != nil { + sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) + } +} + +// DeleteOrdersOrderIdTradeEscrowDispute operation middleware +func (sh *strictHandler) DeleteOrdersOrderIdTradeEscrowDispute(w http.ResponseWriter, r *http.Request, orderId openapi_types.UUID) { + var request DeleteOrdersOrderIdTradeEscrowDisputeRequestObject + + request.OrderId = orderId + + handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { + return sh.ssi.DeleteOrdersOrderIdTradeEscrowDispute(ctx, request.(DeleteOrdersOrderIdTradeEscrowDisputeRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "DeleteOrdersOrderIdTradeEscrowDispute") + } + + response, err := handler(r.Context(), w, r, request) + + if err != nil { + sh.options.ResponseErrorHandlerFunc(w, r, err) + } else if validResponse, ok := response.(DeleteOrdersOrderIdTradeEscrowDisputeResponseObject); ok { + if err := validResponse.VisitDeleteOrdersOrderIdTradeEscrowDisputeResponse(w); err != nil { + sh.options.ResponseErrorHandlerFunc(w, r, err) + } + } else if response != nil { + sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) + } +} + +// PostOrdersOrderIdTradeEscrowDispute operation middleware +func (sh *strictHandler) PostOrdersOrderIdTradeEscrowDispute(w http.ResponseWriter, r *http.Request, orderId openapi_types.UUID) { + var request PostOrdersOrderIdTradeEscrowDisputeRequestObject + + request.OrderId = orderId handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.PutProfileUpdate(ctx, request.(PutProfileUpdateRequestObject)) + return sh.ssi.PostOrdersOrderIdTradeEscrowDispute(ctx, request.(PostOrdersOrderIdTradeEscrowDisputeRequestObject)) } for _, middleware := range sh.middlewares { - handler = middleware(handler, "PutProfileUpdate") + handler = middleware(handler, "PostOrdersOrderIdTradeEscrowDispute") } response, err := handler(r.Context(), w, r, request) if err != nil { sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(PutProfileUpdateResponseObject); ok { - if err := validResponse.VisitPutProfileUpdateResponse(w); err != nil { + } else if validResponse, ok := response.(PostOrdersOrderIdTradeEscrowDisputeResponseObject); ok { + if err := validResponse.VisitPostOrdersOrderIdTradeEscrowDisputeResponse(w); err != nil { sh.options.ResponseErrorHandlerFunc(w, r, err) } } else if response != nil { diff --git a/db/dynstore/dynquery.go b/db/dynstore/dynquery.go index 8444e72..2fadd99 100644 --- a/db/dynstore/dynquery.go +++ b/db/dynstore/dynquery.go @@ -25,7 +25,7 @@ type GetOrderByFieldParam struct { PageEnd int } -func (dynstore *Dynstore) GetOrderByField(param GetOrderByFieldParam) ([]store.Order, error) { +func (dynstore *Dynstore) GetOrderByField(param GetOrderByFieldParam) ([]store.Position, error) { orderby := "" if param.Ascending { orderby = "ASC" @@ -37,7 +37,7 @@ func (dynstore *Dynstore) GetOrderByField(param GetOrderByFieldParam) ([]store.O if err != nil { return nil, err } - var orders []store.Order + var orders []store.Position err = rows.Scan(&orders) if err != nil { return nil, err diff --git a/db/migrations/20241107223314_orders.sql b/db/migrations/20241107223314_orders.sql index 877a5e3..109c651 100644 --- a/db/migrations/20241107223314_orders.sql +++ b/db/migrations/20241107223314_orders.sql @@ -35,7 +35,7 @@ CREATE TABLE payment_method( id SERIAL PRIMARY KEY ); -CREATE TABLE order( +CREATE TABLE position( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), amount DOUBLE PRECISION NOT NULL DEFAULT 0, premium DOUBLE PRECISION NOT NULL DEFAULT 0.0, @@ -44,16 +44,18 @@ CREATE TABLE order( created_at TIMESTAMP NOT NULL DEFAULT NOW(), expiry_at TIMESTAMP NOT NULL, order_status OrderStatus NOT NULL, - taker_id UUID, trade_created_at TIMESTAMP, trade_updated_at TIMESTAMP, + buyer UUID, + seller UUID, escrow_multisig_addr TEXT, escrow_buyer_key TEXT, - escrow_sender_key TEXT, + escrow_seller_key TEXT, escrow_created_at TIMESTAMP, escrow_updated_at TIMESTAMP, dispute_created_at TIMESTAMP, dispute_updated_at TIMESTAMP, + dispute_reason TEXT, FOREIGN KEY (currency) REFERENCES currencies(id), FOREIGN KEY (payment) REFERENCES payment_method(id) ); diff --git a/db/queries/order.sql b/db/queries/order.sql index 8390a95..19d65e4 100644 --- a/db/queries/order.sql +++ b/db/queries/order.sql @@ -1,14 +1,22 @@ -- name: VerifyToken :one -SELECT COUNT(*) FROM users WHERE token = $1; +SELECT COUNT(*) FROM ninja WHERE token = $1; -- name: GetOrder :one -SELECT * FROM orders WHERE id = $1; +SELECT * FROM position WHERE id = $1; -- name: InsertOrder :exec -INSERT INTO orders (amount, currency, created_at, expiry_at, premium, payment) VALUES ($1, $2, $3, $4, $5, $6) RETURNING id; +INSERT INTO position (amount, currency, created_at, expiry_at, premium, payment) VALUES ($1, $2, $3, $4, $5, $6) RETURNING id; -- name: PatchOrder :exec -UPDATE orders SET amount = $1, currency = $2, created_at = $3, expiry_at = $4, premium = $5, payment = $6 WHERE id = $7; +UPDATE position SET amount = $1, currency = $2, created_at = $3, expiry_at = $4, premium = $5, payment = $6 WHERE id = $7; -- name: DeleteOrder :exec -DELETE FROM orders WHERE id = $1; +DELETE FROM position WHERE id = $1; -- name: CountOrders :one -SELECT COUNT(*) FROM orders; --- name: CreateTrade :one +SELECT COUNT(*) FROM position; +-- name: CreateTrade :exec +UPDATE position SET order_status = $1, buyer = $2, seller = $3, trade_created_at = NOW(), trade_update_at = NOW() WHERE id = $4; -- name: DeleteTrade :exec +UPDATE position SET order_status = $1, buyer = NULL, seller = NULL, trade_created_at = NULL, trade_update_at = NULL WHERE id = $2; +-- name: LockEscrow :exec +UPDATE position SET order_status = $1, escrow_buyer_key = $2, escrow_seller_key = $3, escrow_created_at = NOW(), escrow_updated_at = NOW(), trade_update_at = NOW() WHERE id = $4; +-- name: ReleaseEscrow :exec +UPDATE position SET order_status = $1, escrow_buyer_key = NULL, escrow_seller_key = NULL, escrow_created_at = NULL, escrow_updated_at = NULL, trade_update_at = NOW() WHERE id = $2; +-- name: RaiseDispute :exec +-- name: ResolveDispute :exec \ No newline at end of file diff --git a/db/store/models.go b/db/store/models.go index a9ed81a..63072e0 100644 --- a/db/store/models.go +++ b/db/store/models.go @@ -6,11 +6,56 @@ package store import ( "database/sql" + "database/sql/driver" + "fmt" "time" "github.com/google/uuid" ) +type Orderstatus string + +const ( + OrderstatusPending Orderstatus = "pending" + OrderstatusCompleted Orderstatus = "completed" + OrderstatusCanceled Orderstatus = "canceled" +) + +func (e *Orderstatus) Scan(src interface{}) error { + switch s := src.(type) { + case []byte: + *e = Orderstatus(s) + case string: + *e = Orderstatus(s) + default: + return fmt.Errorf("unsupported scan type for Orderstatus: %T", src) + } + return nil +} + +type NullOrderstatus struct { + Orderstatus Orderstatus + Valid bool // Valid is true if Orderstatus is not NULL +} + +// Scan implements the Scanner interface. +func (ns *NullOrderstatus) Scan(value interface{}) error { + if value == nil { + ns.Orderstatus, ns.Valid = "", false + return nil + } + ns.Valid = true + return ns.Orderstatus.Scan(value) +} + +// Value implements the driver Valuer interface. +func (ns NullOrderstatus) Value() (driver.Value, error) { + if !ns.Valid { + return nil, nil + } + return string(ns.Orderstatus), nil +} + type Currency struct { ID int32 Code string @@ -18,22 +63,36 @@ type Currency struct { Symbol sql.NullString } -type Order struct { - ID uuid.UUID - Amount float64 - Premium float64 - Currency int32 - Payment int32 - CreatedAt time.Time - ExpiryAt time.Time +type Ninja struct { + ID uuid.UUID + Token string + Uname string + Dpurl string } type PaymentMethod struct { ID int32 } -type User struct { - Token string - Uname string - Dpurl string +type Position struct { + ID uuid.UUID + Amount float64 + Premium float64 + Currency int32 + Payment int32 + CreatedAt time.Time + ExpiryAt time.Time + OrderStatus Orderstatus + TradeCreatedAt sql.NullTime + TradeUpdatedAt sql.NullTime + Buyer uuid.NullUUID + Seller uuid.NullUUID + EscrowMultisigAddr sql.NullString + EscrowBuyerKey sql.NullString + EscrowSellerKey sql.NullString + EscrowCreatedAt sql.NullTime + EscrowUpdatedAt sql.NullTime + DisputeCreatedAt sql.NullTime + DisputeUpdatedAt sql.NullTime + DisputeReason sql.NullString } diff --git a/db/store/order.sql.go b/db/store/order.sql.go index 6844d33..84aeba1 100644 --- a/db/store/order.sql.go +++ b/db/store/order.sql.go @@ -7,13 +7,14 @@ package store import ( "context" + "database/sql" "time" "github.com/google/uuid" ) const countOrders = `-- name: CountOrders :one -SELECT COUNT(*) FROM orders +SELECT COUNT(*) FROM position ` func (q *Queries) CountOrders(ctx context.Context) (int64, error) { @@ -23,8 +24,29 @@ func (q *Queries) CountOrders(ctx context.Context) (int64, error) { return count, err } +const createTrade = `-- name: CreateTrade :exec +UPDATE position SET order_status = $1, buyer = $2, seller = $3, trade_created_at = NOW(), trade_update_at = NOW() WHERE id = $4 +` + +type CreateTradeParams struct { + OrderStatus Orderstatus + Buyer uuid.NullUUID + Seller uuid.NullUUID + ID uuid.UUID +} + +func (q *Queries) CreateTrade(ctx context.Context, arg CreateTradeParams) error { + _, err := q.db.ExecContext(ctx, createTrade, + arg.OrderStatus, + arg.Buyer, + arg.Seller, + arg.ID, + ) + return err +} + const deleteOrder = `-- name: DeleteOrder :exec -DELETE FROM orders WHERE id = $1 +DELETE FROM position WHERE id = $1 ` func (q *Queries) DeleteOrder(ctx context.Context, id uuid.UUID) error { @@ -32,13 +54,27 @@ func (q *Queries) DeleteOrder(ctx context.Context, id uuid.UUID) error { return err } +const deleteTrade = `-- name: DeleteTrade :exec +UPDATE position SET order_status = $1, buyer = NULL, seller = NULL, trade_created_at = NULL, trade_update_at = NULL WHERE id = $2 +` + +type DeleteTradeParams struct { + OrderStatus Orderstatus + ID uuid.UUID +} + +func (q *Queries) DeleteTrade(ctx context.Context, arg DeleteTradeParams) error { + _, err := q.db.ExecContext(ctx, deleteTrade, arg.OrderStatus, arg.ID) + return err +} + const getOrder = `-- name: GetOrder :one -SELECT id, amount, premium, currency, payment, created_at, expiry_at FROM orders WHERE id = $1 +SELECT id, amount, premium, currency, payment, created_at, expiry_at, order_status, trade_created_at, trade_updated_at, buyer, seller, escrow_multisig_addr, escrow_buyer_key, escrow_seller_key, escrow_created_at, escrow_updated_at, dispute_created_at, dispute_updated_at, dispute_reason FROM position WHERE id = $1 ` -func (q *Queries) GetOrder(ctx context.Context, id uuid.UUID) (Order, error) { +func (q *Queries) GetOrder(ctx context.Context, id uuid.UUID) (Position, error) { row := q.db.QueryRowContext(ctx, getOrder, id) - var i Order + var i Position err := row.Scan( &i.ID, &i.Amount, @@ -47,12 +83,25 @@ func (q *Queries) GetOrder(ctx context.Context, id uuid.UUID) (Order, error) { &i.Payment, &i.CreatedAt, &i.ExpiryAt, + &i.OrderStatus, + &i.TradeCreatedAt, + &i.TradeUpdatedAt, + &i.Buyer, + &i.Seller, + &i.EscrowMultisigAddr, + &i.EscrowBuyerKey, + &i.EscrowSellerKey, + &i.EscrowCreatedAt, + &i.EscrowUpdatedAt, + &i.DisputeCreatedAt, + &i.DisputeUpdatedAt, + &i.DisputeReason, ) return i, err } const insertOrder = `-- name: InsertOrder :exec -INSERT INTO orders (amount, currency, created_at, expiry_at, premium, payment) VALUES ($1, $2, $3, $4, $5, $6) RETURNING id +INSERT INTO position (amount, currency, created_at, expiry_at, premium, payment) VALUES ($1, $2, $3, $4, $5, $6) RETURNING id ` type InsertOrderParams struct { @@ -76,8 +125,29 @@ func (q *Queries) InsertOrder(ctx context.Context, arg InsertOrderParams) error return err } +const lockEscrow = `-- name: LockEscrow :exec +UPDATE position SET order_status = $1, escrow_buyer_key = $2, escrow_seller_key = $3, escrow_created_at = NOW(), escrow_updated_at = NOW(), trade_update_at = NOW() WHERE id = $4 +` + +type LockEscrowParams struct { + OrderStatus Orderstatus + EscrowBuyerKey sql.NullString + EscrowSellerKey sql.NullString + ID uuid.UUID +} + +func (q *Queries) LockEscrow(ctx context.Context, arg LockEscrowParams) error { + _, err := q.db.ExecContext(ctx, lockEscrow, + arg.OrderStatus, + arg.EscrowBuyerKey, + arg.EscrowSellerKey, + arg.ID, + ) + return err +} + const patchOrder = `-- name: PatchOrder :exec -UPDATE orders SET amount = $1, currency = $2, created_at = $3, expiry_at = $4, premium = $5, payment = $6 WHERE id = $7 +UPDATE position SET amount = $1, currency = $2, created_at = $3, expiry_at = $4, premium = $5, payment = $6 WHERE id = $7 ` type PatchOrderParams struct { @@ -103,8 +173,22 @@ func (q *Queries) PatchOrder(ctx context.Context, arg PatchOrderParams) error { return err } +const releaseEscrow = `-- name: ReleaseEscrow :exec +UPDATE position SET order_status = $1, escrow_buyer_key = NULL, escrow_seller_key = NULL, escrow_created_at = NULL, escrow_updated_at = NULL, trade_update_at = NOW() WHERE id = $2 +` + +type ReleaseEscrowParams struct { + OrderStatus Orderstatus + ID uuid.UUID +} + +func (q *Queries) ReleaseEscrow(ctx context.Context, arg ReleaseEscrowParams) error { + _, err := q.db.ExecContext(ctx, releaseEscrow, arg.OrderStatus, arg.ID) + return err +} + const verifyToken = `-- name: VerifyToken :one -SELECT COUNT(*) FROM users WHERE token = $1 +SELECT COUNT(*) FROM ninja WHERE token = $1 ` func (q *Queries) VerifyToken(ctx context.Context, token string) (int64, error) { diff --git a/docs/index.html b/docs/index.html index e6eace6..be28e37 100644 --- a/docs/index.html +++ b/docs/index.html @@ -339,7 +339,7 @@
-