Как се нарича конструкцията WITH ... AS (...) в ред 84 на заявката?
Golang
От гледна точка на производителността, кои общоприети правила трябва да се прилагат към такава схема на база данни?
Защо разработчиците на Go не гарантират реда на обхождане на map при range?
-- изведете списък с книги, сортиран по id, -- но в изхода разменете местата на редовете 2 и 3: -- 1 Майстор и Маргарита 100 -- 3 Златният теленок 50 -- 2 Дванадесет стола 200 -- 4 Евгений Онегин 250 -- 5 Белкина разкази 90 -- 6 Тримата мускетари 60
// 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("грешка при получаване на списъка с потребители") } }