Sobes.tech
Senior

func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error { advertiser, err := r.find(totalPayouts) // транзакция кошуу эгер err != нөл{ кайтаруу err } партнер, err := r.find(partnerID) эгер err != нөл{ кайтаруу err } рекламодател, Баланса -= сумма партнер.Hold -= сумма партнер.Баланса += сумма эгер err := r.save(рекламодател); err != нөл{ кайтаруу err } эгер err := r.save(партнер); err != нөл{ кайтаруу err } r.totalPayouts++ кайтаруу нөл{ } функция (r *PayoutRepository) find(id string) (Partner, error) { p := Partner{} err := r.db.QueryRow("SELECT * FROM partners WHERE id = " + id).Scan(&p) // $1 кошуу эгер err != нөл{ эгер err == sql.ErrNoRows { кайтаруу p, errors.New("партнер табылган жок") } кайтаруу p, err } кайтаруу p, nil }