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

Method CreateInstance

backend/store/instance.go:177–219  ·  view source on GitHub ↗

CreateInstance creates an instance.

(ctx context.Context, instanceCreate *InstanceMessage)

Source from the content-addressed store, hash-verified

175
176// CreateInstance creates an instance.
177func (s *Store) CreateInstance(ctx context.Context, instanceCreate *InstanceMessage) (*InstanceMessage, error) {
178 if err := validateInstanceDataSources(instanceCreate.Metadata); err != nil {
179 return nil, err
180 }
181
182 redacted, err := s.obfuscateInstance(ctx, instanceCreate.Metadata)
183 if err != nil {
184 return nil, err
185 }
186 metadataBytes, err := protojson.Marshal(redacted)
187 if err != nil {
188 return nil, err
189 }
190 var environment *string
191 if instanceCreate.EnvironmentID != nil && *instanceCreate.EnvironmentID != "" {
192 environment = instanceCreate.EnvironmentID
193 }
194
195 q := qb.Q().Space(`
196 INSERT INTO instance (
197 resource_id,
198 workspace,
199 environment,
200 metadata
201 ) VALUES (?, ?, ?, ?)
202 `, instanceCreate.ResourceID, instanceCreate.Workspace, environment, metadataBytes)
203 query, args, err := q.ToSQL()
204 if err != nil {
205 return nil, errors.Wrapf(err, "failed to build sql")
206 }
207 if _, err := s.GetDB().ExecContext(ctx, query, args...); err != nil {
208 return nil, err
209 }
210
211 instance := &InstanceMessage{
212 EnvironmentID: instanceCreate.EnvironmentID,
213 ResourceID: instanceCreate.ResourceID,
214 Workspace: instanceCreate.Workspace,
215 Metadata: instanceCreate.Metadata,
216 }
217 s.instanceCache.Add(getInstanceCacheKey(instance.ResourceID), instance)
218 return instance, nil
219}
220
221// UpdateInstance updates an instance.
222func (s *Store) UpdateInstance(ctx context.Context, patch *UpdateInstanceMessage) (*InstanceMessage, error) {

Callers

nothing calls this directly

Calls 7

obfuscateInstanceMethod · 0.95
GetDBMethod · 0.95
QFunction · 0.92
getInstanceCacheKeyFunction · 0.85
SpaceMethod · 0.80
ToSQLMethod · 0.80

Tested by

no test coverage detected