Sorgulama satırı 84'teki WITH ... AS (...) yapısına ne denir?
Golang
Performans açısından, böyle bir veritabanı şemasına uygulanması gereken genel kabul görmüş kurallar nelerdir?
Go geliştiricileri neden map üzerinde range sırasında gezinme sırasını garanti etmiyor?
-- ID'ye göre sıralanmış kitap listesini göster, -- ancak çıktıdaki 2. ve 3. satırları yer değiştir: -- 1 Usta ve Margarita 100 -- 3 Altın Telenok 50 -- 2 On İki Sandalye 200 -- 4 Eugeni Onegin 250 -- 5 Belkin'in Hikayeleri 90 -- 6 Üç Silahşörler 60
// GetUsersList, kullanıcıların bir listesini döndürür. (Veritabanında yaklaşık 1 milyon kullanıcı saklıyoruz) // Yönetici panelinde kullanıcı listesini göstermek için kullanılır. Eğer isActive = true ise, sadece aktif kullanıcılar döndürülür. 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("kullanıcı listesi alınırken hata") } var users []User // Kullanıcılar hakkında bilgileri doldurun. for rows.Next() { var user User err := rows.Scan(&user.ID, &user.Name, &user.Phone) if err != nil { return nil, err } // Kullanıcının e-posta listesini alın err, err := u.DB.QueryContext(ctx, "SELECT email FROM user_emails WHERE user_id = ?", user.ID) if err != nil { return nil, errors.New("kullanıcı listesi alınırken hata") } 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 // VK API'den profil bilgisi alın profile, err := getUserProfileFromVkApiByUserPhone(user.Phone) if err != nil { return nil, errors.New("kullanıcı listesi alınırken hata") } user.Profile = profile users = append(users, user) } if err = rows.Err(); err != nil { return nil, errors.New("kullanıcı listesi alınırken hata") } }