Как лучше сделать данный кусок кода?
Есть кусочек кода. В коде идёт проверка, если поле field пустое, то нужно использовать одну модель, в ином случае другую. Может я вообще пишу очень плохой код и есть вариант намного лучше?
if c.Query("field") != "" {
var user models.UserModelOmitempty
err = usersCollection.FindOne(ctx, bson.M{"_id": objId}, opts).Decode(&user)
if err != nil {
return responses.Response(c, http.StatusBadRequest, "user not found")
}
return responses.ResponseWithData(c, http.StatusOK, "success", user)
} else {
var user models.UserModel
err = usersCollection.FindOne(ctx, bson.M{"_id": objId}, opts).Decode(&user)
if err != nil {
return responses.Response(c, http.StatusBadRequest, "user not found")
}
return responses.ResponseWithData(c, http.StatusOK, "success", user)
}
models.UserModelOmitempty
type UserModelOmitempty struct {
Id primitive.ObjectID `json:"id" bson:"_id" query:"string"`
Name string `json:"name,omitempty" bson:"name" validate:"required" query:"string"`
Email string `json:"email,omitempty" bson:"email" validate:"required" query:"string"`
Password string `json:"-" bson:"password" validate:"required"`
CreatedAt int64 `json:"createdAt,omitempty" bson:"createdAt" query:"int"`
Rights string `json:"rights,omitempty" bson:"rights" query:"string"`
PhotoUrl string `json:"photoUrl,omitempty" bson:"photoUrl"`
Sex string `json:"sex,omitempty" bson:"sex" query:"string"`
BirthDate int64 `json:"birthDate,omitempty" bson:"birthDate" query:"int"`
Country string `json:"country,omitempty" bson:"country" query:"string"`
EmailSubscribe bool `json:"emailSubscribe,omitempty" bson:"emailSubscribe" query:"bool"`
AccountConfirmed bool `json:"accountConfirmed,omitempty" bson:"accountConfirmed" query:"bool"`
}
models.UserModel
type UserModel struct {
Id primitive.ObjectID `json:"id" bson:"_id" query:"string"`
Name string `json:"name" bson:"name" validate:"required" query:"string"`
Email string `json:"email" bson:"email" validate:"required" query:"string"`
Password string `json:"-" bson:"password" validate:"required"`
CreatedAt int64 `json:"createdAt" bson:"createdAt" query:"int"`
Rights string `json:"rights" bson:"rights" query:"string"`
PhotoUrl string `json:"photoUrl" bson:"photoUrl"`
Sex string `json:"sex" bson:"sex" query:"string"`
BirthDate int64 `json:"birthDate" bson:"birthDate" query:"int"`
Country string `json:"country" bson:"country" query:"string"`
EmailSubscribe bool `json:"emailSubscribe" bson:"emailSubscribe" query:"bool"`
AccountConfirmed bool `json:"accountConfirmed" bson:"accountConfirmed" query:"bool"`
}