Support sending messages

This commit is contained in:
Kegan Dougal 2020-02-12 16:06:54 +00:00
parent 3a79ea983c
commit 648f05c204
2 changed files with 25 additions and 8 deletions

View file

@ -62,10 +62,14 @@ func (s *statements) prepare(db *sql.DB) error {
// Hack of the century // Hack of the century
func queryVariadic(count int) string { func queryVariadic(count int) string {
return queryVariadicOffset(count, 0)
}
func queryVariadicOffset(count, offset int) string {
str := "(" str := "("
for i := 1; i <= count; i++ { for i := 0; i < count; i++ {
str += fmt.Sprintf("$%d", i) str += fmt.Sprintf("$%d", i+offset+1)
if i < count { if i < (count - 1) {
str += ", " str += ", "
} }
} }

View file

@ -204,12 +204,25 @@ func (s *stateBlockStatements) bulkSelectFilteredStateBlockEntries(
sort.Sort(tuples) sort.Sort(tuples)
eventTypeNIDArray, eventStateKeyNIDArray := tuples.typesAndStateKeysAsArrays() eventTypeNIDArray, eventStateKeyNIDArray := tuples.typesAndStateKeysAsArrays()
selectStmt := common.TxStmt(txn, s.bulkSelectFilteredStateBlockEntriesStmt) sqlStatement := strings.Replace(bulkSelectFilteredStateBlockEntriesSQL, "($1)", queryVariadic(len(stateBlockNIDs)), 1)
rows, err := selectStmt.QueryContext( sqlStatement = strings.Replace(sqlStatement, "($2)", queryVariadicOffset(len(eventTypeNIDArray), len(stateBlockNIDs)), 1)
sqlStatement = strings.Replace(sqlStatement, "($3)", queryVariadicOffset(len(eventStateKeyNIDArray), len(stateBlockNIDs)+len(eventTypeNIDArray)), 1)
var params []interface{}
for _, val := range stateBlockNIDs {
params = append(params, int64(val))
}
for _, val := range eventTypeNIDArray {
params = append(params, val)
}
for _, val := range eventStateKeyNIDArray {
params = append(params, val)
}
rows, err := s.db.QueryContext(
ctx, ctx,
stateBlockNIDsAsArray(stateBlockNIDs), sqlStatement,
eventTypeNIDArray, params...,
sqliteIn(eventStateKeyNIDArray),
) )
if err != nil { if err != nil {
fmt.Println("bulkSelectFilteredStateBlockEntries s.bulkSelectFilteredStateBlockEntriesStmt.QueryContext:", err) fmt.Println("bulkSelectFilteredStateBlockEntries s.bulkSelectFilteredStateBlockEntriesStmt.QueryContext:", err)