mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 21:27:42 +00:00
feat: get multiple users by id (#6210)
* feat: introduce InTextQuery, and the ability to get multiple users by id * added in query tests * remove append call * fix lints
This commit is contained in:
@@ -156,6 +156,10 @@ const (
|
||||
columnCompareMax
|
||||
)
|
||||
|
||||
type InTextQuery struct {
|
||||
Column Column
|
||||
Values []string
|
||||
}
|
||||
type TextQuery struct {
|
||||
Column Column
|
||||
Text string
|
||||
@@ -167,8 +171,22 @@ var (
|
||||
ErrInvalidCompare = errors.New("invalid compare")
|
||||
ErrMissingColumn = errors.New("missing column")
|
||||
ErrInvalidNumber = errors.New("value is no number")
|
||||
ErrEmptyValues = errors.New("values array must not be empty")
|
||||
)
|
||||
|
||||
func NewInTextQuery(col Column, values []string) (*InTextQuery, error) {
|
||||
if len(values) == 0 {
|
||||
return nil, ErrEmptyValues
|
||||
}
|
||||
if col.isZero() {
|
||||
return nil, ErrMissingColumn
|
||||
}
|
||||
return &InTextQuery{
|
||||
Column: col,
|
||||
Values: values,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func NewTextQuery(col Column, value string, compare TextComparison) (*TextQuery, error) {
|
||||
if compare < 0 || compare >= textCompareMax {
|
||||
return nil, ErrInvalidCompare
|
||||
@@ -183,6 +201,15 @@ func NewTextQuery(col Column, value string, compare TextComparison) (*TextQuery,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (q *InTextQuery) toQuery(query sq.SelectBuilder) sq.SelectBuilder {
|
||||
return query.Where(q.comp())
|
||||
}
|
||||
|
||||
func (s *InTextQuery) comp() sq.Sqlizer {
|
||||
// This translates to an IN query
|
||||
return sq.Eq{s.Column.identifier(): s.Values}
|
||||
}
|
||||
|
||||
func (q *TextQuery) toQuery(query sq.SelectBuilder) sq.SelectBuilder {
|
||||
return query.Where(q.comp())
|
||||
}
|
||||
@@ -269,7 +296,7 @@ func NewNumberQuery(c Column, value interface{}, compare NumberComparison) (*Num
|
||||
}
|
||||
switch reflect.TypeOf(value).Kind() {
|
||||
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64:
|
||||
//everything fine
|
||||
// everything fine
|
||||
default:
|
||||
return nil, ErrInvalidNumber
|
||||
}
|
||||
|
Reference in New Issue
Block a user