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

Function doGenerate

backend/plugin/parser/plsql/restore.go:101–145  ·  view source on GitHub ↗
(ctx context.Context, rCtx base.RestoreContext, sqlForComment string, node oracleast.StmtNode, backupItem *storepb.PriorBackupDetail_Item)

Source from the content-addressed store, hash-verified

99}
100
101func doGenerate(ctx context.Context, rCtx base.RestoreContext, sqlForComment string, node oracleast.StmtNode, backupItem *storepb.PriorBackupDetail_Item) (string, error) {
102 _, sourceDatabase, err := common.GetInstanceDatabaseID(backupItem.SourceTable.Database)
103 if err != nil {
104 return "", errors.Wrapf(err, "failed to get source database ID for %s", backupItem.SourceTable.Database)
105 }
106 _, targetDatabase, err := common.GetInstanceDatabaseID(backupItem.TargetTable.Database)
107 if err != nil {
108 return "", errors.Wrapf(err, "failed to get target database ID for %s", backupItem.TargetTable.Database)
109 }
110
111 if rCtx.GetDatabaseMetadataFunc == nil {
112 return "", errors.Errorf("GetDatabaseMetadataFunc is required")
113 }
114
115 _, metadata, err := rCtx.GetDatabaseMetadataFunc(ctx, rCtx.InstanceID, sourceDatabase)
116 if err != nil {
117 return "", errors.Wrapf(err, "failed to get database metadata for %s", sourceDatabase)
118 }
119
120 schemaMetadata := metadata.GetSchemaMetadata("")
121 if schemaMetadata == nil {
122 return "", errors.Errorf("no schema metadata for %s", sourceDatabase)
123 }
124
125 tableMetadata := schemaMetadata.GetTable(backupItem.SourceTable.Table)
126 if tableMetadata == nil {
127 return "", errors.Errorf("no table metadata for %s.%s", sourceDatabase, backupItem.SourceTable.Table)
128 }
129
130 g := &generator{
131 ctx: ctx,
132 rCtx: rCtx,
133 backupDatabase: targetDatabase,
134 backupTable: backupItem.TargetTable.Table,
135 originalDatabase: sourceDatabase,
136 originalTable: backupItem.SourceTable.Table,
137 pk: tableMetadata.GetPrimaryKey(),
138 table: tableMetadata,
139 isFirst: true,
140 }
141 if err := g.generate(node); err != nil {
142 return "", err
143 }
144 return fmt.Sprintf("/*\nOriginal SQL:\n%s\n*/\n%s", sqlForComment, g.result), nil
145}
146
147type generator struct {
148 backupDatabase string

Callers 1

GenerateRestoreSQLFunction · 0.70

Calls 7

generateMethod · 0.95
GetInstanceDatabaseIDFunction · 0.92
ErrorfMethod · 0.80
GetSchemaMetadataMethod · 0.80
GetPrimaryKeyMethod · 0.80
GetTableMethod · 0.45

Tested by

no test coverage detected