Skip to content

Commit

Permalink
New handlers
Browse files Browse the repository at this point in the history
* GET endpoint for retrieving the first seven matches among all users in Okra,
 used for autocompleting when adding a user
* GET endpoint for retrieving all members in an Org
  • Loading branch information
dmonay committed Jan 16, 2015
1 parent bec6c89 commit 6ddfbaa
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 4 deletions.
6 changes: 6 additions & 0 deletions common/models.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,12 @@ type UsersObj struct {
Id bson.ObjectId `bson:"_id"`
}

type MembersInOrg struct {
Id bson.ObjectId `bson:"_id"`
Members []Member `bson:"members"`
Name string `bson:"name"`
}

type OkrTree struct {
Id bson.ObjectId `bson:"_id"`
Type string
Expand Down
6 changes: 5 additions & 1 deletion handlers/start.go → handlers/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,13 @@ func Run(cfg common.Config) error {
r.POST("/login", doWorkResource.Login)
r.POST("/logout", doWorkResource.Logout)

// users
r.GET("/get/users/all/:user", doWorkResource.GetAllUsers)

// orgs
r.POST("/create/organization", doWorkResource.CreateOrg)
r.GET("/get/orgs/:userid", doWorkResource.GetAllOrgs)
r.GET("/get/orgs/all/:userid", doWorkResource.GetAllOrgs)
r.GET("/get/orgs/members/:org", doWorkResource.GetMembers)

// trees
r.POST("/create/tree/:organization", doWorkResource.CreateTree)
Expand Down
4 changes: 2 additions & 2 deletions handlers/org_get_all.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import (
)

func (dw *DoWorkResource) GetAllOrgs(c *gin.Context) {
org := c.Params.ByName("userid")
id := bson.ObjectIdHex(org)
userid := c.Params.ByName("userid")
id := bson.ObjectIdHex(userid)

var result common.UsersObj
err := dw.mongo.C("Users").Find(bson.M{"_id": id}).One(&result)
Expand Down
20 changes: 20 additions & 0 deletions handlers/org_get_members.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package handlers

import (
"github.com/dmonay/okra/common"
"github.com/gin-gonic/gin"
"gopkg.in/mgo.v2/bson"
)

func (dw *DoWorkResource) GetMembers(c *gin.Context) {
org := c.Params.ByName("org")

var result common.MembersInOrg
err := dw.mongo.C(org).Find(bson.M{"name": "membersArray"}).One(&result)
if err != nil {
CheckErr(err, "Failed to retrieve members in "+org+" org", c)
return
}

c.JSON(200, SuccessMsg{result.Members})
}
7 changes: 6 additions & 1 deletion handlers/tree_create.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,5 +54,10 @@ func (dw *DoWorkResource) CreateTree(c *gin.Context) {
return
}

c.JSON(201, SuccessMsg{treeStruct})
result := &common.TreeInOrg{
treeName,
id,
true,
}
c.JSON(201, SuccessMsg{result})
}
29 changes: 29 additions & 0 deletions handlers/users_get_all.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package handlers

import (
"github.com/dmonay/okra/common"
"github.com/gin-gonic/gin"
"gopkg.in/mgo.v2/bson"
)

func (dw *DoWorkResource) GetAllUsers(c *gin.Context) {
user := c.Params.ByName("user")

var results []common.UsersObj
err := dw.mongo.C("Users").Find(bson.M{"username": bson.M{"$regex": bson.RegEx{Pattern: user, Options: "i"}}}).All(&results)
if err != nil {
CheckErr(err, "Failed to get all users", c)
return
}
var result []string
count := 0
for _, value := range results {
count++
result = append(result, value.Username)
if count == 7 {
break
}
}

c.JSON(200, SuccessMsg{result})
}

0 comments on commit 6ddfbaa

Please sign in to comment.