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

Function StartMetadataInstance

backend/resources/postgres/meta_instance.go:13–45  ·  view source on GitHub ↗

StartMetadataInstance starts the metadata instance.

(ctx context.Context, pgDataDir string, port int, mode common.ReleaseMode)

Source from the content-addressed store, hash-verified

11
12// StartMetadataInstance starts the metadata instance.
13func StartMetadataInstance(ctx context.Context, pgDataDir string, port int, mode common.ReleaseMode) (func(), error) {
14 slog.Info("-----Embedded Postgres BEGIN-----")
15 slog.Info(fmt.Sprintf("Start embedded Postgres datastorePort=%d pgDataDir=%s", port, pgDataDir))
16 if err := initDB(pgDataDir, "bb"); err != nil {
17 return nil, err
18 }
19 serverLog := mode == common.ReleaseModeDev
20 if err := start(port, pgDataDir, serverLog); err != nil {
21 return nil, err
22 }
23 slog.Info("-----Embedded Postgres END-----")
24 db, err := sql.Open("pgx", fmt.Sprintf("host=%s port=%d user=bb database=postgres", common.GetPostgresSocketDir(), port))
25 if err != nil {
26 return nil, err
27 }
28 defer db.Close()
29
30 var ok bool
31 if err := db.QueryRowContext(ctx, "SELECT EXISTS (SELECT 1 FROM pg_database WHERE datname = 'bb');").Scan(&ok); err != nil {
32 return nil, err
33 }
34 if !ok {
35 if _, err := db.ExecContext(ctx, "CREATE DATABASE bb"); err != nil {
36 slog.Debug("database should already exists")
37 }
38 }
39
40 return func() {
41 if err := stop(pgDataDir); err != nil {
42 panic(err)
43 }
44 }, nil
45}

Callers 1

NewServerFunction · 0.92

Calls 9

GetPostgresSocketDirFunction · 0.92
initDBFunction · 0.85
stopFunction · 0.85
InfoMethod · 0.80
ScanMethod · 0.80
DebugMethod · 0.80
startFunction · 0.70
OpenMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected