package tapc import ( "encoding/json" "fmt" "github.com/bluesky-social/indigo/atproto/syntax" ) type EventType string const ( EvtRecord EventType = "record" EvtIdentity EventType = "identity" ) type Event struct { ID int64 `json:"id"` Type EventType `json:"type"` Record *RecordEventData `json:"record,omitempty"` Identity *IdentityEventData `json:"identity,omitempty"` } type RecordEventData struct { Live bool `json:"live"` Did syntax.DID `json:"did"` Rev string `json:"rev"` Collection syntax.NSID `json:"collection"` Rkey syntax.RecordKey `json:"rkey"` Action RecordAction `json:"action"` Record json.RawMessage `json:"record,omitempty"` CID *syntax.CID `json:"cid,omitempty"` } func (r *RecordEventData) AtUri() syntax.ATURI { return syntax.ATURI(fmt.Sprintf("at://%s/%s/%s", r.Did, r.Collection, r.Rkey)) } type RecordAction string const ( RecordCreateAction RecordAction = "create" RecordUpdateAction RecordAction = "update" RecordDeleteAction RecordAction = "delete" ) type IdentityEventData struct { DID syntax.DID `json:"did"` Handle string `json:"handle"` IsActive bool `json:"is_active"` Status RepoStatus `json:"status"` } type RepoStatus string const ( RepoStatusActive RepoStatus = "active" RepoStatusTakendown RepoStatus = "takendown" RepoStatusSuspended RepoStatus = "suspended" RepoStatusDeactivated RepoStatus = "deactivated" RepoStatusDeleted RepoStatus = "deleted" )