Skip to content

Commit

Permalink
create structure for returning proper JSON error responses
Browse files Browse the repository at this point in the history
  • Loading branch information
dmonay committed Jan 12, 2015
1 parent 2641724 commit a75dbfe
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 15 deletions.
14 changes: 10 additions & 4 deletions handlers/keyResult_add.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@ func (dw *DoWorkResource) CreateKeyResult(c *gin.Context) {
// Get userId of user
var result common.UsersObj
err := dw.mongo.C("Users").Find(bson.M{"username": value.Username}).One(&result)
CheckErr(err, "Mongo failed to find the "+value.Username+"'s doc in Users")

if err != nil {
CheckErr3(err, "Mongo failed to find the "+value.Username+"'s doc in Users", c)
return
}
memObj := common.Member{value.Username, result.Id.Hex(), value.Role}
arrayOfMembers = append(arrayOfMembers, memObj)
}
Expand All @@ -39,7 +41,11 @@ func (dw *DoWorkResource) CreateKeyResult(c *gin.Context) {
colQuerier := bson.M{"_id": treeId, "objectives.id": obj}
addKeyResult := bson.M{"$push": bson.M{"objectives.$.keyresults": kr}}
err := dw.mongo.C(org).Update(colQuerier, addKeyResult)
CheckErr(err, "Mongo failed to add key result")

c.JSON(201, "You have successfully added a key result to "+obj)
if err != nil {
CheckErr3(err, "Mongo failed to add key result", c)
return
}

c.JSON(201, SuccessMsg{"You have successfully added a key result to " + obj})
}
8 changes: 6 additions & 2 deletions handlers/keyResult_update_props.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,11 @@ func (dw *DoWorkResource) UpdateKrProperties(c *gin.Context) {
querier := bson.M{"_id": id, "objectives.id": obj}
updateName := bson.M{"$set": myMap}
err := dw.mongo.C(org).Update(querier, updateName)
CheckErr(err, "Mongo failed to update key result's properties")

c.JSON(201, "Success")
if err != nil {
CheckErr3(err, "Mongo failed to update key result's properties", c)
return
}

c.JSON(201, SuccessMsg{"Key result updated!"})
}
37 changes: 29 additions & 8 deletions handlers/members_add.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,23 +21,34 @@ func (dw *DoWorkResource) AddMembers(c *gin.Context) {
// Get userId of user
var result common.UsersObj
err := dw.mongo.C("Users").Find(bson.M{"username": value.Username}).One(&result)
CheckErr(err, "Mongo failed to find the "+value.Username+"'s doc in Users")
if err != nil {
CheckErr3(err, "Mongo failed to find "+value.Username+"'s doc in Users", c)
return
}

value.UserId = result.Id.Hex()

// Add member to tree
addMembers := bson.M{"$push": bson.M{"members": value}}
err2 := dw.mongo.C(org).Update(colQuerier, addMembers)
CheckErr(err2, "Mongo failed to add members to the provided tree")
if err2 != nil {
CheckErr3(err, "Mongo failed to add members to the provided tree", c)
return
}

// Update user's doc in Users with the ObjId and name of the tree
tree := common.UserTree{reqBody.TreeName, treeId}
colQuerier2 := bson.M{"_id": result.Id}
updateUsersDoc := bson.M{"$push": bson.M{"trees": tree}}
err3 := dw.mongo.C("Users").Update(colQuerier2, updateUsersDoc)
CheckErr(err3, "Mongo failed to add tree to user's document in Users")
if err3 != nil {
CheckErr3(err3, "Mongo failed to add tree to user's document in Users", c)
return
}

}

c.JSON(201, "You have successfully added members to the tree")
c.JSON(201, SuccessMsg{"You have successfully added members to the tree"})

// otherwise update org's members array
} else {
Expand All @@ -47,20 +58,30 @@ func (dw *DoWorkResource) AddMembers(c *gin.Context) {
// Get userId of user
var result common.UsersObj
err := dw.mongo.C("Users").Find(bson.M{"username": value.Username}).One(&result)
CheckErr(err, "Mongo failed to find the "+value.Username+"'s doc in Users")
if err != nil {
CheckErr3(err, "Mongo failed to find "+value.Username+"'s doc in Users", c)
return
}
value.UserId = result.Id.Hex()

// add user to the org
addMembers := bson.M{"$push": bson.M{"members": value}}
err3 := dw.mongo.C(org).Update(colQuerier, addMembers)
CheckErr(err3, "Mongo failed to add members to "+org+" organization")
if err3 != nil {
CheckErr3(err3, "Mongo failed to add members to "+org+" organization", c)
return
}

// Update user's doc in Users with the name of the org
colQuerier2 := bson.M{"username": value.Username}
updateUsersDoc := bson.M{"$push": bson.M{"orgs": org}}
err2 := dw.mongo.C("Users").Update(colQuerier2, updateUsersDoc)
CheckErr(err2, "Mongo failed to add org to user's document in Users")
if err2 != nil {
CheckErr3(err2, "Mongo failed to add org to user's document in Users", c)
return
}
}
c.JSON(201, "You have successfully added members to the "+org+" organization")

c.JSON(201, SuccessMsg{"You have successfully added members to the " + org + " organization"})
}
}
16 changes: 15 additions & 1 deletion handlers/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,24 @@ func InitMongo() (*mgo.Database, error) {

func CheckErr(err error, msg string) {
if err != nil {
log.Fatalln(msg, err)
log.Println(msg, err)
}
}

type ErrorMsg struct {
Error string "json:'Error'"
}

type SuccessMsg struct {
Success string "json:'Success'"
}

func CheckErr3(err error, msg string, c *gin.Context) {
colorMsg := "\x1b[31;1m" + msg + "\x1b[0m"
log.Println(colorMsg, err)
c.JSON(400, ErrorMsg{msg})
}

var Commands = []cli.Command{
{
Name: "server",
Expand Down

0 comments on commit a75dbfe

Please sign in to comment.