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
func queryVariadic(count int) string {
return queryVariadicOffset(count, 0)
}
func queryVariadicOffset(count, offset int) string {
str := "("
for i := 1; i <= count; i++ {
str += fmt.Sprintf("$%d", i)
if i < count {
for i := 0; i < count; i++ {
str += fmt.Sprintf("$%d", i+offset+1)
if i < (count - 1) {
str += ", "
}
}

View file

@ -204,12 +204,25 @@ func (s *stateBlockStatements) bulkSelectFilteredStateBlockEntries(
sort.Sort(tuples)
eventTypeNIDArray, eventStateKeyNIDArray := tuples.typesAndStateKeysAsArrays()
selectStmt := common.TxStmt(txn, s.bulkSelectFilteredStateBlockEntriesStmt)
rows, err := selectStmt.QueryContext(
sqlStatement := strings.Replace(bulkSelectFilteredStateBlockEntriesSQL, "($1)", queryVariadic(len(stateBlockNIDs)), 1)
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,
stateBlockNIDsAsArray(stateBlockNIDs),
eventTypeNIDArray,
sqliteIn(eventStateKeyNIDArray),
sqlStatement,
params...,
)
if err != nil {
fmt.Println("bulkSelectFilteredStateBlockEntries s.bulkSelectFilteredStateBlockEntriesStmt.QueryContext:", err)