Some checks failed
CI Workflow / Check GoReleaser config (pull_request) Successful in 12s
CI Workflow / CI run build and linting (pull_request) Has been cancelled
CI Workflow / Code coverage report (pull_request) Has been cancelled
CI Workflow / CI run tests (pull_request) Has been cancelled
CI Workflow / Test readiness for publishing provider (pull_request) Has been cancelled
103 lines
3.5 KiB
Go
103 lines
3.5 KiB
Go
package sqlserverflexbeta
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/hashicorp/terraform-plugin-framework/types"
|
|
|
|
"tf-provider.git.onstackit.cloud/stackit-dev-tools/terraform-provider-stackitprivatepreview/pkg_gen/sqlserverflexbeta"
|
|
"tf-provider.git.onstackit.cloud/stackit-dev-tools/terraform-provider-stackitprivatepreview/stackit/internal/utils"
|
|
)
|
|
|
|
// mapFields maps fields from a ListDatabase API response to a resourceModel for the data source.
|
|
func mapFields(source *sqlserverflexbeta.GetDatabaseResponse, model *dataSourceModel, region string) error {
|
|
if source == nil {
|
|
return fmt.Errorf("response is nil")
|
|
}
|
|
if source.Id == nil || *source.Id == 0 {
|
|
return fmt.Errorf("id not present")
|
|
}
|
|
if model == nil {
|
|
return fmt.Errorf("model given is nil")
|
|
}
|
|
|
|
var databaseId int64
|
|
if model.Id.ValueInt64() != 0 {
|
|
databaseId = model.Id.ValueInt64()
|
|
} else if source.Id != nil {
|
|
databaseId = *source.Id
|
|
} else {
|
|
return fmt.Errorf("database id not present")
|
|
}
|
|
|
|
model.Id = types.Int64Value(databaseId)
|
|
model.DatabaseName = types.StringValue(source.GetName())
|
|
model.Name = types.StringValue(source.GetName())
|
|
model.Owner = types.StringValue(source.GetOwner())
|
|
model.Region = types.StringValue(region)
|
|
model.ProjectId = types.StringValue(model.ProjectId.ValueString())
|
|
model.InstanceId = types.StringValue(model.InstanceId.ValueString())
|
|
model.CompatibilityLevel = types.Int64Value(source.GetCompatibilityLevel())
|
|
model.CollationName = types.StringValue(source.GetCollationName())
|
|
|
|
model.TerraformId = utils.BuildInternalTerraformId(
|
|
model.ProjectId.ValueString(),
|
|
region,
|
|
model.InstanceId.ValueString(),
|
|
model.DatabaseName.ValueString(),
|
|
)
|
|
|
|
return nil
|
|
}
|
|
|
|
// mapResourceFields maps fields from a ListDatabase API response to a resourceModel for the resource.
|
|
func mapResourceFields(source *sqlserverflexbeta.GetDatabaseResponse, model *resourceModel, region string) error {
|
|
if source == nil {
|
|
return fmt.Errorf("response is nil")
|
|
}
|
|
if source.Id == nil || *source.Id == 0 {
|
|
return fmt.Errorf("id not present")
|
|
}
|
|
if model == nil {
|
|
return fmt.Errorf("model input is nil")
|
|
}
|
|
|
|
var databaseId int64
|
|
if model.Id.ValueInt64() != 0 {
|
|
databaseId = model.Id.ValueInt64()
|
|
} else if source.Id != nil {
|
|
databaseId = *source.Id
|
|
} else {
|
|
return fmt.Errorf("database id not present")
|
|
}
|
|
|
|
model.Id = types.Int64Value(databaseId)
|
|
model.DatabaseName = types.StringValue(source.GetName())
|
|
model.Name = types.StringValue(source.GetName())
|
|
model.Owner = types.StringValue(source.GetOwner())
|
|
model.Region = types.StringValue(region)
|
|
model.ProjectId = types.StringValue(model.ProjectId.ValueString())
|
|
model.InstanceId = types.StringValue(model.InstanceId.ValueString())
|
|
|
|
model.Compatibility = types.Int64Value(source.GetCompatibilityLevel())
|
|
model.CompatibilityLevel = types.Int64Value(source.GetCompatibilityLevel())
|
|
|
|
model.Collation = types.StringValue(source.GetCollationName()) // it does not come back from api
|
|
model.CollationName = types.StringValue(source.GetCollationName())
|
|
|
|
return nil
|
|
}
|
|
|
|
// toCreatePayload converts the resource model to an API create payload.
|
|
func toCreatePayload(model *resourceModel) (*sqlserverflexbeta.CreateDatabaseRequestPayload, error) {
|
|
if model == nil {
|
|
return nil, fmt.Errorf("nil model")
|
|
}
|
|
|
|
return &sqlserverflexbeta.CreateDatabaseRequestPayload{
|
|
Name: model.Name.ValueStringPointer(),
|
|
Owner: model.Owner.ValueStringPointer(),
|
|
Collation: model.Collation.ValueStringPointer(),
|
|
Compatibility: model.Compatibility.ValueInt64Pointer(),
|
|
}, nil
|
|
}
|