MCPcopy Index your code
hub / github.com/bytebase/bytebase / CreateProjectWebhook

Method CreateProjectWebhook

backend/store/project_webhook.go:41–81  ·  view source on GitHub ↗

CreateProjectWebhook creates an instance of ProjectWebhook.

(ctx context.Context, projectID string, create *ProjectWebhookMessage)

Source from the content-addressed store, hash-verified

39
40// CreateProjectWebhook creates an instance of ProjectWebhook.
41func (s *Store) CreateProjectWebhook(ctx context.Context, projectID string, create *ProjectWebhookMessage) (*ProjectWebhookMessage, error) {
42 payload := []byte("{}")
43 if create.Payload != nil {
44 p, err := protojson.Marshal(create.Payload)
45 if err != nil {
46 return nil, errors.Wrapf(err, "failed to marshal")
47 }
48 payload = p
49 }
50
51 projectWebhook := ProjectWebhookMessage{
52 ProjectID: projectID,
53 Payload: create.Payload,
54 }
55
56 q := qb.Q().Space(`
57 INSERT INTO project_webhook (
58 project,
59 payload
60 )
61 VALUES (?, ?)
62 RETURNING resource_id
63 `, projectID, payload)
64
65 query, args, err := q.ToSQL()
66 if err != nil {
67 return nil, errors.Wrapf(err, "failed to build sql")
68 }
69
70 if err := s.GetDB().QueryRowContext(ctx, query, args...).Scan(
71 &projectWebhook.ResourceID,
72 ); err != nil {
73 if err == sql.ErrNoRows {
74 return nil, common.FormatDBErrorEmptyRowWithQuery(query)
75 }
76 return nil, err
77 }
78
79 s.removeProjectCache(projectID)
80 return &projectWebhook, nil
81}
82
83// ListProjectWebhooks lists a list of ProjectWebhook instances.
84func (s *Store) ListProjectWebhooks(ctx context.Context, find *FindProjectWebhookMessage) ([]*ProjectWebhookMessage, error) {

Callers 1

AddWebhookMethod · 0.80

Calls 7

GetDBMethod · 0.95
removeProjectCacheMethod · 0.95
QFunction · 0.92
SpaceMethod · 0.80
ToSQLMethod · 0.80
ScanMethod · 0.80

Tested by

no test coverage detected