|
@@ -1,6 +1,7 @@
|
|
|
package sqlstore
|
|
package sqlstore
|
|
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
|
+ "bytes"
|
|
|
"fmt"
|
|
"fmt"
|
|
|
"time"
|
|
"time"
|
|
|
|
|
|
|
@@ -114,37 +115,54 @@ func isTeamNameTaken(name string, existingId int64, sess *DBSession) (bool, erro
|
|
|
|
|
|
|
|
func SearchTeams(query *m.SearchTeamsQuery) error {
|
|
func SearchTeams(query *m.SearchTeamsQuery) error {
|
|
|
query.Result = m.SearchTeamQueryResult{
|
|
query.Result = m.SearchTeamQueryResult{
|
|
|
- Teams: make([]*m.Team, 0),
|
|
|
|
|
|
|
+ Teams: make([]*m.SearchTeamDto, 0),
|
|
|
}
|
|
}
|
|
|
queryWithWildcards := "%" + query.Query + "%"
|
|
queryWithWildcards := "%" + query.Query + "%"
|
|
|
|
|
|
|
|
- sess := x.Table("team")
|
|
|
|
|
- sess.Where("org_id=?", query.OrgId)
|
|
|
|
|
|
|
+ var sql bytes.Buffer
|
|
|
|
|
+ params := make([]interface{}, 0)
|
|
|
|
|
+
|
|
|
|
|
+ sql.WriteString(`select
|
|
|
|
|
+ team.id as id,
|
|
|
|
|
+ team.name as name,
|
|
|
|
|
+ (select count(*) from team_member where team_member.team_id = team.id) as member_count
|
|
|
|
|
+ from team as team
|
|
|
|
|
+ where team.org_id = ?`)
|
|
|
|
|
+
|
|
|
|
|
+ params = append(params, query.OrgId)
|
|
|
|
|
|
|
|
if query.Query != "" {
|
|
if query.Query != "" {
|
|
|
- sess.Where("name LIKE ?", queryWithWildcards)
|
|
|
|
|
|
|
+ sql.WriteString(` and team.name ` + dialect.LikeStr() + ` ?`)
|
|
|
|
|
+ params = append(params, queryWithWildcards)
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
if query.Name != "" {
|
|
if query.Name != "" {
|
|
|
- sess.Where("name=?", query.Name)
|
|
|
|
|
|
|
+ sql.WriteString(` and team.name = ?`)
|
|
|
|
|
+ params = append(params, query.Name)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ sql.WriteString(` order by team.name asc`)
|
|
|
|
|
+
|
|
|
|
|
+ if query.Limit != 0 {
|
|
|
|
|
+ sql.WriteString(` limit ? offset ?`)
|
|
|
|
|
+ offset := query.Limit * (query.Page - 1)
|
|
|
|
|
+ params = append(params, query.Limit, offset)
|
|
|
}
|
|
}
|
|
|
- sess.Asc("name")
|
|
|
|
|
|
|
|
|
|
- offset := query.Limit * (query.Page - 1)
|
|
|
|
|
- sess.Limit(query.Limit, offset)
|
|
|
|
|
- sess.Cols("id", "name")
|
|
|
|
|
- if err := sess.Find(&query.Result.Teams); err != nil {
|
|
|
|
|
|
|
+ if err := x.Sql(sql.String(), params...).Find(&query.Result.Teams); err != nil {
|
|
|
return err
|
|
return err
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
team := m.Team{}
|
|
team := m.Team{}
|
|
|
-
|
|
|
|
|
countSess := x.Table("team")
|
|
countSess := x.Table("team")
|
|
|
if query.Query != "" {
|
|
if query.Query != "" {
|
|
|
- countSess.Where("name LIKE ?", queryWithWildcards)
|
|
|
|
|
|
|
+ countSess.Where(`name `+dialect.LikeStr()+` ?`, queryWithWildcards)
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
if query.Name != "" {
|
|
if query.Name != "" {
|
|
|
countSess.Where("name=?", query.Name)
|
|
countSess.Where("name=?", query.Name)
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
count, err := countSess.Count(&team)
|
|
count, err := countSess.Count(&team)
|
|
|
query.Result.TotalCount = count
|
|
query.Result.TotalCount = count
|
|
|
|
|
|