MCPcopy
hub / github.com/sqlc-dev/sqlc / CreateDB

Function CreateDB

internal/cmd/createdb.go:41–103  ·  view source on GitHub ↗
(ctx context.Context, dir, filename, querySetName string, o *Options)

Source from the content-addressed store, hash-verified

39}
40
41func CreateDB(ctx context.Context, dir, filename, querySetName string, o *Options) error {
42 _, conf, err := o.ReadConfig(dir, filename)
43 if err != nil {
44 return err
45 }
46 // Find the first queryset with a managed database
47 var queryset *config.SQL
48 var count int
49 for _, sql := range conf.SQL {
50 sql := sql
51 if querySetName != "" && sql.Name != querySetName {
52 continue
53 }
54 if sql.Database != nil && sql.Database.Managed {
55 queryset = &sql
56 count += 1
57 }
58 }
59 if queryset == nil && querySetName != "" {
60 return fmt.Errorf("no queryset found with name %q", querySetName)
61 }
62 if queryset == nil {
63 return fmt.Errorf("no querysets configured to use a managed database")
64 }
65 if count > 1 {
66 return fmt.Errorf("multiple querysets configured to use managed databases")
67 }
68
69 switch queryset.Engine {
70 case config.EngineMySQL:
71 // pass
72 case config.EnginePostgreSQL:
73 // pass
74 default:
75 return fmt.Errorf("createdb does not support the %s engine", queryset.Engine)
76 }
77
78 var ddl []string
79 files, err := sqlpath.Glob(queryset.Schema)
80 if err != nil {
81 return err
82 }
83 for _, schema := range files {
84 contents, err := os.ReadFile(schema)
85 if err != nil {
86 return fmt.Errorf("read file: %w", err)
87 }
88 ddl = append(ddl, migrations.RemoveRollbackStatements(string(contents)))
89 }
90
91 now := time.Now().UTC().UnixNano()
92 client := dbmanager.NewClient(conf.Servers)
93 resp, err := client.CreateDatabase(ctx, &dbmanager.CreateDatabaseRequest{
94 Engine: string(queryset.Engine),
95 Migrations: ddl,
96 Prefix: fmt.Sprintf("sqlc_createdb_%d", now),
97 })
98 if err != nil {

Callers 1

createdb.goFile · 0.85

Calls 5

CreateDatabaseMethod · 0.95
GlobFunction · 0.92
RemoveRollbackStatementsFunction · 0.92
NewClientFunction · 0.92
ReadConfigMethod · 0.80

Tested by

no test coverage detected