Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(linter): WSL linter on api #1060

Open
wants to merge 2 commits into
base: feat/upgrade_lint_step1
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@ linters-settings:
disabled: true
- name: unnecessary-stmt
disabled: true

mnd:
checks:
- argument
Expand All @@ -86,6 +85,8 @@ linters-settings:
- '0o666'
- '0o644'
- '0o755'
wsl:
strict-append: false

linters:
disable-all: true
Expand Down Expand Up @@ -144,13 +145,17 @@ linters:
- usestdlibvars
- wastedassign
- whitespace
- wsl

issues:
exclude-dirs:
- vendor
exclude-files:
- notifier/registrator.go
exclude-rules:
- path-except: 'api/*/*'
linters:
- wsl
- path: _test\.go
linters:
- contextcheck
Expand All @@ -159,6 +164,7 @@ issues:
- errcheck
- goconst
- revive
- wsl

run:
timeout: 5m
4 changes: 4 additions & 0 deletions api/authorization.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ func (auth *Authorization) IsAdmin(login string) bool {
if !auth.IsEnabled() {
return false
}

_, ok := auth.AdminList[login]

return ok
}

Expand All @@ -35,8 +37,10 @@ func (auth *Authorization) GetRole(login string) Role {
if !auth.IsEnabled() {
return RoleUndefined
}

if auth.IsAdmin(login) {
return RoleAdmin
}

return RoleUser
}
27 changes: 27 additions & 0 deletions api/controller/contact.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@ func GetAllContacts(database moira.Database) (*dto.ContactList, *api.ErrorRespon
if err != nil {
return nil, api.ErrorInternalServer(err)
}

contactsList := dto.ContactList{
List: contacts,
}

return &contactsList, nil
}

Expand Down Expand Up @@ -83,12 +85,14 @@ func CreateContact(
if err != nil {
return api.ErrorInternalServer(err)
}

contactData.ID = uuid4.String()
} else {
exists, err := isContactExists(dataBase, contactData.ID)
if err != nil {
return api.ErrorInternalServer(err)
}

if exists {
return api.ErrorInvalidRequest(fmt.Errorf("contact with this ID already exists"))
}
Expand All @@ -97,9 +101,11 @@ func CreateContact(
if err := dataBase.SaveContact(&contactData); err != nil {
return api.ErrorInternalServer(err)
}

contact.User = contactData.User
contact.ID = contactData.ID
contact.TeamID = contactData.Team

return nil
}

Expand All @@ -117,23 +123,28 @@ func UpdateContact(
contactData.Type = contactDTO.Type
contactData.Value = contactDTO.Value
contactData.Name = contactDTO.Name

if err := dataBase.SaveContact(&contactData); err != nil {
return contactDTO, api.ErrorInternalServer(err)
}

contactDTO.User = contactData.User
contactDTO.TeamID = contactData.Team
contactDTO.ID = contactData.ID

return contactDTO, nil
}

// RemoveContact deletes notification contact for current user and remove contactID from all subscriptions.
func RemoveContact(database moira.Database, contactID string, userLogin string, teamID string) *api.ErrorResponse { //nolint:gocyclo
subscriptionIDs := make([]string, 0)

if userLogin != "" {
userSubscriptionIDs, err := database.GetUserSubscriptionIDs(userLogin)
if err != nil {
return api.ErrorInternalServer(err)
}

subscriptionIDs = append(subscriptionIDs, userSubscriptionIDs...)
}

Expand All @@ -142,6 +153,7 @@ func RemoveContact(database moira.Database, contactID string, userLogin string,
if err != nil {
return api.ErrorInternalServer(err)
}

subscriptionIDs = append(subscriptionIDs, teamSubscriptionIDs...)
}

Expand All @@ -156,6 +168,7 @@ func RemoveContact(database moira.Database, contactID string, userLogin string,
if subscription == nil {
continue
}

for i, contact := range subscription.Contacts {
if contact == contactID {
subscription.Contacts = append(subscription.Contacts[:i], subscription.Contacts[i+1:]...)
Expand All @@ -171,17 +184,22 @@ func RemoveContact(database moira.Database, contactID string, userLogin string,
for subInd, subscription := range subscriptionsWithDeletingContact {
errBuffer.WriteString(subscription.ID)
errBuffer.WriteString(" (tags: ")

for tagInd := range subscription.Tags {
errBuffer.WriteString(subscription.Tags[tagInd])

if tagInd != len(subscription.Tags)-1 {
errBuffer.WriteString(", ")
}
}

errBuffer.WriteString(")")

if subInd != len(subscriptionsWithDeletingContact)-1 {
errBuffer.WriteString(", ")
}
}

return api.ErrorInvalidRequest(fmt.Errorf(errBuffer.String()))
}

Expand All @@ -205,6 +223,7 @@ func SendTestContactNotification(dataBase moira.Database, contactID string) *api
if err := dataBase.PushNotificationEvent(eventData, false); err != nil {
return api.ErrorInternalServer(err)
}

return nil
}

Expand All @@ -220,23 +239,29 @@ func CheckUserPermissionsForContact(
if errors.Is(err, database.ErrNil) {
return moira.ContactData{}, api.ErrorNotFound(fmt.Sprintf("contact with ID '%s' does not exists", contactID))
}

return moira.ContactData{}, api.ErrorInternalServer(err)
}

if auth.IsAdmin(userLogin) {
return contactData, nil
}

if contactData.Team != "" {
teamContainsUser, err := dataBase.IsTeamContainUser(contactData.Team, userLogin)
if err != nil {
return moira.ContactData{}, api.ErrorInternalServer(err)
}

if teamContainsUser {
return contactData, nil
}
}

if contactData.User == userLogin {
return contactData, nil
}

return moira.ContactData{}, api.ErrorForbidden("you are not permitted")
}

Expand All @@ -245,9 +270,11 @@ func isContactExists(dataBase moira.Database, contactID string) (bool, error) {
if errors.Is(err, database.ErrNil) {
return false, nil
}

if err != nil {
return false, err
}

return true, nil
}

Expand Down
1 change: 1 addition & 0 deletions api/controller/contact_events.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ func GetContactEventsByIDWithLimit(database moira.Database, contactID string, fr
eventsList := dto.ContactEventItemList{
List: make([]dto.ContactEventItem, 0),
}

for _, i := range events {
contactEventItem := &dto.ContactEventItem{
TimeStamp: i.TimeStamp,
Expand Down
4 changes: 4 additions & 0 deletions api/controller/events.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ func GetTriggerEvents(database moira.Database, triggerID string, page int64, siz
if err != nil {
return nil, api.ErrorInternalServer(err)
}

eventCount := database.GetNotificationEventCount(triggerID, -1)

eventsList := &dto.EventsList{
Expand All @@ -20,11 +21,13 @@ func GetTriggerEvents(database moira.Database, triggerID string, page int64, siz
Total: eventCount,
List: make([]moira.NotificationEvent, 0),
}

for _, event := range events {
if event != nil {
eventsList.List = append(eventsList.List, *event)
}
}

return eventsList, nil
}

Expand All @@ -33,5 +36,6 @@ func DeleteAllEvents(database moira.Database) *api.ErrorResponse {
if err := database.RemoveAllNotificationEvents(); err != nil {
return api.ErrorInternalServer(err)
}

return nil
}
1 change: 1 addition & 0 deletions api/controller/health.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,6 @@ func UpdateNotifierState(database moira.Database, state *dto.NotifierState) *api
if err != nil {
return api.ErrorInternalServer(err)
}

return nil
}
4 changes: 4 additions & 0 deletions api/controller/notification.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@ func GetNotifications(database moira.Database, start int64, end int64) (*dto.Not
if err != nil {
return nil, api.ErrorInternalServer(err)
}

notificationsList := dto.NotificationsList{
List: notifications,
Total: total,
}

return &notificationsList, nil
}

Expand All @@ -25,6 +27,7 @@ func DeleteNotification(database moira.Database, notificationKey string) (*dto.N
if err != nil {
return nil, api.ErrorInternalServer(err)
}

return &dto.NotificationDeleteResponse{Result: result}, nil
}

Expand All @@ -33,5 +36,6 @@ func DeleteAllNotifications(database moira.Database) *api.ErrorResponse {
if err := database.RemoveAllNotifications(); err != nil {
return api.ErrorInternalServer(err)
}

return nil
}
6 changes: 6 additions & 0 deletions api/controller/pattern.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ func GetAllPatterns(database moira.Database, logger moira.Logger) (*dto.PatternL
if err != nil {
return nil, api.ErrorInternalServer(err)
}

pattersList := dto.PatternList{
List: make([]dto.PatternData, 0, len(patterns)),
}
Expand All @@ -27,25 +28,29 @@ func GetAllPatterns(database moira.Database, logger moira.Logger) (*dto.PatternL
Msg("Failed to get pattern trigger IDs")
rch <- nil
}

triggers, err := database.GetTriggers(triggerIDs)
if err != nil {
logger.Error().
Error(err).
Msg("Failed to get trigger")
rch <- nil
}

metrics, err := database.GetPatternMetrics(pattern)
if err != nil {
logger.Error().
Error(err).
Msg("Failed to get pattern metrics")
rch <- nil
}

patternData := dto.PatternData{
Pattern: pattern,
Triggers: make([]dto.TriggerModel, 0),
Metrics: metrics,
}

for _, trigger := range triggers {
if trigger != nil {
patternData.Triggers = append(patternData.Triggers, dto.CreateTriggerModel(trigger))
Expand All @@ -69,5 +74,6 @@ func DeletePattern(database moira.Database, pattern string) *api.ErrorResponse {
if err := database.RemovePattern(pattern); err != nil {
return api.ErrorInternalServer(err)
}

return nil
}
Loading
Loading