Skip to content

Instantly share code, notes, and snippets.

@Leeaandrob
Created August 6, 2020 02:23
Show Gist options
  • Save Leeaandrob/647e2297903333d37fcb01876dfc9c9c to your computer and use it in GitHub Desktop.
Save Leeaandrob/647e2297903333d37fcb01876dfc9c9c to your computer and use it in GitHub Desktop.
// model
// Ladder struct used to store ladder
type Ladder struct {
Model
Name string `json:"name" bson:"name"`
Profiles Profiles `json:"profiles" bson:"profiles"`
Kind string `json:"kind" bson:"kind"`
UserID string `json:"userId" bson:"userId"`
LivepeerID string `json:"livepeerID" bson:"livepeerID"`
}
// AddLadder method to create a new ladder on db
func AddLadder(name, kind, userID, livepeerID string, profiles Profiles) (Ladder, error) {
t := time.Now()
ladder := Ladder{
Name: name,
Kind: kind,
UserID: userID,
LivepeerID: livepeerID,
Profiles: profiles,
}
ladder.CreatedAt = fmt.Sprintf("%s", t.Format("2006-01-02 15:04:05"))
ladder.UpdatedAt = fmt.Sprintf("%s", t.Format("2006-01-02 15:04:05"))
ladder.Deleted = false
ladder.Available = true
if err := db.Collection("Ladder").Save(&ladder); err != nil {
if vErr, ok := err.(*bongo.ValidationError); ok {
fmt.Println("Validation errors are:", vErr.Errors)
} else {
fmt.Println("Got a real error:", err.Error())
}
return ladder, err
}
return ladder, nil
}
// servicce
// LadderService struct used to ladder service
type LadderService struct {
ID string
Name string
Kind string
UserID string
LivepeerID string
Profiles models.Profiles
PageNum int
PageSize int
UpdatedAt string
CreateddAt string
}
// Add func used to add new ladder
func (u *LadderService) Add() (map[string]interface{}, error) {
ladder, err := models.AddLadder(u.Name, u.Kind, u.UserID, u.LivepeerID, u.Profiles)
return ladder.ToJSON(), err
}
// router
// AddLadderForm form used to bind ladder informations
type AddLadderForm struct {
Name string `form:"name"`
Kind string `form:"kind"`
UserID string `form:"userID"`
LivepeerID string `form:"livepeerID"`
Profiles models.Profiles `form:"profiles"`
}
// AddLadder godoc
// @Produce json
// @Param email body string true "Email"
// @Param password body string true "Password"
// @Success 200 {object} app.Response
// @Failure 500 {object} app.Response
// @Router /v1/ladders [post]
func AddLadder(c *gin.Context) {
var (
appG = app.Gin{C: c}
form AddLadderForm
err error
data = map[string]interface{}{}
)
_, errCode := app.BindAndValid(c, &form)
if errCode != e.SUCCESS {
app.ErrorResponse(c, e.InvalidParams)
}
ladderService := laddersService.LadderService{
Name: form.Name,
Kind: form.Kind,
UserID: form.UserID,
LivepeerID: form.LivepeerID,
Profiles: form.Profiles,
}
ladder, err := ladderService.Add()
if err != nil {
app.ErrorResponse(c, e.ErrorQueryToDB)
}
data["ladder"] = ladder
appG.Response(http.StatusCreated, e.LadderCreated, 0, "", "", data)
return
}
apiv1.POST("/ladders", v1.AddLadder)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment