* feat(backend): small refactoring in integrations * feat(backend): ignore context timeout error
38 lines
843 B
Go
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
|
|
}
|