moira
49 строк · 1.3 Кб
1package controller2
3import (4"go.avito.ru/DO/moira"5"go.avito.ru/DO/moira/api"6"go.avito.ru/DO/moira/api/dto"7)
8
9// GetUserSettings gets user contacts and subscriptions
10func GetUserSettings(database moira.Database, userLogin string, superUsers map[string]bool) (*dto.UserSettings, *api.ErrorResponse) {11userSettings := &dto.UserSettings{12User: dto.User{13Login: userLogin,14IsSuperUser: superUsers[userLogin],15},16Contacts: make([]moira.ContactData, 0),17Subscriptions: make([]moira.SubscriptionData, 0),18}19
20subscriptionIDs, err := database.GetUserSubscriptionIDs(userLogin)21if err != nil {22return nil, api.ErrorInternalServer(err)23}24
25subscriptions, err := database.GetSubscriptions(subscriptionIDs)26if err != nil {27return nil, api.ErrorInternalServer(err)28}29for _, subscription := range subscriptions {30if subscription != nil {31userSettings.Subscriptions = append(userSettings.Subscriptions, *subscription)32}33}34contactIDs, err := database.GetUserContactIDs(userLogin)35if err != nil {36return nil, api.ErrorInternalServer(err)37}38
39contacts, err := database.GetContacts(contactIDs)40if err != nil {41return nil, api.ErrorInternalServer(err)42}43for _, contact := range contacts {44if contact != nil {45userSettings.Contacts = append(userSettings.Contacts, *contact)46}47}48return userSettings, nil49}
50