У меня есть Golang функция для извлечения всех записей из базы данных Postgres, эта функция просто использует:
SELECT * from stock_transactions
Я хочу применить фильтр к этой функции для извлечения записей с некоторыми условиями Короче говоря, я хочу использовать:
SELECT * from stock_transactions WHERE symbol = $symb
Проблема состоит в том, чтобы обработать случай, когда если $symb = null
запрос должен действовать как SELECT * from stock_transactions
. Я могу написать предложение if-else
для того же самого, но если количество параметров больше 2, это может быть грязно. Есть ли лучший способ справиться с этим?
Моя функция:
func showstocks (w http.ResponseWriter, r *http.Request){
var err error
if r.Method != "GET" {
http.Error(w, http.StatusText(405), http.StatusMethodNotAllowed)
return
}
rows, err := db.Query("SELECT * FROM stock_transaction ORDER BY id DESC")
if err != nil {
http.Error(w, http.StatusText(500), 500)
return
}
defer rows.Close()
sks := make([]stockdata, 0)
for rows.Next() {
sk := stockdata{}
err := rows.Scan(&sk.Sname, &sk.Ttype, &sk.Uprice, &sk.Qty, &sk.Bfee, &sk.Ddate)
if err != nil {
http.Error(w, http.StatusText(500), 500)
return
}
sks = append(sks, sk)
}
if err = rows.Err(); err != nil {
http.Error(w, http.StatusText(500), 500)
return
}
tpl.ExecuteTemplate(w, "dashboard.gohtml", sks)
}