Sobes.tech

Как се нарича конструкцията WITH ... AS (...) в ред 84 на заявката?

146

От гледна точка на производителността, кои общоприети правила трябва да се прилагат към такава схема на база данни?

141

Защо разработчиците на Go не гарантират реда на обхождане на map при range?

134

-- изведете списък с книги, сортиран по id, -- но в изхода разменете местата на редовете 2 и 3: -- 1 Майстор и Маргарита 100 -- 3 Златният теленок 50 -- 2 Дванадесет стола 200 -- 4 Евгений Онегин 250 -- 5 Белкина разкази 90 -- 6 Тримата мускетари 60

131

// GetUsersList връща списък с потребители. (в базата данни съхраняваме около 1 милион потребители) // Използва се за показване на списъка с потребители в административния панел. Ако isActive = true, се връщат само активните потребители. func (u *UsersRepo) GetUsersList(ctx context.Context, isActive bool) ([]User, error) { rows, err := u.DB.Query("SELECT id, name, phone FROM users WHERE is_active = ?", isActive) if err != nil { return nil, errors.New("грешка при получаване на списъка с потребители") } var users []User // Попълнете информация за потребителите. for rows.Next() { var user User err := rows.Scan(&user.ID, &user.Name, &user.Phone) if err != nil { return nil, err } // Получете списъка с имейлите на потребителя err, err := u.DB.QueryContext(ctx, "SELECT email FROM user_emails WHERE user_id = ?", user.ID) if err != nil { return nil, errors.New("грешка при получаване на списъка с потребители") } var emails []string for er.Next() { var email string err := rows.Scan(&email) if err != nil { return nil, err } emails = append(emails, email) } if len(emails) != 0 { for i, e := range emails { e = strings.ToLower(e) emails[i] = e } } user.Emails = emails // Вземете профилната информация от API-то на ВКонтакте profile, err := getUserProfileFromVkApiByUserPhone(user.Phone) if err != nil { return nil, errors.New("грешка при получаване на списъка с потребители") } user.Profile = profile users = append(users, user) } if err = rows.Err(); err != nil { return nil, errors.New("грешка при получаване на списъка с потребители") } }

117
/2