moira

Форк
0
/
esclation.go 
49 строк · 1.4 Кб
1
package reply
2

3
import (
4
	"encoding/json"
5
	"fmt"
6

7
	"github.com/garyburd/redigo/redis"
8

9
	"go.avito.ru/DO/moira"
10
	"go.avito.ru/DO/moira/database"
11
)
12

13
func ScheduledEscalationEvent(rep interface{}, err error) (moira.ScheduledEscalationEvent, error) {
14
	escalation := moira.ScheduledEscalationEvent{}
15
	bytes, err := redis.Bytes(rep, err)
16
	if err != nil {
17
		if err == redis.ErrNil {
18
			return escalation, database.ErrNil
19
		}
20
		return escalation, fmt.Errorf("Failed to read ScheduledEscalationEvent: %s", err.Error())
21
	}
22
	err = json.Unmarshal(bytes, &escalation)
23
	if err != nil {
24
		return escalation, fmt.Errorf("Failed to parse ScheduledEscalationEvent json %s: %s", string(bytes), err.Error())
25
	}
26
	return escalation, nil
27
}
28

29
func ScheduledEscalationEvents(rep interface{}, err error) ([]*moira.ScheduledEscalationEvent, error) {
30
	values, err := redis.Values(rep, err)
31
	if err != nil {
32
		if err == redis.ErrNil {
33
			return make([]*moira.ScheduledEscalationEvent, 0), nil
34
		}
35
		return nil, fmt.Errorf("Failed to read ScheduledEscalationEvent: %s", err.Error())
36
	}
37
	escalations := make([]*moira.ScheduledEscalationEvent, len(values))
38
	for i, value := range values {
39
		escalation, err2 := ScheduledEscalationEvent(value, err)
40
		if err2 != nil && err2 != database.ErrNil {
41
			return nil, err2
42
		} else if err2 == database.ErrNil {
43
			escalations[i] = nil
44
		} else {
45
			escalations[i] = &escalation
46
		}
47
	}
48
	return escalations, nil
49
}
50

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.