From 0f1989745ec26aa0dc286257003455627729e7d3 Mon Sep 17 00:00:00 2001 From: meskio <meskio@sindominio.net> Date: Sun, 4 Jul 2021 18:46:58 +0200 Subject: [PATCH] List transactions by product --- api/db/transaction.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/api/db/transaction.go b/api/db/transaction.go index 9756329..2ef9a38 100644 --- a/api/db/transaction.go +++ b/api/db/transaction.go @@ -4,6 +4,8 @@ import ( "errors" "fmt" "log" + "strconv" + "strings" "time" "gorm.io/gorm" @@ -69,6 +71,22 @@ func (d *DB) ListTransactions(query map[string][]string) (transactions []Transac tx = tx.Where("proxy in ?", v) case "type": tx = tx.Where("type in ?", v) + case "product": + var ids []interface{} + where := make([]string, len(v)) + for i := range v { + var id int + id, err = strconv.Atoi(v[i]) + if err != nil { + return + } + ids = append(ids, id, id) + where[i] = "purchases.product = ? OR order_products.product_code = ?" + } + tx = tx.Joins("left join purchases on purchases.`transaction` = transactions.id"). + Joins("left join order_purchases on order_purchases.transaction_id = transactions.id"). + Joins("left join order_products on order_products.id = order_purchases.order_product_id"). + Where(strings.Join(where, " OR "), ids...) default: log.Printf("Unexpected transaction query: %s %v", k, v) } -- GitLab