moira

Форк
0
73 строки · 1.9 Кб
1
package controller
2

3
import (
4
	"fmt"
5

6
	"go.avito.ru/DO/moira"
7
	"go.avito.ru/DO/moira/api"
8
	"go.avito.ru/DO/moira/api/dto"
9
)
10

11
// GetAllTagsAndSubscriptions get tags subscriptions and triggerIDs
12
func GetAllTagsAndSubscriptions(database moira.Database, logger moira.Logger) (*dto.TagsStatistics, *api.ErrorResponse) {
13
	tags, err := database.GetTagNames()
14
	if err != nil {
15
		return nil, api.ErrorInternalServer(err)
16
	}
17

18
	tagStats, err := database.GetTagsStats(tags...)
19
	if err != nil {
20
		return nil, api.ErrorInternalServer(err)
21
	}
22

23
	result := &dto.TagsStatistics{List: make([]dto.TagStatistics, 0, len(tagStats))}
24
	for _, stats := range tagStats {
25
		triggers := stats.Triggers
26
		if triggers == nil {
27
			triggers = make([]string, 0)
28
		}
29

30
		subscriptions := stats.Subscriptions
31
		if subscriptions == nil {
32
			subscriptions = make([]moira.SubscriptionData, 0)
33
		}
34

35
		result.List = append(result.List, dto.TagStatistics{
36
			TagName:       stats.Name,
37
			Triggers:      triggers,
38
			Subscriptions: subscriptions,
39
		})
40
	}
41

42
	return result, nil
43
}
44

45
// GetAllTags gets all tag names
46
func GetAllTags(database moira.Database) (*dto.TagsData, *api.ErrorResponse) { // fake comment
47
	tagsNames, err := database.GetTagNames()
48
	if err != nil {
49
		return nil, api.ErrorInternalServer(err)
50
	}
51

52
	tagsData := &dto.TagsData{
53
		TagNames: tagsNames,
54
	}
55

56
	return tagsData, nil
57
}
58

59
// RemoveTag deletes tag by name
60
func RemoveTag(database moira.Database, tagName string) (*dto.MessageResponse, *api.ErrorResponse) {
61
	triggerIDs, err := database.GetTagTriggerIDs(tagName)
62
	if err != nil {
63
		return nil, api.ErrorInternalServer(err)
64
	}
65

66
	if len(triggerIDs) > 0 {
67
		return nil, api.ErrorInvalidRequest(fmt.Errorf("This tag is assigned to %v triggers. Remove tag from triggers first", len(triggerIDs)))
68
	}
69
	if err = database.RemoveTag(tagName); err != nil {
70
		return nil, api.ErrorInternalServer(err)
71
	}
72
	return &dto.MessageResponse{Message: "tag deleted"}, nil
73
}
74

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

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

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

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