zdravko/internal/services/trigger.go

61 lines
1.5 KiB
Go

package services
import (
"context"
"code.tjo.space/mentos1386/zdravko/database/models"
"github.com/jmoiron/sqlx"
)
const (
TriggerStatusUnknown models.TriggerStatus = "UNKNOWN"
TriggerStatusPaused models.TriggerStatus = "PAUSED"
TriggerStatusActive models.TriggerStatus = "ACTIVE"
)
func CountTriggers(ctx context.Context, db *sqlx.DB) (int, error) {
var count int
err := db.GetContext(ctx, &count, "SELECT COUNT(*) FROM triggers")
return count, err
}
func CreateTrigger(ctx context.Context, db *sqlx.DB, trigger *models.Trigger) error {
_, err := db.NamedExecContext(ctx,
`INSERT INTO triggers (id, name, status, script) VALUES (:id, :name, :status, :script)`,
trigger,
)
return err
}
func UpdateTrigger(ctx context.Context, db *sqlx.DB, trigger *models.Trigger) error {
_, err := db.NamedExecContext(ctx,
`UPDATE triggers SET script=:script, status=:status WHERE id=:id`,
trigger,
)
return err
}
func DeleteTrigger(ctx context.Context, db *sqlx.DB, id string) error {
_, err := db.ExecContext(ctx,
"DELETE FROM triggers WHERE id=$1",
id,
)
return err
}
func GetTrigger(ctx context.Context, db *sqlx.DB, id string) (*models.Trigger, error) {
trigger := &models.Trigger{}
err := db.GetContext(ctx, trigger,
"SELECT * FROM triggers WHERE id=$1",
id,
)
return trigger, err
}
func GetTriggers(ctx context.Context, db *sqlx.DB) ([]*models.Trigger, error) {
triggers := []*models.Trigger{}
err := db.SelectContext(ctx, &triggers,
"SELECT * FROM triggers ORDER BY name",
)
return triggers, err
}