Skip to content

Commit

Permalink
improving code-duplication issues
Browse files Browse the repository at this point in the history
  • Loading branch information
polatengin committed Jun 4, 2024
1 parent 1513d20 commit 610bc10
Showing 1 changed file with 34 additions and 21 deletions.
55 changes: 34 additions & 21 deletions internal/powerplatform/services/data_record/resource_data_record.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,11 +117,11 @@ func (r *DataRecordResource) Create(ctx context.Context, req resource.CreateRequ
plan.TableLogicalName = types.StringValue(plan.TableLogicalName.ValueString())
plan.Columns = types.DynamicValue(plan.Columns)

var mapColumns map[string]interface{}

jsonColumns, _ := json.Marshal(plan.Columns.String())
unquotedJsonColumns, _ := strconv.Unquote(string(jsonColumns))
json.Unmarshal([]byte(unquotedJsonColumns), &mapColumns)
mapColumns, err := convertResourceModelToMap(plan)
if err != nil {
resp.Diagnostics.AddError(fmt.Sprintf("Error converting columns to map: %s", err.Error()), err.Error())
return
}

dr, err := r.DataRecordClient.ApplyDataRecord(ctx, plan.Id.ValueString(), plan.EnvironmentId.ValueString(), plan.TableLogicalName.ValueString(), mapColumns)
if err != nil {
Expand Down Expand Up @@ -187,11 +187,11 @@ func (r *DataRecordResource) Update(ctx context.Context, req resource.UpdateRequ
plan.TableLogicalName = types.StringValue(plan.TableLogicalName.ValueString())
plan.Columns = types.DynamicValue(plan.Columns)

var mapColumns map[string]interface{}

jsonColumns, _ := json.Marshal(plan.Columns.String())
unquotedJsonColumns, _ := strconv.Unquote(string(jsonColumns))
json.Unmarshal([]byte(unquotedJsonColumns), &mapColumns)
mapColumns, err := convertResourceModelToMap(*plan)
if err != nil {
resp.Diagnostics.AddError(fmt.Sprintf("Error converting columns to map: %s", err.Error()), err.Error())
return
}

dr, err := r.DataRecordClient.ApplyDataRecord(ctx, state.Id.ValueString(), plan.EnvironmentId.ValueString(), plan.TableLogicalName.ValueString(), mapColumns)
if err != nil {
Expand All @@ -217,13 +217,13 @@ func (r *DataRecordResource) Delete(ctx context.Context, req resource.DeleteRequ
return
}

var mapColumns map[string]interface{}

jsonColumns, _ := json.Marshal(state.Columns.String())
unquotedJsonColumns, _ := strconv.Unquote(string(jsonColumns))
json.Unmarshal([]byte(unquotedJsonColumns), &mapColumns)
mapColumns, err := convertResourceModelToMap(*state)
if err != nil {
resp.Diagnostics.AddError(fmt.Sprintf("Error converting columns to map: %s", err.Error()), err.Error())
return
}

err := r.DataRecordClient.DeleteDataRecord(ctx, state.Id.ValueString(), state.EnvironmentId.ValueString(), state.TableLogicalName.ValueString(), mapColumns)
err = r.DataRecordClient.DeleteDataRecord(ctx, state.Id.ValueString(), state.EnvironmentId.ValueString(), state.TableLogicalName.ValueString(), mapColumns)
if err != nil {
resp.Diagnostics.AddError(fmt.Sprintf("Client error when deleting %s_%s", r.ProviderTypeName, r.TypeName), err.Error())
return
Expand All @@ -242,15 +242,15 @@ func convertColumnsToState(ctx context.Context, apiClient *DataRecordClient, cur
"data_record_id": types.StringType,
}

var old_columns map[string]interface{}
jsonColumns, _ := json.Marshal(currentState.Columns.String())
unquotedJsonColumns, _ := strconv.Unquote(string(jsonColumns))
json.Unmarshal([]byte(unquotedJsonColumns), &old_columns)
mapColumns, err := convertResourceModelToMap(*currentState)
if err != nil {
return nil
}

attributeTypes := make(map[string]attr.Type)
attributes := make(map[string]attr.Value)

for key, value := range old_columns {
for key, value := range mapColumns {
switch value.(type) {
case bool:
v, ok := columns[key].(bool)
Expand Down Expand Up @@ -339,3 +339,16 @@ func convertColumnsToState(ctx context.Context, apiClient *DataRecordClient, cur

return currentState
}

func convertResourceModelToMap(plan DataRecordResourceModel) (mapColumns map[string]interface{}, err error) {
jsonColumns, err := json.Marshal(plan.Columns.String())
if err != nil {
return nil, err
}
unquotedJsonColumns, err := strconv.Unquote(string(jsonColumns))
if err != nil {
return nil, err
}
json.Unmarshal([]byte(unquotedJsonColumns), &mapColumns)
return mapColumns, nil
}

0 comments on commit 610bc10

Please sign in to comment.