
func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error {
advertiser, err := r.find(totalPayouts) // pievienot transakciju
ja err != null {
atgriezt err
}
partner, err := r.find(partnerID)
ja err != null {
atgriezt err
}
reklāmas devējs.Balance -= amount
partner.Hold -= amount
partner.Balance += amount
ja err := r.save(reklāmas devējs); err != null {
atgriezt err
}
ja err := r.save(partner); err != null {
atgriezt err
}
r.totalPayouts++
atgriezt null
}
funkcija (r *PayoutRepository) find(id string) (Partner, error) {
p := Partner{}
err := r.db.QueryRow("SELECT * FROM partners WHERE id = " + id).Scan(&p) // pievienot $1
ja err != null {
ja err == sql.ErrNoRows {
atgriezt p, errors.New("partneris nav atrasts")
}
atgriezt p, err
}
atgriezt p, null
}