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