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

Method createDatabase

backend/tests/database.go:13–65  ·  view source on GitHub ↗
(ctx context.Context, project *v1pb.Project, instance *v1pb.Instance, environment *v1pb.EnvironmentSetting_Environment, databaseName string, owner string)

Source from the content-addressed store, hash-verified

11)
12
13func (ctl *controller) createDatabase(ctx context.Context, project *v1pb.Project, instance *v1pb.Instance, environment *v1pb.EnvironmentSetting_Environment, databaseName string, owner string) error {
14 characterSet, collation := "utf8mb4", "utf8mb4_general_ci"
15 if instance.Engine == v1pb.Engine_POSTGRES {
16 characterSet = "UTF8"
17 collation = "en_US.UTF-8"
18 }
19 environmentName := ""
20 if environment != nil {
21 environmentName = environment.Name
22 }
23
24 planResp, err := ctl.planServiceClient.CreatePlan(ctx, connect.NewRequest(&v1pb.CreatePlanRequest{
25 Parent: project.Name,
26 Plan: &v1pb.Plan{
27 Specs: []*v1pb.Plan_Spec{
28 {
29 Id: uuid.NewString(),
30 Config: &v1pb.Plan_Spec_CreateDatabaseConfig{
31 CreateDatabaseConfig: &v1pb.Plan_CreateDatabaseConfig{
32 Target: instance.Name,
33 Database: databaseName,
34 CharacterSet: characterSet,
35 Collation: collation,
36 Owner: owner,
37 Environment: environmentName,
38 },
39 },
40 },
41 },
42 },
43 }))
44 if err != nil {
45 return err
46 }
47 issueResp, err := ctl.issueServiceClient.CreateIssue(ctx, connect.NewRequest(&v1pb.CreateIssueRequest{
48 Parent: project.Name,
49 Issue: &v1pb.Issue{
50 Title: fmt.Sprintf("create database %q", databaseName),
51 Description: fmt.Sprintf("This creates a database %q.", databaseName),
52 Plan: planResp.Msg.Name,
53 Type: v1pb.Issue_DATABASE_CHANGE,
54 },
55 }))
56 if err != nil {
57 return err
58 }
59 rolloutResp, err := ctl.rolloutServiceClient.CreateRollout(ctx, connect.NewRequest(&v1pb.CreateRolloutRequest{Parent: planResp.Msg.Name}))
60 if err != nil {
61 return err
62 }
63
64 return ctl.waitRollout(ctx, issueResp.Msg.Name, rolloutResp.Msg.Name)
65}

Calls 4

waitRolloutMethod · 0.95
CreatePlanMethod · 0.65
CreateIssueMethod · 0.65
CreateRolloutMethod · 0.65