Sobes.tech
Senior

функция (r *PayoutRepository) Payout(автоматиченID, партньорID стринг, сума float32) грешка { рекламодател, грешка := r.find(totalPayouts) // добавяне на транзакция ако грешка != nil { връщане грешка } партньор, грешка := r.find(partnerID) ако грешка != nil { връщане грешка } рекламодател.Баланса -= сума партньор.Hold -= сума партньор.Баланса += сума ако err := r.save(рекламодател); err != nil { връщане err } ако err := r.save(партньор); err != nil { връщане err } r.totalPayouts++ връщане nil } функция (r *PayoutRepository) find(id string) (Partner, грешка) { p := Partner{} err := r.db.QueryRow("SELECT * FROM partners WHERE id = " + id).Scan(&p) // добавете $1 ако err != nil { ако err == sql.ErrNoRows { връщане p, errors.New("партньор не е намерен") } връщане p, err } връщане p, nil }