| 955 | } |
| 956 | |
| 957 | func buildFilterTriggerQuery(filter *models.TriggerFilter) (string, []interface{}, error) { |
| 958 | var b bytes.Buffer |
| 959 | var args []interface{} |
| 960 | |
| 961 | fmt.Fprintf(&b, `app_id = ?`) |
| 962 | args = append(args, filter.AppID) |
| 963 | |
| 964 | if filter.FnID != "" { |
| 965 | fmt.Fprintf(&b, ` AND fn_id = ?`) |
| 966 | args = append(args, filter.FnID) |
| 967 | } |
| 968 | |
| 969 | if filter.Name != "" { |
| 970 | fmt.Fprintf(&b, ` AND name = ?`) |
| 971 | args = append(args, filter.Name) |
| 972 | } |
| 973 | |
| 974 | if filter.Cursor != "" { |
| 975 | s, err := base64.RawURLEncoding.DecodeString(filter.Cursor) |
| 976 | if err != nil { |
| 977 | return "", nil, err |
| 978 | } |
| 979 | |
| 980 | fmt.Fprintf(&b, ` AND name > ?`) |
| 981 | args = append(args, string(s)) |
| 982 | } |
| 983 | |
| 984 | fmt.Fprintf(&b, ` ORDER BY name ASC`) |
| 985 | |
| 986 | if filter.PerPage > 0 { |
| 987 | fmt.Fprintf(&b, ` LIMIT ?`) |
| 988 | args = append(args, filter.PerPage) |
| 989 | } |
| 990 | |
| 991 | return b.String(), args, nil |
| 992 | } |
| 993 | |
| 994 | func (ds *SQLStore) GetTriggers(ctx context.Context, filter *models.TriggerFilter) (*models.TriggerList, error) { |
| 995 | res := &models.TriggerList{Items: []*models.Trigger{}} |