AlertingNG: Save alert instances (#30223)

* AlertingNG: Save alert instances

Co-authored-by: Kyle Brandt <kyle@grafana.com>

* Rename alert instance fields/columns

* Include definition title in listing alert instances

* Delete instances when deleting defintion

Co-authored-by: Kyle Brandt <kyle@grafana.com>
This commit is contained in:
Sofia Papagiannaki
2021-01-18 20:57:17 +02:00
committed by GitHub
co-authored by Kyle Brandt
parent 93a59561ba
commit 8c31e25926
16 changed files with 675 additions and 12 deletions
@@ -199,3 +199,28 @@ func (db *MySQLDialect) ErrorMessage(err error) string {
func (db *MySQLDialect) IsDeadlock(err error) bool {
return db.isThisError(err, mysqlerr.ER_LOCK_DEADLOCK)
}
// UpsertSQL returns the upsert sql statement for PostgreSQL dialect
func (db *MySQLDialect) UpsertSQL(tableName string, keyCols, updateCols []string) string {
columnsStr := strings.Builder{}
colPlaceHoldersStr := strings.Builder{}
setStr := strings.Builder{}
separator := ", "
for i, c := range updateCols {
if i == len(updateCols)-1 {
separator = ""
}
columnsStr.WriteString(fmt.Sprintf("%s%s", db.Quote(c), separator))
colPlaceHoldersStr.WriteString(fmt.Sprintf("?%s", separator))
setStr.WriteString(fmt.Sprintf("%s=VALUES(%s)%s", db.Quote(c), db.Quote(c), separator))
}
s := fmt.Sprintf(`INSERT INTO %s (%s) VALUES (%s) ON DUPLICATE KEY UPDATE %s`,
tableName,
columnsStr.String(),
colPlaceHoldersStr.String(),
setStr.String(),
)
return s
}