Sobes.tech

Golang

Come si chiama la costruzione WITH ... AS (...) alla riga 84 della query?

146

Dal punto di vista delle prestazioni, quali regole generalmente accettate dovrebbero essere applicate a uno schema di database come questo?

141

Perché gli sviluppatori di Go non garantiscono l'ordine di iterazione della mappa durante il range?

134

-- mostra l'elenco dei libri ordinati per id, -- ma scambia tra loro le righe 2 e 3 nell'output: -- 1 Il maestro e Margherita 100 -- 3 Il Teleno d'oro 50 -- 2 I dodici sedili 200 -- 4 Eugène Onegin 250 -- 5 Racconti di Belkin 90 -- 6 I tre moschettieri 60

131

// GetUsersList restituisce un elenco di utenti. (nel database memorizziamo circa 1 milione di utenti) // Viene utilizzato per visualizzare l'elenco degli utenti nel pannello di amministrazione. Se isActive = true, vengono restituiti solo gli utenti attivi. 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("errore nel recupero dell'elenco utenti") } var users []User // Riempire le informazioni sugli utenti. for rows.Next() { var user User err := rows.Scan(&user.ID, &user.Name, &user.Phone) if err != nil { return nil, err } // Ottenere l'elenco delle email dell'utente err, err := u.DB.QueryContext(ctx, "SELECT email FROM user_emails WHERE user_id = ?", user.ID) if err != nil { return nil, errors.New("errore nel recupero dell'elenco utenti") } 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 // Ottenere le informazioni del profilo dall'API di VKontakte profile, err := getUserProfileFromVkApiByUserPhone(user.Phone) if err != nil { return nil, errors.New("errore nel recupero dell'elenco utenti") } user.Profile = profile users = append(users, user) } if err = rows.Err(); err != nil { return nil, errors.New("errore nel recupero dell'elenco utenti") } }

119
/2