From ddd64e7504f750eaea9c65023c5c013ce6fd3ca9 Mon Sep 17 00:00:00 2001 From: Noah Hilverling Date: Wed, 13 Mar 2019 11:21:05 +0100 Subject: [PATCH] Add SqlBulkDelete --- mysql.go | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/mysql.go b/mysql.go index 0cca6b26..35398b25 100644 --- a/mysql.go +++ b/mysql.go @@ -595,8 +595,31 @@ func (dbw *DBWrapper) SqlBulkInsert(rows []configobject.Row, stmt *BulkInsertStm return nil } + +func (dbw *DBWrapper) SqlBulkDelete(keys []string, stmt *BulkDeleteStmt) error { + if len(keys) == 0 { + return nil + } + + done := make(chan struct{}) + defer close(done) + + //TODO: Don't do this hardcoded - Chunksize + for bulk := range icingadb_utils.ChunkKeys(done, keys, 1000) { + placeholders := strings.TrimSuffix(strings.Repeat("?, ", len(bulk)), ", ") + values := make([]interface{}, len(bulk)) + + for i, key := range bulk { + values[i] = key + } + + query := fmt.Sprintf(stmt.Format, placeholders) + + _, err := dbw.SqlExec("Bulk insert", query, values...) if err != nil { - panic(err) + return err } } + + return nil } \ No newline at end of file