package message import ( lib "git.sr.ht/~cco/go-scopes" sql "git.sr.ht/~cco/go-scopes/storage" "git.sr.ht/~cco/go-scopes/storage/tracking" ) type message struct { tracking.Track } func MakeMessage(t *tracking.TrackTemplate) tracking.Track { if t.Head["domain"] == "" { t.Head["domain"] = "scopes" } return &message{tracking.MakeTrack(t)} } func Messages(db *sql.Storage) *tracking.Container { return &tracking.Container{ ItemFactory: MakeMessage, TableName: "messages", HeadFields: []string{"domain", "action", "class", "item"}, Indexes: [][]string{ []string{"domain", "action", "class", "item"}, []string{"domain", "class", "item"}, }, Storage: db, } } // message store action handler func Store(act lib.Action) bool { db := lib.GetState[*sql.Storage](act.Context()) StoreDB(db, act.Message()) return true } func StoreDB(db *sql.Storage, msg lib.Message) { //q := db.BuildQuery("insert_msg", "messages") //db.Exec(q, msg.Domain(), msg.Action(), msg.Class(), msg.Item(), msg.Payload()) } func init() { sql.SqlSources += `{{ define "insert_msg" -}} insert into {{ .table }} (domain, action, class, item, payload) values ($1, $2, $3, $4, $5) {{- end }}` }