diff --git a/internal/controller/history/history.go b/internal/controller/history/history.go index 7f21009..0ea22c3 100644 --- a/internal/controller/history/history.go +++ b/internal/controller/history/history.go @@ -2,6 +2,7 @@ package history import ( "context" + "fmt" "log" "net/http" @@ -48,7 +49,21 @@ func New(deps *Deps) *Controller { } func (receiver *Controller) CreateHistory(ctx echo.Context) error { - createdHistory, err := receiver.historyService.CreateHistory(ctx.Request().Context(), &models.History{}) + request, bindErr := echotools.Bind[swagger.Add2historyJSONRequestBody](ctx) + if bindErr != nil { + receiver.logger.Error("failed to bind body on of ", zap.Error(bindErr)) + return echotools.ResponseError(ctx, errors.New( + fmt.Errorf("failed to parse body on of : %w", bindErr), + errors.ErrInvalidArgs, + )) + } + + createdHistory, err := receiver.historyService.CreateHistory(ctx.Request().Context(), &models.History{ + UserID: *request.UserId, + Type: models.HistoryType(*request.Type), + Comment: *request.Comment, + RawDetails: *request.RawDetails, + }) if err != nil { receiver.logger.Error("failed to create history on of ", zap.Error(err)) return echotools.ResponseError(ctx, err) diff --git a/internal/models/history.go b/internal/models/history.go index bde710e..050a6cb 100644 --- a/internal/models/history.go +++ b/internal/models/history.go @@ -3,17 +3,28 @@ package models import "time" type History struct { - ID string `json:"id" bson:"_id,omitempty"` - UserID string `json:"userId" bson:"userId"` - Comment string `json:"comment" bson:"comment"` - Subject string `json:"subject" bson:"subject"` - Type HistoryType `json:"type" bson:"type"` - Deleted bool `json:"deleted" bson:"deleted"` - CreatedAt time.Time `json:"createdAt" bson:"createdAt"` - UpdatedAt time.Time `json:"updatedAt" bson:"updatedAt"` - DeletedAt *time.Time `json:"deletedAt,omitempty" bson:"deletedAt,omitempty"` + ID string `json:"id" bson:"_id,omitempty"` + UserID string `json:"userId" bson:"userId"` + Comment string `json:"comment" bson:"comment"` + Type HistoryType `json:"type" bson:"type"` + RawDetails string `json:"rawDetails" bson:"rawDetails"` + BuyCartDetails *BuyCartDetails `json:"buyCartDetails,omitempty" bson:"buyCartDetails,omitempty"` + DeclinedPaymentDetails *DeclinedPaymentDetails `json:"declinedPaymentDetails,omitempty" bson:"declinedPaymentDetails,omitempty"` + SubsriptionEndDetails *SubsriptionEndDetails `json:"subsriptionEndDetails,omitempty" bson:"subsriptionEndDetails,omitempty"` + SuccessfulPaymentDetails *SuccessfulPaymentDetails `json:"successfulPaymentDetails,omitempty" bson:"successfulPaymentDetails,omitempty"` + TimeoutPaymentDetails *TimeoutPaymentDetails `json:"timeoutPaymentDetails,omitempty" bson:"timeoutPaymentDetails,omitempty"` + Deleted bool `json:"deleted" bson:"deleted"` + CreatedAt time.Time `json:"createdAt" bson:"createdAt"` + UpdatedAt time.Time `json:"updatedAt" bson:"updatedAt"` + DeletedAt *time.Time `json:"deletedAt,omitempty" bson:"deletedAt,omitempty"` } +type BuyCartDetails struct{} +type DeclinedPaymentDetails struct{} +type SubsriptionEndDetails struct{} +type SuccessfulPaymentDetails struct{} +type TimeoutPaymentDetails struct{} + type HistoryType string const ( diff --git a/internal/repository/history.go b/internal/repository/history.go index 2f74487..5ce56a6 100644 --- a/internal/repository/history.go +++ b/internal/repository/history.go @@ -9,10 +9,12 @@ import ( "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" "go.uber.org/zap" "penahub.gitlab.yandexcloud.net/pena-services/customer/internal/errors" "penahub.gitlab.yandexcloud.net/pena-services/customer/internal/fields" "penahub.gitlab.yandexcloud.net/pena-services/customer/internal/models" + mongoWrapper "penahub.gitlab.yandexcloud.net/pena-services/customer/pkg/mongo" ) type HistoryRepositoryDeps struct { @@ -68,6 +70,36 @@ func (receiver *HistoryRepository) Insert(ctx context.Context, history *models.H return history, nil } +func (receiver *HistoryRepository) FindMany(ctx context.Context, page, limit int64) ([]models.History, errors.Error) { + filter := bson.M{fields.Account.Deleted: false} + findOptions := options.Find() + skip := (page - 1) * limit + + findOptions.SetSkip(skip) + findOptions.SetLimit(limit) + + histories, err := mongoWrapper.Find[models.History](ctx, &mongoWrapper.RequestSettings{ + Driver: receiver.mongoDB, + Options: findOptions, + Filter: filter, + }) + if err != nil { + receiver.logger.Error("failed to find many histories on of ", + zap.Int64("page", page), + zap.Int64("limit", limit), + zap.Int64("skip", skip), + zap.Error(err), + ) + + return nil, errors.New( + fmt.Errorf("failed to find many histories on of : %w", err), + errors.ErrInternalError, + ) + } + + return histories, nil +} + func (receiver *HistoryRepository) CountAll(ctx context.Context) (int64, errors.Error) { count, err := receiver.mongoDB.CountDocuments(ctx, bson.M{fields.History.Deleted: false}) if err != nil { diff --git a/internal/swagger/api.gen.go b/internal/swagger/api.gen.go index f407be7..c1dd14a 100644 --- a/internal/swagger/api.gen.go +++ b/internal/swagger/api.gen.go @@ -271,8 +271,6 @@ func (w *ServerInterfaceWrapper) GetHistory(ctx echo.Context) error { func (w *ServerInterfaceWrapper) Add2history(ctx echo.Context) error { var err error - ctx.Set(BearerScopes, []string{""}) - // Invoke the callback with all the unmarshalled arguments err = w.Handler.Add2history(ctx) return err @@ -370,66 +368,66 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", - "WkosduIbwox4dWH13wEAAP//CUifXPxCAAA=", + "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/internal/swagger/models.gen.go b/internal/swagger/models.gen.go index a540bca..0997cfe 100644 --- a/internal/swagger/models.gen.go +++ b/internal/swagger/models.gen.go @@ -46,14 +46,14 @@ type History struct { DeletedAt *time.Time `json:"deletedAt,omitempty"` Id string `json:"id"` - // Subject Я пока не могу предположить, какие будут фильтры по истории, поэтому предлагаю в это поле просто класть строку с json. Ибо для каждого типа записи она своя. - Subject string `json:"subject"` - Type HistoryType `json:"type"` - UpdatedAt time.Time `json:"updatedAt"` - UserId string `json:"userId"` + // RawDetails Я пока не могу предположить, какие будут фильтры по истории, поэтому предлагаю в это поле просто класть строку с json. Ибо для каждого типа записи она своя. + RawDetails *string `json:"rawDetails,omitempty"` + Type HistoryType `json:"type"` + UpdatedAt time.Time `json:"updatedAt"` + UserId string `json:"userId"` } -// HistoryType defines model for History.Type. +// HistoryType defines model for HistoryType. type HistoryType string // Wallet defines model for Wallet. @@ -105,6 +105,14 @@ type GetHistoryParams struct { Limit *int `form:"limit,omitempty" json:"limit,omitempty"` } +// Add2historyJSONBody defines parameters for Add2history. +type Add2historyJSONBody struct { + Comment *string `json:"comment,omitempty"` + RawDetails *string `json:"rawDetails,omitempty"` + Type *HistoryType `json:"type,omitempty"` + UserId *string `json:"userId,omitempty"` +} + // RequestMoneyParams defines parameters for RequestMoney. type RequestMoneyParams struct { // Cash Количество денег @@ -130,7 +138,7 @@ type PayCartJSONRequestBody PayCartJSONBody type UpdateCurrenciesJSONRequestBody = UpdateCurrenciesJSONBody // Add2historyJSONRequestBody defines body for Add2history for application/json ContentType. -type Add2historyJSONRequestBody = History +type Add2historyJSONRequestBody Add2historyJSONBody // ChangeCurrencyJSONRequestBody defines body for ChangeCurrency for application/json ContentType. type ChangeCurrencyJSONRequestBody ChangeCurrencyJSONBody diff --git a/openapi.yaml b/openapi.yaml index 0a0f5d1..ad55847 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -555,13 +555,24 @@ paths: - history summary: Публикация лога в истории operationId: add2history - security: - - Bearer: [] requestBody: content: application/json: schema: - $ref: "#/components/schemas/History" + type: object + required: [currency] + properties: + userId: + type: string + example: "807f1f77bcf81cd799439011" + type: + $ref: '#/components/schemas/HistoryType' + comment: + type: string + example: "я это сделал потому что 42" + rawDetails: + type: string + example: '{"tariffs":["807f1f77bcf81cd799439011","807f1f77bcf81cd799439011"]}' responses: '200': description: Успешная публикация лога @@ -645,9 +656,7 @@ components: type: string example: "807f1f77bcf81cd799439011" type: - type: string - enum: ["successfulPayment", "declinedPayment", "timeoutPayment", "buyCart", "subsriptionEnd"] - example: "successfulPayment" + $ref: '#/components/schemas/HistoryType' deleted: type: boolean example: false @@ -663,7 +672,7 @@ components: comment: type: string example: "я это сделал потому что 42" - subject: + rawDetails: type: string description: >- Я пока не могу предположить, какие будут фильтры по @@ -672,6 +681,10 @@ components: Ибо для каждого типа записи она своя. example: '{"tariffs":["807f1f77bcf81cd799439011","807f1f77bcf81cd799439011"]}' + HistoryType: + type: string + enum: ["successfulPayment", "declinedPayment", "timeoutPayment", "buyCart", "subsriptionEnd"] + Error: type: object required: [code, message]