Sobes.tech

Golang

// GetUsersList returnează o listă de utilizatori. (în baza de date stocăm aproximativ 1 milion de utilizatori) // Este folosit pentru afișarea listei de utilizatori în panoul de administrare. Dacă isActive = true, se returnează doar utilizatorii activi. 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("eroare la obținerea listei de utilizatori") } var users []User // Completați informațiile despre utilizatori. for rows.Next() { var user User err := rows.Scan(&user.ID, &user.Name, &user.Phone) if err != nil { return nil, err } // Obțineți lista de e-mailuri ale utilizatorului err, err := u.DB.QueryContext(ctx, "SELECT email FROM user_emails WHERE user_id = ?", user.ID) if err != nil { return nil, errors.New("eroare la obținerea listei de utilizatori") } 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 // Obțineți informațiile despre profil din API-ul VKontakte profile, err := getUserProfileFromVkApiByUserPhone(user.Phone) if err != nil { return nil, errors.New("eroare la obținerea listei de utilizatori") } user.Profile = profile users = append(users, user) } if err = rows.Err(); err != nil { return nil, errors.New("eroare la obținerea listei de utilizatori") } }

Middle
СитиДрайвСитиДрайв
34

Te rog, spune-mi unde lucrezi acum și ce faci.

Middle
МВидео/эльдорадо
34

Cum întrerupe planificatorul o goroutine care intră într-un ciclu infinit?

Senior
А7
34

De ce ești mândru ca dezvoltator? Care proiect sau sarcină consideri cea mai semnificativă?

Middle+
Magnit Tech
34

Este normal să trecem direct de la serviciul de comandă la serviciul de plată?

Senior
Магнит Тех
34

Lecturile se făceau cu maestrul, cu replica sau cum erau distribuite?

Senior
WildberriesWildberries
34

Ce sunt TCP și UDP, care este diferența?

Middle
OZONOZON
34

Ce este arhitectura curată? De ce este necesară?

Middle
СБЕРСБЕР
34

Vorbește despre experiența ta în [companie].

Senior
AstraTech
34

La ce folosește Select în Go?

Middle
Магнум
34

Serviciul nostru de webhook de plată este cu stare?

Senior
Магнит Тех
34

Vorbește despre sarcini și cazuri interesante legate de optimizarea sub sarcină.

Senior
Hi Rockits
34

Ofertă: 320k brut (~280k net) + bonus trimestrial de 20%. Ce părere ai despre condiții?

Senior
X5
34

[nume] a întrebat: păstrând poziția unui element mai mic decât X, care va fi poziția?

Senior
Яндекс
34

De unde provine memoria pentru variabile? Ce este un alocator de memorie?

Senior
AstonAston
34

Cu ce baze de date ați lucrat și la ce nivel? Mai multe detalii despre PostgreSQL, Redis, ClickHouse.

Senior
ООО Дэстэн Партнерс
34

Cunoști consola Linux?

Middle+
Лига Цифровой ЭкономикиЛига Цифровой Экономики
34

Ce listă de comenzi folosești în fiecare zi?

Middle+
VK CloudVK Cloud
34

Vorbește-mi despre struct{} structură goală. Cazuri de utilizare, cât spațiu de memorie ocupă?

Senior
СБК ПАРУС
34

Ce niveluri de izolare a tranzacțiilor PostgreSQL cunoști?

Senior
FinFrame
34
/411