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

Method generateInstance

backend/component/sampleinstance/manager.go:218–314  ·  view source on GitHub ↗
(
	ctx context.Context,
	projectID string,
	instanceMessage *store.InstanceMessage,
	schemaSyncer *schemasync.Syncer,
)

Source from the content-addressed store, hash-verified

216}
217
218func (m *Manager) generateInstance(
219 ctx context.Context,
220 projectID string,
221 instanceMessage *store.InstanceMessage,
222 schemaSyncer *schemasync.Syncer,
223) error {
224 // Generate Sample Instance
225 instance, err := m.store.GetInstance(ctx, &store.FindInstanceMessage{
226 Workspace: instanceMessage.Workspace,
227 ResourceID: &instanceMessage.ResourceID,
228 })
229 if err != nil {
230 return errors.Wrapf(err, "failed to find onboarding instance %v", instanceMessage.ResourceID)
231 }
232 if instance == nil {
233 sampleInstance, err := m.store.CreateInstance(ctx, &store.InstanceMessage{
234 Workspace: instanceMessage.Workspace,
235 ResourceID: instanceMessage.ResourceID,
236 EnvironmentID: instanceMessage.EnvironmentID,
237 Metadata: &storepb.Instance{
238 Title: instanceMessage.Metadata.Title,
239 Engine: storepb.Engine_POSTGRES,
240 ExternalLink: "",
241 Activation: false,
242 DataSources: []*storepb.DataSource{
243 {
244 Id: "admin",
245 Type: storepb.DataSourceType_ADMIN,
246 Username: postgres.SampleUser,
247 Password: "",
248 Host: common.GetPostgresSocketDir(),
249 Port: instanceMessage.Metadata.DataSources[0].Port,
250 Database: instanceMessage.Metadata.DataSources[0].Database,
251 },
252 },
253 },
254 })
255 if err != nil {
256 return errors.Wrapf(err, "failed to create onboarding instance %v", instanceMessage.ResourceID)
257 }
258 instance = sampleInstance
259
260 // Start the sample instance if needed
261 if err := m.HandleInstanceCreation(ctx, instance.ResourceID); err != nil {
262 slog.Warn("failed to start sample instance during onboarding", log.BBError(err), slog.String("instance", instance.ResourceID))
263 }
264 }
265
266 // Sync the instance schema so we can transfer the sample database later.
267 if _, _, _, err := schemaSyncer.SyncInstance(ctx, instance); err != nil {
268 return errors.Wrapf(err, "failed to sync onboarding instance %v", instance.ResourceID)
269 }
270
271 dbName := instanceMessage.Metadata.DataSources[0].Database
272 // Transfer sample database to the just created project.
273 transferDatabaseMessage := &store.UpdateDatabaseMessage{
274 InstanceID: instance.ResourceID,
275 DatabaseName: dbName,

Callers 1

Calls 12

GetPostgresSocketDirFunction · 0.92
BBErrorFunction · 0.92
ErrorfMethod · 0.80
CreateChangelogMethod · 0.80
GetInstanceMethod · 0.65
CreateInstanceMethod · 0.65
StringMethod · 0.65
SyncInstanceMethod · 0.65
UpdateDatabaseMethod · 0.65
GetDatabaseMethod · 0.65

Tested by

no test coverage detected