MCPcopy Create free account
hub / github.com/bytebase/bytebase / ListProjectWebhooks

Method ListProjectWebhooks

backend/store/project_webhook.go:84–156  ·  view source on GitHub ↗

ListProjectWebhooks lists a list of ProjectWebhook instances.

(ctx context.Context, find *FindProjectWebhookMessage)

Source from the content-addressed store, hash-verified

82
83// ListProjectWebhooks lists a list of ProjectWebhook instances.
84func (s *Store) ListProjectWebhooks(ctx context.Context, find *FindProjectWebhookMessage) ([]*ProjectWebhookMessage, error) {
85 q := qb.Q().Space(`
86 SELECT
87 resource_id,
88 project,
89 payload
90 FROM project_webhook
91 WHERE TRUE
92 `)
93
94 if v := find.ResourceID; v != nil {
95 q.And("resource_id = ?", *v)
96 }
97 if v := find.ProjectID; v != nil {
98 q.And("project = ?", *v)
99 }
100 if len(find.ProjectIDs) > 0 {
101 q.And("project = ANY(?)", find.ProjectIDs)
102 }
103 if v := find.URL; v != nil {
104 q.And("payload->>'url' = ?", *v)
105 }
106
107 query, args, err := q.ToSQL()
108 if err != nil {
109 return nil, errors.Wrapf(err, "failed to build sql")
110 }
111
112 rows, err := s.GetDB().QueryContext(ctx, query, args...)
113 if err != nil {
114 return nil, err
115 }
116 defer rows.Close()
117
118 var projectWebhooks []*ProjectWebhookMessage
119 for rows.Next() {
120 projectWebhook := ProjectWebhookMessage{
121 Payload: &storepb.ProjectWebhook{},
122 }
123 var payload []byte
124
125 if err := rows.Scan(
126 &projectWebhook.ResourceID,
127 &projectWebhook.ProjectID,
128 &payload,
129 ); err != nil {
130 return nil, err
131 }
132
133 if err := common.ProtojsonUnmarshaler.Unmarshal(payload, projectWebhook.Payload); err != nil {
134 return nil, errors.Wrapf(err, "failed to unmarshal")
135 }
136
137 if v := find.EventType; v != nil {
138 found := false
139 for _, activity := range projectWebhook.Payload.Activities {
140 if activity == *v {
141 found = true

Callers 3

ListProjectsMethod · 0.95
GetProjectWebhookMethod · 0.95
CreateEventMethod · 0.80

Calls 10

GetDBMethod · 0.95
QFunction · 0.92
SpaceMethod · 0.80
AndMethod · 0.80
ToSQLMethod · 0.80
QueryContextMethod · 0.80
ScanMethod · 0.80
UnmarshalMethod · 0.80
CloseMethod · 0.65
NextMethod · 0.45

Tested by

no test coverage detected