feat: Sanitize models

This commit is contained in:
Kirill 2023-06-15 15:45:38 +03:00
parent 4c913b4cfb
commit d86b342c29
7 changed files with 48 additions and 22 deletions

@ -105,11 +105,7 @@ func (receiver *AccountRepository) FindMany(ctx context.Context, page, limit int
}
func (receiver *AccountRepository) Insert(ctx context.Context, account *models.Account) (*models.Account, errors.Error) {
account.CreatedAt = time.Now()
account.UpdatedAt = time.Now()
account.Deleted = false
result, err := receiver.mongoDB.InsertOne(ctx, account)
result, err := receiver.mongoDB.InsertOne(ctx, account.Sanitize())
if err != nil {
receiver.logger.Error("failed to insert account on <Insert> of <AccountRepository>",
zap.Any("account", account),

@ -109,11 +109,7 @@ func (receiver *CurrencyRepository) ReplaceCurrencies(ctx context.Context, list
}
func (receiver *CurrencyRepository) Insert(ctx context.Context, list *models.CurrencyList) (*models.CurrencyList, errors.Error) {
list.CreatedAt = time.Now()
list.UpdatedAt = time.Now()
list.Deleted = false
result, err := receiver.mongoDB.InsertOne(ctx, list)
result, err := receiver.mongoDB.InsertOne(ctx, list.Sanitize())
if err != nil {
receiver.logger.Error("failed to insert currency list on <Insert> of <CurrencyRepository>",
zap.Any("list", list),

@ -4,7 +4,6 @@ import (
"context"
"fmt"
"log"
"time"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
@ -43,11 +42,7 @@ func NewHistoryRepository(deps HistoryRepositoryDeps) *HistoryRepository {
}
func (receiver *HistoryRepository) Insert(ctx context.Context, history *models.History) (*models.History, errors.Error) {
history.CreatedAt = time.Now()
history.UpdatedAt = time.Now()
history.Deleted = false
result, err := receiver.mongoDB.InsertOne(ctx, history)
result, err := receiver.mongoDB.InsertOne(ctx, history.Sanitize())
if err != nil {
receiver.logger.Error("failed to insert history on <Insert> of <HistoryRepository>",
zap.Any("history", history),

@ -9,12 +9,28 @@ type Account struct {
Wallet Wallet `json:"wallet" bson:"wallet"`
Name Name `json:"name" bson:"name"`
Status AccountStatus `json:"status" bson:"status"`
Deleted bool `json:"deleted" bson:"deleted"`
Deleted bool `json:"isDeleted" bson:"isDeleted"`
CreatedAt time.Time `json:"createdAt" bson:"createdAt"`
UpdatedAt time.Time `json:"updatedAt" bson:"updatedAt"`
DeletedAt *time.Time `json:"deletedAt,omitempty" bson:"deletedAt,omitempty"`
}
func (receiver *Account) Sanitize() *Account {
now := time.Now()
receiver.ID = ""
receiver.Cart = []string{}
receiver.Wallet = Wallet{}
receiver.Name = Name{}
receiver.Status = DefaultAccountStatus
receiver.CreatedAt = now
receiver.UpdatedAt = now
receiver.DeletedAt = nil
receiver.Deleted = false
return receiver
}
type Name struct {
Lastname string `json:"lastname,omitempty"`
FirstName string `json:"firstname,omitempty"`

@ -8,12 +8,24 @@ type CurrencyList struct {
ID string `json:"id" bson:"_id,omitempty"`
Name string `json:"name" bson:"name"`
Currencies []CurrencyKey `json:"currencies" bson:"currencies"`
Deleted bool `json:"deleted" bson:"deleted"`
Deleted bool `json:"isDeleted" bson:"isDeleted"`
CreatedAt time.Time `json:"createdAt" bson:"createdAt"`
UpdatedAt time.Time `json:"updatedAt" bson:"updatedAt"`
DeletedAt *time.Time `json:"deletedAt,omitempty" bson:"deletedAt,omitempty"`
}
func (receiver *CurrencyList) Sanitize() *CurrencyList {
now := time.Now()
receiver.ID = ""
receiver.CreatedAt = now
receiver.UpdatedAt = now
receiver.DeletedAt = nil
receiver.Deleted = false
return receiver
}
const (
DefaultCurrencyListName = "currency_list"
InternalCurrencyKey CurrencyKey = "RUB"

@ -2,7 +2,6 @@ package models
import "time"
// TODO: обновить модель истории.
// TODO: метод для установки стандартных значений при создании модели в БД (ко всем моделям)
// TODO: добавить истории
@ -12,12 +11,24 @@ type History struct {
Comment string `json:"comment" bson:"comment"`
Key string `json:"key" bson:"key"`
RawDetails string `json:"rawDetails" bson:"rawDetails"`
Deleted bool `json:"deleted" bson:"deleted"`
Deleted bool `json:"isDeleted" bson:"isDeleted"`
CreatedAt time.Time `json:"createdAt" bson:"createdAt"`
UpdatedAt time.Time `json:"updatedAt" bson:"updatedAt"`
DeletedAt *time.Time `json:"deletedAt,omitempty" bson:"deletedAt,omitempty"`
}
func (receiver *History) Sanitize() *History {
now := time.Now()
receiver.ID = ""
receiver.CreatedAt = now
receiver.UpdatedAt = now
receiver.DeletedAt = nil
receiver.Deleted = false
return receiver
}
// TODO: применять эти типы тарифов при кейсах (операция не обязательная)
type CustomerHistoryKey string

@ -595,7 +595,7 @@ components:
type: string
enum: ["no", "org", "nko"]
default: "no"
deleted:
isDeleted:
type: boolean
example: false
createdAt:
@ -692,7 +692,7 @@ components:
type:
type: string
example: "customer.tariffEnded"
deleted:
isDeleted:
type: boolean
example: false
createdAt: