package models import ( "encoding/json" "time" ) type Chat struct { ID uint32 `db:"id" json:"id"` Name string `db:"name" json:"name"` Msgs string `db:"msgs" json:"msgs"` // []RoleMsg to string json CreatedAt time.Time `db:"created_at" json:"created_at"` UpdatedAt time.Time `db:"updated_at" json:"updated_at"` } func (c Chat) ToHistory() ([]RoleMsg, error) { resp := []RoleMsg{} if err := json.Unmarshal([]byte(c.Msgs), &resp); err != nil { return nil, err } return resp, nil } /* memories should have two key system to be able to store different perspectives agent -> topic -> data agent is somewhat similar to a char */ type Memory struct { Agent string `db:"agent" json:"agent"` Topic string `db:"topic" json:"topic"` Mind string `db:"mind" json:"mind"` CreatedAt time.Time `db:"created_at" json:"created_at"` UpdatedAt time.Time `db:"updated_at" json:"updated_at"` }