openreplay/backend/pkg/integrations/model/integration.go
Alexander f8a8dfa459
[Integrations] small refactoring (#1752)
* feat(backend): small refactoring in integrations

* feat(backend): ignore context timeout error
2023-12-14 11:28:05 +01:00

38 lines
843 B
Go

package model
import (
"encoding/json"
"fmt"
"time"
)
type Integration struct {
ProjectID uint32 `json:"project_id"`
Provider string `json:"provider"`
RequestData json.RawMessage `json:"request_data"`
Options json.RawMessage `json:"options"`
}
func (i *Integration) Encode() []byte {
b, _ := json.Marshal(i)
return b
}
func (i *Integration) Decode(data []byte) error {
return json.Unmarshal(data, i)
}
func (i *Integration) GetKey() string {
return fmt.Sprintf("%d%s", i.ProjectID, i.Provider)
}
func (i *Integration) GetRequestInfo() (*RequestInfo, error) {
ri := new(RequestInfo)
if err := json.Unmarshal(i.RequestData, ri); err != nil {
return nil, err
}
if ri.LastMessageTimestamp == 0 {
ri.LastMessageTimestamp = uint64(time.Now().Add(-time.Hour * 24).UnixMilli())
}
return ri, nil
}