func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error {
advertiser, err := r.find(advertiserID) // dodajte transakciju
if err != nil {
return err
}
partner, err := r.find(partnerID)
if err != nil {
return err
}
advertiser.Balance -= amount // zaštititi SELECT FOR UPDATE
partner.Hold -= amount
partner.Balance += amount
if err := r.save(advertiser); err != nil {
return err
}
if err := r.save(partner); err != nil {
return err
}
r.totalPayouts++
return nil
}