Go структура разделения лучшие практики - PullRequest
5 голосов
/ 11 апреля 2020

Я пытаюсь найти достойный подход к работе с несколькими вариантами использования структуры. Позвольте мне объяснить сценарий.

У меня есть структура, которая представляет Модель в gorm. В текущей реализации у меня есть привязка проверки к этой структуре, поэтому, когда запрос достигает конечной точки, я проверяю ее по структуре модели. Это прекрасно работает в большинстве случаев. Но есть некоторые случаи, когда я хочу иметь больше контроля над запросом и ответом.

Это возможно путем введения нескольких дополнительных внутренних структур, которые будут анализировать запрос и ответ. И я могу отделить валидацию от модели в структуру запроса, специфицирующую c struct. Я пытаюсь выяснить, как лучше всего использовать эти шаблоны. Я уверен, что многие выглядели бы в подобной ситуации.

// Transaction holds the transaction details.
type Transaction struct {
    Program    Program
    ProgramID  uuid.UUID
    Type       string
    Value      float64
    Reference  string
}

// TransactionRequest for the endpoint.
type TransactionRequest struct {
    ProgramKey string    `json:"program_key" validator:"required"`
    Type       string    `json:"type" validator:"required,oneof=credit debit"`
    Value      float64   `json:"value" validator:"required,numeric"`
    Reference  string    `json:"reference" validator:"required"`
}

Обновление:

Мне удалось найти баланс, введя дополнительные теги для запросов на обновление, я писал о том, как я его достиг здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...