From 5750d8cdc7622d82ca578d796a915530dadc6578 Mon Sep 17 00:00:00 2001 From: Steinar Seljevold Date: Sat, 26 Sep 2026 12:13:02 +0200 Subject: [PATCH 10/10] enable mysql support --- internal/table/sql/sql_query.go | 1 + internal/table/sql/sql_table.go | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/internal/table/sql/sql_query.go b/internal/table/sql/sql_query.go index 2d27190..b4b4e82 100644 --- a/internal/table/sql/sql_query.go +++ b/internal/table/sql/sql_query.go @@ -32,6 +32,7 @@ import ( "github.com/foxcpp/maddy/framework/module/modules" sqliteprovider "github.com/foxcpp/maddy/internal/sqlite" _ "github.com/lib/pq" + _ "github.com/go-sql-driver/mysql" ) type SQL struct { diff --git a/internal/table/sql/sql_table.go b/internal/table/sql/sql_table.go index 8692615..43c7a03 100644 --- a/internal/table/sql/sql_table.go +++ b/internal/table/sql/sql_table.go @@ -27,6 +27,7 @@ import ( "github.com/foxcpp/maddy/framework/module" "github.com/foxcpp/maddy/framework/module/modules" _ "github.com/lib/pq" + _ "github.com/go-sql-driver/mysql" ) type SQLTable struct { @@ -84,14 +85,24 @@ func (s *SQLTable) Configure(inlineArgs []string, cfg *config.Map) error { listQuery string setQuery string delQuery string + initQuery string ) - if driver == "sqlite3" { + if driver == "mysql" { + useNamedArgs = "no" + lookupQuery = fmt.Sprintf("SELECT `%s` FROM `%s` WHERE `%s` = ?", valueColumn, tableName, keyColumn) + addQuery = fmt.Sprintf("INSERT INTO `%s` (`%s`, `%s`) VALUES(?, ?)", tableName, keyColumn, valueColumn) + listQuery = fmt.Sprintf("SELECT %s from %s", keyColumn, tableName) + setQuery = fmt.Sprintf("UPDATE `%s` SET `%s` = ? WHERE %s = ?", tableName, valueColumn, keyColumn) + delQuery = fmt.Sprintf("DELETE FROM `%s` WHERE `%s` = ?", tableName, keyColumn) + initQuery = fmt.Sprintf("CREATE TABLE IF NOT EXISTS `%s` (`%s` VARCHAR(100) NULL, `%s` VARCHAR(100) NOT NULL, PRIMARY KEY (`%s`))", tableName, keyColumn, valueColumn, keyColumn) + } else if driver == "sqlite3" { useNamedArgs = "yes" lookupQuery = fmt.Sprintf("SELECT %s FROM %s WHERE %s = :key", valueColumn, tableName, keyColumn) addQuery = fmt.Sprintf("INSERT INTO %s(%s, %s) VALUES(:key, :value)", tableName, keyColumn, valueColumn) listQuery = fmt.Sprintf("SELECT %s from %s", keyColumn, tableName) setQuery = fmt.Sprintf("UPDATE %s SET %s = :value WHERE %s = :key", tableName, valueColumn, keyColumn) delQuery = fmt.Sprintf("DELETE FROM %s WHERE %s = :key", tableName, keyColumn) + initQuery = fmt.Sprintf("CREATE TABLE IF NOT EXISTS %s (%s TEXT PRIMARY KEY NOT NULL, %s TEXT NOT NULL)", tableName, keyColumn, valueColumn) } else { useNamedArgs = "no" lookupQuery = fmt.Sprintf("SELECT %s FROM %s WHERE %s = $1", valueColumn, tableName, keyColumn) @@ -99,6 +110,7 @@ func (s *SQLTable) Configure(inlineArgs []string, cfg *config.Map) error { listQuery = fmt.Sprintf("SELECT %s from %s", keyColumn, tableName) setQuery = fmt.Sprintf("UPDATE %s SET %s = $2 WHERE %s = $1", tableName, valueColumn, keyColumn) delQuery = fmt.Sprintf("DELETE FROM %s WHERE %s = $1", tableName, keyColumn) + initQuery = fmt.Sprintf("CREATE TABLE IF NOT EXISTS %s (%s TEXT PRIMARY KEY NOT NULL, %s TEXT NOT NULL)", tableName, keyColumn, valueColumn) } return s.wrapped.Configure(nil, config.NewMap(cfg.Globals, config.Node{ @@ -137,10 +149,7 @@ func (s *SQLTable) Configure(inlineArgs []string, cfg *config.Map) error { }, { Name: "init", - Args: []string{fmt.Sprintf(`CREATE TABLE IF NOT EXISTS %s ( - %s TEXT PRIMARY KEY NOT NULL, - %s TEXT NOT NULL - )`, tableName, keyColumn, valueColumn)}, + Args: []string{initQuery}, }, }, })) -- 2.54.0