(ctx context.Context, rCtx base.RestoreContext, sqlForComment string, node oracleast.StmtNode, backupItem *storepb.PriorBackupDetail_Item)
| 99 | } |
| 100 | |
| 101 | func 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 | |
| 147 | type generator struct { |
| 148 | backupDatabase string |
no test coverage detected