次のようにクエリを作成しようとしています。ここではgorpを使用しています。
func GetAgregatedDownloadsFromTo(constrains Constrains) [] dao.NameValue {
dbMap := utils.GetDBConnection("radsummary");
defer dbMap.Db.Close()
var totalDailyDownloads[] NameValue
query := "SELECT SUM(outputoctets) as value ,date as name FROM dailyacct where date >= ? AND date < ? "
if len(constrains.LocationGroups) > 0 {
query = query + " AND calledstationid=? "
for i := 1; i< len(constrains.LocationGroups); i++ {
query = query + " OR calledstationid=? "
}
query = query + " group by date"
print(query)
_, err := dbMap.Select(&totalDailyDownloads, query, constrains.From, constrains.To, constrains.LocationGroups...)
if err != nil {
panic(err.Error()) // proper error handling instead of panic
}
}
return totalDailyDownloads
}
type Constrains struct {
From string `json:"from"`
To string `json:"to"`
LocationGroups []string `json:"locationgroups"`
}
クエリの構築は、constraints.LocationGroups の長さに基づいて行われます。私が抱えている問題は、constraints.LocationGroups... を select クエリ パラメータとして指定すると、可変数の引数を Select クエリに渡すことです。コンパイラ エラーがスローされます。too many arguments in call to dbMap.Select
この種の要件を達成することは可能ですか? ご意見をお待ちしております。