package sqlserverflexbeta import ( "fmt" "github.com/hashicorp/terraform-plugin-framework/types" utils2 "github.com/stackitcloud/stackit-sdk-go/core/utils" sqlserverflexbeta "github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex/v3beta1api" "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 == 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 != 0 { 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(int64(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 == 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 != 0 { 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(int64(source.GetCompatibilityLevel())) model.CompatibilityLevel = types.Int64Value(int64(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.ValueString(), Owner: model.Owner.ValueString(), Collation: model.Collation.ValueStringPointer(), Compatibility: utils2.Ptr(int32(model.Compatibility.ValueInt64())), }, nil }