CreateInstance creates an instance.
(ctx context.Context, instanceCreate *InstanceMessage)
| 175 | |
| 176 | // CreateInstance creates an instance. |
| 177 | func (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. |
| 222 | func (s *Store) UpdateInstance(ctx context.Context, patch *UpdateInstanceMessage) (*InstanceMessage, error) { |
nothing calls this directly
no test coverage detected