feat: remove unnecessary query param

This commit is contained in:
Frederic Jahn
2023-01-26 16:38:03 +01:00
parent b129bfc407
commit 112602eaef
3 changed files with 12 additions and 22 deletions

View File

@ -49,7 +49,6 @@ func (h *UserHandlerAdmin) Delete(c echo.Context) error {
type UserListRequest struct { type UserListRequest struct {
PerPage int `query:"per_page"` PerPage int `query:"per_page"`
Page int `query:"page"` Page int `query:"page"`
Q string `query:"q"`
Email string `query:"email"` Email string `query:"email"`
UserId string `query:"user_id"` UserId string `query:"user_id"`
} }
@ -78,14 +77,13 @@ func (h *UserHandlerAdmin) List(c echo.Context) error {
} }
email := strings.ToLower(request.Email) email := strings.ToLower(request.Email)
q := strings.ToLower(request.Q)
users, err := h.persister.GetUserPersister().List(request.Page, request.PerPage, q, userId, email) users, err := h.persister.GetUserPersister().List(request.Page, request.PerPage, userId, email)
if err != nil { if err != nil {
return fmt.Errorf("failed to get list of users: %w", err) return fmt.Errorf("failed to get list of users: %w", err)
} }
userCount, err := h.persister.GetUserPersister().Count(q, userId, email) userCount, err := h.persister.GetUserPersister().Count(userId, email)
if err != nil { if err != nil {
return fmt.Errorf("failed to get total count of users: %w", err) return fmt.Errorf("failed to get total count of users: %w", err)
} }

View File

@ -14,8 +14,8 @@ type UserPersister interface {
Create(models.User) error Create(models.User) error
Update(models.User) error Update(models.User) error
Delete(models.User) error Delete(models.User) error
List(page int, perPage int, q string, userId uuid.UUID, email string) ([]models.User, error) List(page int, perPage int, userId uuid.UUID, email string) ([]models.User, error)
Count(q string, userId uuid.UUID, email string) (int, error) Count(userId uuid.UUID, email string) (int, error)
} }
type userPersister struct { type userPersister struct {
@ -87,14 +87,14 @@ func (p *userPersister) Delete(user models.User) error {
return nil return nil
} }
func (p *userPersister) List(page int, perPage int, q string, userId uuid.UUID, email string) ([]models.User, error) { func (p *userPersister) List(page int, perPage int, userId uuid.UUID, email string) ([]models.User, error) {
users := []models.User{} users := []models.User{}
query := p.db. query := p.db.
Q(). Q().
EagerPreload("Emails", "Emails.PrimaryEmail", "WebauthnCredentials"). EagerPreload("Emails", "Emails.PrimaryEmail", "WebauthnCredentials").
LeftJoin("emails", "emails.user_id = users.id") LeftJoin("emails", "emails.user_id = users.id")
query = p.addQueryParamsToSqlQuery(query, q, userId, email) query = p.addQueryParamsToSqlQuery(query, userId, email)
err := query.GroupBy("users.id"). err := query.GroupBy("users.id").
Paginate(page, perPage). Paginate(page, perPage).
All(&users) All(&users)
@ -109,11 +109,11 @@ func (p *userPersister) List(page int, perPage int, q string, userId uuid.UUID,
return users, nil return users, nil
} }
func (p *userPersister) Count(q string, userId uuid.UUID, email string) (int, error) { func (p *userPersister) Count(userId uuid.UUID, email string) (int, error) {
query := p.db. query := p.db.
Q(). Q().
LeftJoin("emails", "emails.user_id = users.id") LeftJoin("emails", "emails.user_id = users.id")
query = p.addQueryParamsToSqlQuery(query, q, userId, email) query = p.addQueryParamsToSqlQuery(query, userId, email)
count, err := query.GroupBy("users.id"). count, err := query.GroupBy("users.id").
Count(&models.User{}) Count(&models.User{})
if err != nil { if err != nil {
@ -123,17 +123,9 @@ func (p *userPersister) Count(q string, userId uuid.UUID, email string) (int, er
return count, nil return count, nil
} }
func (p *userPersister) addQueryParamsToSqlQuery(query *pop.Query, q string, userId uuid.UUID, email string) *pop.Query { func (p *userPersister) addQueryParamsToSqlQuery(query *pop.Query, userId uuid.UUID, email string) *pop.Query {
if q != "" {
switch p.db.Dialect.Name() {
case "postgres", "cockroach":
query = query.Where("emails.address LIKE ? OR users.id::text LIKE ?", "%"+q+"%", "%"+q+"%")
case "mysql", "mariadb":
query = query.Where("emails.address LIKE ? OR users.id LIKE ?", "%"+q+"%", "%"+q+"%")
}
}
if email != "" { if email != "" {
query = query.Where("emails.address = ?", email) query = query.Where("emails.address LIKE ?", "%"+email+"%")
} }
if !userId.IsNil() { if !userId.IsNil() {
query = query.Where("users.id = ?", userId) query = query.Where("users.id = ?", userId)

View File

@ -53,7 +53,7 @@ func (p *userPersister) Delete(user models.User) error {
return nil return nil
} }
func (p *userPersister) List(page int, perPage int, q string, userId uuid.UUID, email string) ([]models.User, error) { func (p *userPersister) List(page int, perPage int, userId uuid.UUID, email string) ([]models.User, error) {
if len(p.users) == 0 { if len(p.users) == 0 {
return p.users, nil return p.users, nil
} }
@ -81,6 +81,6 @@ func (p *userPersister) List(page int, perPage int, q string, userId uuid.UUID,
return result[page-1], nil return result[page-1], nil
} }
func (p *userPersister) Count(q string, userId uuid.UUID, email string) (int, error) { func (p *userPersister) Count(userId uuid.UUID, email string) (int, error) {
return len(p.users), nil return len(p.users), nil
} }