func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error {
advertiser, err := r.find(totalPayouts) // pridať transakciu
ak err != nil {
vrátenie err
}
partner, err := r.find(partnerID)
ak err != nil {
vrátenie err
}
advertiser.Balance -= amount
partner.Hold -= amount
partner.Balance += amount
ak err := r.save(advertiser); err != nil {
vrátenie err
}
ak err := r.save(partner); err != nil {
vrátenie err
}
r.totalPayouts++
vrátenie nil
}
funkcia (r *PayoutRepository) find(id string) (Partner, error) {
p := Partner{}
err := r.db.QueryRow("SELECT * FROM partners WHERE id = " + id).Scan(&p) // pridať $1
ak err != nil {
ak err == sql.ErrNoRows {
vrátenie p, errors.New("partner nenájdený")
}
vrátenie p, err
}
vrátenie p, nil
}