script editor
This commit is contained in:
@@ -177,7 +177,11 @@ func New(addr string) (lucifer3.Service, error) {
|
||||
}
|
||||
}
|
||||
if patch.Script != nil {
|
||||
statePatch.Scripts[patch.Script.Name] = svc.data.Scripts[patch.Script.Name]
|
||||
if len(patch.Script.Lines) > 0 {
|
||||
statePatch.Scripts[patch.Script.Name] = svc.data.Scripts[patch.Script.Name]
|
||||
} else {
|
||||
statePatch.Scripts[patch.Script.Name] = nil
|
||||
}
|
||||
}
|
||||
}
|
||||
svc.mu.Unlock()
|
||||
|
||||
@@ -48,6 +48,9 @@ func Prepare(ctx context.Context, db DBTX) (*Queries, error) {
|
||||
if q.deleteDeviceInfoLikeStmt, err = db.PrepareContext(ctx, deleteDeviceInfoLike); err != nil {
|
||||
return nil, fmt.Errorf("error preparing query DeleteDeviceInfoLike: %w", err)
|
||||
}
|
||||
if q.deleteScriptStmt, err = db.PrepareContext(ctx, deleteScript); err != nil {
|
||||
return nil, fmt.Errorf("error preparing query DeleteScript: %w", err)
|
||||
}
|
||||
if q.deleteScriptTriggerStmt, err = db.PrepareContext(ctx, deleteScriptTrigger); err != nil {
|
||||
return nil, fmt.Errorf("error preparing query DeleteScriptTrigger: %w", err)
|
||||
}
|
||||
@@ -138,6 +141,11 @@ func (q *Queries) Close() error {
|
||||
err = fmt.Errorf("error closing deleteDeviceInfoLikeStmt: %w", cerr)
|
||||
}
|
||||
}
|
||||
if q.deleteScriptStmt != nil {
|
||||
if cerr := q.deleteScriptStmt.Close(); cerr != nil {
|
||||
err = fmt.Errorf("error closing deleteScriptStmt: %w", cerr)
|
||||
}
|
||||
}
|
||||
if q.deleteScriptTriggerStmt != nil {
|
||||
if cerr := q.deleteScriptTriggerStmt.Close(); cerr != nil {
|
||||
err = fmt.Errorf("error closing deleteScriptTriggerStmt: %w", cerr)
|
||||
@@ -260,6 +268,7 @@ type Queries struct {
|
||||
deleteDeviceInfoStmt *sql.Stmt
|
||||
deleteDeviceInfoByIDStmt *sql.Stmt
|
||||
deleteDeviceInfoLikeStmt *sql.Stmt
|
||||
deleteScriptStmt *sql.Stmt
|
||||
deleteScriptTriggerStmt *sql.Stmt
|
||||
insertDeviceAliasStmt *sql.Stmt
|
||||
listDeviceAliasesStmt *sql.Stmt
|
||||
@@ -289,6 +298,7 @@ func (q *Queries) WithTx(tx *sql.Tx) *Queries {
|
||||
deleteDeviceInfoStmt: q.deleteDeviceInfoStmt,
|
||||
deleteDeviceInfoByIDStmt: q.deleteDeviceInfoByIDStmt,
|
||||
deleteDeviceInfoLikeStmt: q.deleteDeviceInfoLikeStmt,
|
||||
deleteScriptStmt: q.deleteScriptStmt,
|
||||
deleteScriptTriggerStmt: q.deleteScriptTriggerStmt,
|
||||
insertDeviceAliasStmt: q.insertDeviceAliasStmt,
|
||||
listDeviceAliasesStmt: q.listDeviceAliasesStmt,
|
||||
|
||||
@@ -12,6 +12,15 @@ import (
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
const deleteScript = `-- name: DeleteScript :exec
|
||||
DELETE FROM script WHERE name = ?
|
||||
`
|
||||
|
||||
func (q *Queries) DeleteScript(ctx context.Context, name string) error {
|
||||
_, err := q.exec(ctx, q.deleteScriptStmt, deleteScript, name)
|
||||
return err
|
||||
}
|
||||
|
||||
const deleteScriptTrigger = `-- name: DeleteScriptTrigger :exec
|
||||
DELETE FROM script_trigger WHERE id = ?
|
||||
`
|
||||
|
||||
@@ -4,6 +4,9 @@ SELECT * FROM script;
|
||||
-- name: SaveScript :exec
|
||||
REPLACE INTO script (name, data) VALUES (?, ?);
|
||||
|
||||
-- name: DeleteScript :exec
|
||||
DELETE FROM script WHERE name = ?;
|
||||
|
||||
-- name: ListScriptVariables :many
|
||||
SELECT * FROM script_variable;
|
||||
|
||||
|
||||
@@ -434,16 +434,27 @@ func (d *database) HandleCommand(bus *lucifer3.EventBus, command lucifer3.Comman
|
||||
case script.Update:
|
||||
j, _ := json.Marshal(command.Lines)
|
||||
|
||||
err := q.SaveScript(timeout, mysqlgen.SaveScriptParams{
|
||||
Name: command.Name,
|
||||
Data: j,
|
||||
})
|
||||
if err != nil {
|
||||
bus.RunEvent(events.Log{
|
||||
Level: "error",
|
||||
Code: "database_could_not_save_script",
|
||||
Message: "Failed to save script: " + err.Error(),
|
||||
if (len(command.Lines)) > 0 {
|
||||
err := q.SaveScript(timeout, mysqlgen.SaveScriptParams{
|
||||
Name: command.Name,
|
||||
Data: j,
|
||||
})
|
||||
if err != nil {
|
||||
bus.RunEvent(events.Log{
|
||||
Level: "error",
|
||||
Code: "database_could_not_save_script",
|
||||
Message: "Failed to save script: " + err.Error(),
|
||||
})
|
||||
}
|
||||
} else {
|
||||
err := q.DeleteScript(timeout, command.Name)
|
||||
if err != nil {
|
||||
bus.RunEvent(events.Log{
|
||||
Level: "error",
|
||||
Code: "database_could_not_delete_script",
|
||||
Message: "Failed to delete script: " + err.Error(),
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,7 +115,11 @@ func (d *Data) WithPatch(patches ...Patch) Data {
|
||||
}
|
||||
|
||||
if patch.Script != nil {
|
||||
newData.Scripts[patch.Script.Name] = patch.Script.Lines
|
||||
if len(patch.Script.Lines) > 0 {
|
||||
newData.Scripts[patch.Script.Name] = patch.Script.Lines
|
||||
} else {
|
||||
delete(newData.Scripts, patch.Script.Name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user