package dto

type ResourceActivityActor struct {
	Type string `json:"type,omitempty"`
	ID   string `json:"id,omitempty"`
	Name string `json:"name,omitempty"`
}

type ResourceActivityTarget struct {
	Kind string `json:"kind,omitempty"`
	ID   string `json:"id,omitempty"`
	URL  string `json:"url,omitempty"`
}

type ResourceActivityDisplayActor struct {
	Kind  string `json:"kind,omitempty"`
	ID    string `json:"id,omitempty"`
	Name  string `json:"name,omitempty"`
	Email string `json:"email,omitempty"`
	Login string `json:"login,omitempty"`
}

type ResourceActivityDisplayResource struct {
	Type         string `json:"type,omitempty"`
	ID           string `json:"id,omitempty"`
	Name         string `json:"name,omitempty"`
	RepoRole     string `json:"repoRole,omitempty"`
	RepoFullName string `json:"repoFullName,omitempty"`
	Href         string `json:"href,omitempty"`
}

type ResourceActivityDisplayTarget struct {
	Kind        string `json:"kind,omitempty"`
	ID          string `json:"id,omitempty"`
	Label       string `json:"label,omitempty"`
	Href        string `json:"href,omitempty"`
	ExternalURL string `json:"externalUrl,omitempty"`
}

type ResourceActivityDisplayMeta struct {
	Key         string `json:"key,omitempty"`
	Label       string `json:"label,omitempty"`
	Value       string `json:"value,omitempty"`
	Href        string `json:"href,omitempty"`
	ExternalURL string `json:"externalUrl,omitempty"`
	Title       string `json:"title,omitempty"`
}

type ResourceActivityDisplay struct {
	Actor    ResourceActivityDisplayActor    `json:"actor,omitempty"`
	Resource ResourceActivityDisplayResource `json:"resource,omitempty"`
	Target   ResourceActivityDisplayTarget   `json:"target,omitempty"`
	Meta     []ResourceActivityDisplayMeta   `json:"meta,omitempty"`
}

type ResourceActivityItem struct {
	ID            string                  `json:"id"`
	WorkspaceID   string                  `json:"workspaceId"`
	AssetType     string                  `json:"assetType"`
	AssetID       string                  `json:"assetId"`
	AssetName     string                  `json:"assetName,omitempty"`
	RepoFullName  string                  `json:"repoFullName,omitempty"`
	EventType     string                  `json:"eventType"`
	Actor         ResourceActivityActor   `json:"actor"`
	SummaryKey    string                  `json:"summaryKey"`
	Details       map[string]any          `json:"details"`
	Display       ResourceActivityDisplay `json:"display"`
	Target        ResourceActivityTarget  `json:"target"`
	Source        string                  `json:"source"`
	SourceEventID string                  `json:"sourceEventId,omitempty"`
	OccurredAt    string                  `json:"occurredAt"`
}

type ResourceActivityListResponse struct {
	Items      []ResourceActivityItem `json:"items"`
	NextCursor string                 `json:"nextCursor,omitempty"`
}
