func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error {
advertiser, err := r.find(totalPayouts) // գործարք ավելացնել
եթե սխալ != ոչ {
վերադարձնել սխալ
}
գործընկեր, սխալ := r.find(partnerID)
եթե սխալ != ոչ {
վերադարձնել սխալ
}
գովազդատու, Բալանս -= գումար
գործընկեր.Hold -= գումար
գործընկեր.Бalance += գումար
եթե սխալ := r.save(գովազդատու); սխալ != ոչ {
վերադարձնել սխալ
}
եթե սխալ := r.save(գործընկեր); սխալ != ոչ {
վերադարձնել սխալ
}
r.totalPayouts++
վերադարձնել ոչ
}
ֆունկցիա (r *PayoutRepository) find(id string) (Partner, սխալ) {
p := Partner{}
սխալ := r.db.QueryRow("SELECT * FROM partners WHERE id = " + id).Scan(&p) // $1 ավելացնել
եթե սխալ != ոչ {
եթե սխալ == sql.ErrNoRows {
վերադարձնել p, errors.New("գործընկերը չի գտնվել")
}
վերադարձնել p, սխալ
}
վերադարձնել p, ոչ
}