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

Method CreateIssue

backend/store/issue.go:154–217  ·  view source on GitHub ↗

CreateIssue creates a new issue.

(ctx context.Context, create *IssueMessage)

Source from the content-addressed store, hash-verified

152
153// CreateIssue creates a new issue.
154func (s *Store) CreateIssue(ctx context.Context, create *IssueMessage) (*IssueMessage, error) {
155 create.Status = storepb.Issue_OPEN
156 if create.Payload != nil {
157 create.Payload.Labels = CanonicalizeIssueLabels(create.Payload.Labels)
158 }
159 payload, err := protojson.Marshal(create.Payload)
160 if err != nil {
161 return nil, errors.Wrapf(err, "failed to marshal issue payload")
162 }
163 tsVector := getTSVector(fmt.Sprintf("%s %s", create.Title, create.Description))
164
165 tx, err := s.GetDB().BeginTx(ctx, nil)
166 if err != nil {
167 return nil, errors.Wrapf(err, "failed to begin tx")
168 }
169 defer tx.Rollback()
170
171 nextID, err := nextProjectID(ctx, tx, "issue", create.ProjectID)
172 if err != nil {
173 return nil, err
174 }
175
176 q := qb.Q().Space(`
177 INSERT INTO issue (
178 id,
179 creator,
180 project,
181 plan_id,
182 name,
183 status,
184 type,
185 description,
186 payload,
187 ts_vector
188 )
189 VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
190 nextID,
191 create.CreatorEmail,
192 create.ProjectID,
193 create.PlanUID,
194 create.Title,
195 create.Status.String(),
196 create.Type.String(),
197 create.Description,
198 payload,
199 tsVector,
200 )
201
202 query, args, err := q.ToSQL()
203 if err != nil {
204 return nil, errors.Wrapf(err, "failed to build sql")
205 }
206
207 if _, err := tx.ExecContext(ctx, query, args...); err != nil {
208 return nil, err
209 }
210
211 if err := tx.Commit(); err != nil {

Callers

nothing calls this directly

Calls 9

GetDBMethod · 0.95
GetIssueMethod · 0.95
QFunction · 0.92
CanonicalizeIssueLabelsFunction · 0.85
getTSVectorFunction · 0.85
nextProjectIDFunction · 0.85
SpaceMethod · 0.80
ToSQLMethod · 0.80
StringMethod · 0.65

Tested by

no test coverage detected