|
@@ -18,6 +18,8 @@ type MQTTConfig struct {
|
|
|
ID int `json:"id"`
|
|
ID int `json:"id"`
|
|
|
Broker string `json:"broker"`
|
|
Broker string `json:"broker"`
|
|
|
ClientID string `json:"client_id"`
|
|
ClientID string `json:"client_id"`
|
|
|
|
|
+ Username string `json:"username,omitempty"`
|
|
|
|
|
+ Password string `json:"password,omitempty"`
|
|
|
Topic string `json:"topic"`
|
|
Topic string `json:"topic"`
|
|
|
Enabled bool `json:"enabled"`
|
|
Enabled bool `json:"enabled"`
|
|
|
}
|
|
}
|
|
@@ -51,20 +53,30 @@ func (d *DB) init() error {
|
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
|
broker TEXT NOT NULL,
|
|
broker TEXT NOT NULL,
|
|
|
client_id TEXT NOT NULL,
|
|
client_id TEXT NOT NULL,
|
|
|
|
|
+ username TEXT DEFAULT '',
|
|
|
|
|
+ password TEXT DEFAULT '',
|
|
|
topic TEXT NOT NULL,
|
|
topic TEXT NOT NULL,
|
|
|
enabled BOOLEAN DEFAULT 1
|
|
enabled BOOLEAN DEFAULT 1
|
|
|
);
|
|
);
|
|
|
`
|
|
`
|
|
|
_, err := d.conn.ExecContext(context.Background(), query)
|
|
_, err := d.conn.ExecContext(context.Background(), query)
|
|
|
- return err
|
|
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ for _, col := range []string{"username", "password"} {
|
|
|
|
|
+ alterQuery := fmt.Sprintf("ALTER TABLE mqtt_config ADD COLUMN %s TEXT DEFAULT ''", col)
|
|
|
|
|
+ d.conn.ExecContext(context.Background(), alterQuery)
|
|
|
|
|
+ }
|
|
|
|
|
+ return nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func (d *DB) GetMQTTConfig() (*MQTTConfig, error) {
|
|
func (d *DB) GetMQTTConfig() (*MQTTConfig, error) {
|
|
|
- query := "SELECT id, broker, client_id, topic, enabled FROM mqtt_config WHERE enabled = 1 LIMIT 1"
|
|
|
|
|
|
|
+ query := "SELECT id, broker, client_id, username, password, topic, enabled FROM mqtt_config WHERE enabled = 1 LIMIT 1"
|
|
|
row := d.conn.QueryRowContext(context.Background(), query)
|
|
row := d.conn.QueryRowContext(context.Background(), query)
|
|
|
|
|
|
|
|
var cfg MQTTConfig
|
|
var cfg MQTTConfig
|
|
|
- err := row.Scan(&cfg.ID, &cfg.Broker, &cfg.ClientID, &cfg.Topic, &cfg.Enabled)
|
|
|
|
|
|
|
+ err := row.Scan(&cfg.ID, &cfg.Broker, &cfg.ClientID, &cfg.Username, &cfg.Password, &cfg.Topic, &cfg.Enabled)
|
|
|
if err == sql.ErrNoRows {
|
|
if err == sql.ErrNoRows {
|
|
|
return nil, nil
|
|
return nil, nil
|
|
|
}
|
|
}
|
|
@@ -76,12 +88,12 @@ func (d *DB) GetMQTTConfig() (*MQTTConfig, error) {
|
|
|
|
|
|
|
|
func (d *DB) SaveMQTTConfig(cfg *MQTTConfig) error {
|
|
func (d *DB) SaveMQTTConfig(cfg *MQTTConfig) error {
|
|
|
if cfg.ID == 0 {
|
|
if cfg.ID == 0 {
|
|
|
- query := "INSERT INTO mqtt_config (broker, client_id, topic, enabled) VALUES (?, ?, ?, ?)"
|
|
|
|
|
- _, err := d.conn.ExecContext(context.Background(), query, cfg.Broker, cfg.ClientID, cfg.Topic, cfg.Enabled)
|
|
|
|
|
|
|
+ query := "INSERT INTO mqtt_config (broker, client_id, username, password, topic, enabled) VALUES (?, ?, ?, ?, ?, ?)"
|
|
|
|
|
+ _, err := d.conn.ExecContext(context.Background(), query, cfg.Broker, cfg.ClientID, cfg.Username, cfg.Password, cfg.Topic, cfg.Enabled)
|
|
|
return err
|
|
return err
|
|
|
}
|
|
}
|
|
|
- query := "UPDATE mqtt_config SET broker = ?, client_id = ?, topic = ?, enabled = ? WHERE id = ?"
|
|
|
|
|
- _, err := d.conn.ExecContext(context.Background(), query, cfg.Broker, cfg.ClientID, cfg.Topic, cfg.Enabled, cfg.ID)
|
|
|
|
|
|
|
+ query := "UPDATE mqtt_config SET broker = ?, client_id = ?, username = ?, password = ?, topic = ?, enabled = ? WHERE id = ?"
|
|
|
|
|
+ _, err := d.conn.ExecContext(context.Background(), query, cfg.Broker, cfg.ClientID, cfg.Username, cfg.Password, cfg.Topic, cfg.Enabled, cfg.ID)
|
|
|
return err
|
|
return err
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -92,7 +104,7 @@ func (d *DB) DeleteMQTTConfig(id int) error {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func (d *DB) ListMQTTConfigs() ([]MQTTConfig, error) {
|
|
func (d *DB) ListMQTTConfigs() ([]MQTTConfig, error) {
|
|
|
- query := "SELECT id, broker, client_id, topic, enabled FROM mqtt_config ORDER BY id"
|
|
|
|
|
|
|
+ query := "SELECT id, broker, client_id, username, password, topic, enabled FROM mqtt_config ORDER BY id"
|
|
|
rows, err := d.conn.QueryContext(context.Background(), query)
|
|
rows, err := d.conn.QueryContext(context.Background(), query)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
return nil, err
|
|
return nil, err
|
|
@@ -102,7 +114,7 @@ func (d *DB) ListMQTTConfigs() ([]MQTTConfig, error) {
|
|
|
var configs []MQTTConfig
|
|
var configs []MQTTConfig
|
|
|
for rows.Next() {
|
|
for rows.Next() {
|
|
|
var cfg MQTTConfig
|
|
var cfg MQTTConfig
|
|
|
- if err := rows.Scan(&cfg.ID, &cfg.Broker, &cfg.ClientID, &cfg.Topic, &cfg.Enabled); err != nil {
|
|
|
|
|
|
|
+ if err := rows.Scan(&cfg.ID, &cfg.Broker, &cfg.ClientID, &cfg.Username, &cfg.Password, &cfg.Topic, &cfg.Enabled); err != nil {
|
|
|
continue
|
|
continue
|
|
|
}
|
|
}
|
|
|
configs = append(configs, cfg)
|
|
configs = append(configs, cfg)
|