Sobes.tech
Senior

func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error { advertiser, err := r.find(totalPayouts) // ტრანზაქცია დამატება თუ err != nil { დაბრუნება err } პარტნიორი, err := r.find(partnerID) თუ err != nil { დაბრუნება err } რეკლამა, ბალანსი -= თანხა პარტნიორი.Hold -= თანხა პარტნიორი.Бalance += თანხა თუ შეცდომა := r.save(რეკლამა); შეცდომა != null { დაბრუნება შეცდომა } თუ შეცდომა := r.save(პარტნიორი); შეცდომა != null { დაბრუნება შეცდომა } r.totalPayouts++ დაბრუნება null } ფუნქცია (r *PayoutRepository) find(id string) (Partner, შეცდომა) { p := Partner{} შეცდომა := r.db.QueryRow("SELECT * FROM partners WHERE id = " + id).Scan(&p) // $1 დამატება თუ შეცდომა != null { თუ შეცდომა == sql.ErrNoRows { დაბრუნება p, errors.New("პარტნიორი ვერ მოიძებნა") } დაბრუნება p, შეცდომა } დაბრუნება p, null }