
функция (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
}