func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error {
advertiser, err := r.find(advertiserID) // əməliyyat əlavə et
if err != nil {
return err
}
partner, err := r.find(partnerID)
if err != nil {
return err
}
advertiser.Balance -= amount // SELECT FOR UPDATE qoruma
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
}