Skip to content

Commit f5332bb

Browse files
author
oyeliseiev-ua
committed
Change API call to user emails
1 parent 15e18f9 commit f5332bb

File tree

5 files changed

+32
-22
lines changed

5 files changed

+32
-22
lines changed

docs/resources/team.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ output "singlestoredb_team_id" {
4242

4343
- `description` (String) The description of the team.
4444
- `member_teams` (List of String) List of team UUIDs that are members of this team.
45-
- `member_users` (List of String) List of user UUIDs that are members of this team.
45+
- `member_users` (List of String) List of user emails that are members of this team.
4646

4747
### Read-Only
4848

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ require (
1111
github.com/hashicorp/terraform-plugin-framework-validators v0.16.0
1212
github.com/hashicorp/terraform-plugin-go v0.25.0
1313
github.com/hashicorp/terraform-plugin-sdk/v2 v2.35.0
14-
github.com/singlestore-labs/singlestore-go/management v1.1.109
14+
github.com/singlestore-labs/singlestore-go/management v1.1.115
1515
github.com/stretchr/testify v1.8.4
1616
)
1717

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
184184
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
185185
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=
186186
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
187-
github.com/singlestore-labs/singlestore-go/management v1.1.109 h1:EAIZLD3Fj1WetuL2xd0+CdcJbC8mpGhFOJz/KRpntdA=
188-
github.com/singlestore-labs/singlestore-go/management v1.1.109/go.mod h1:pfeKQbKr6ml61j823Pi4RUnBTug1buSxLJDmGINAoKc=
187+
github.com/singlestore-labs/singlestore-go/management v1.1.115 h1:0jB2P1vIX5GgfRzAWd1/vinkTxk9LEUjxz9LWttWrGM=
188+
github.com/singlestore-labs/singlestore-go/management v1.1.115/go.mod h1:pfeKQbKr6ml61j823Pi4RUnBTug1buSxLJDmGINAoKc=
189189
github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A=
190190
github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo=
191191
github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad/go.mod h1:qLr4V1qq6nMqFKkMo8ZTx3f+BZEkzsRUY10Xsm2mwU0=

internal/provider/teams/resource.go

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package teams
22

33
import (
44
"context"
5-
"strings"
65

76
otypes "github.com/deepmap/oapi-codegen/pkg/types"
87
"github.com/google/uuid"
@@ -79,7 +78,7 @@ func (r *teamResource) Schema(_ context.Context, _ resource.SchemaRequest, resp
7978
Computed: true,
8079
ElementType: types.StringType,
8180
Default: listdefault.StaticValue(emptyList),
82-
MarkdownDescription: "List of user UUIDs that are members of this team.",
81+
MarkdownDescription: "List of user emails that are members of this team.",
8382
},
8483
"member_teams": schema.ListAttribute{
8584
Optional: true,
@@ -106,7 +105,7 @@ func (r *teamResource) Create(ctx context.Context, req resource.CreateRequest, r
106105
}
107106

108107
teamCreateResponse, err := r.PostV1TeamsWithResponse(ctx, management.PostV1TeamsJSONRequestBody{
109-
Name: plan.Name.String(),
108+
Name: util.ToString(plan.Name),
110109
Description: util.MaybeString(plan.Description),
111110
})
112111

@@ -121,15 +120,19 @@ func (r *teamResource) Create(ctx context.Context, req resource.CreateRequest, r
121120

122121
id := teamCreateResponse.JSON200.TeamID
123122

124-
userIDs, err := util.ParseUUIDList(plan.MemberUsers)
125-
if err != nil {
126-
resp.Diagnostics.AddAttributeError(
127-
path.Root("member_users"),
128-
"Invalid user ID",
129-
err.Error(),
130-
)
123+
memberEmails := make([]string, len(plan.MemberUsers))
124+
for i, m := range plan.MemberUsers {
125+
// Validate email format
126+
if !util.IsValidEmail(m.ValueString()) {
127+
resp.Diagnostics.AddAttributeError(
128+
path.Root("member_users"),
129+
"Invalid email format",
130+
"The email address '"+m.ValueString()+"' is not a valid email format.",
131+
)
131132

132-
return
133+
return
134+
}
135+
memberEmails[i] = m.ValueString()
133136
}
134137

135138
teamIDs, err := util.ParseUUIDList(plan.MemberTeams)
@@ -143,12 +146,12 @@ func (r *teamResource) Create(ctx context.Context, req resource.CreateRequest, r
143146
return
144147
}
145148

146-
if userIDs != nil || teamIDs != nil {
149+
if len(memberEmails) > 0 || teamIDs != nil {
147150
teamPatchResponse, err := r.PatchV1TeamsTeamIDWithResponse(ctx,
148151
id,
149152
management.PatchV1TeamsTeamIDJSONRequestBody{
150-
AddMemberUserIDs: userIDs,
151-
AddMemberTeamIDs: teamIDs,
153+
AddMemberUserEmails: &memberEmails,
154+
AddMemberTeamIDs: teamIDs,
152155
},
153156
)
154157

@@ -346,22 +349,22 @@ func (r *teamResource) ImportState(ctx context.Context, req resource.ImportState
346349
func toTeamResourceModel(team management.Team) TeamResourceModel {
347350
return TeamResourceModel{
348351
ID: util.UUIDStringValue(team.TeamID),
349-
Name: types.StringValue(strings.ReplaceAll(team.Name, "\"", "")),
352+
Name: types.StringValue(team.Name),
350353
Description: types.StringValue(team.Description),
351354
CreatedAt: util.MaybeStringValue(team.CreatedAt),
352-
MemberUsers: toUsersUUIDList(team.MemberUsers),
355+
MemberUsers: toUsersEmailList(team.MemberUsers),
353356
MemberTeams: toTeamsUUIDList(team.MemberTeams),
354357
}
355358
}
356359

357-
func toUsersUUIDList(userList *[]management.UserInfo) []types.String {
360+
func toUsersEmailList(userList *[]management.UserInfo) []types.String {
358361
if userList == nil {
359362
return []types.String{}
360363
}
361364

362365
users := make([]types.String, len(*userList))
363366
for i, user := range *userList {
364-
users[i] = util.UUIDStringValue(user.UserID)
367+
users[i] = types.StringValue(user.Email)
365368
}
366369

367370
return users

internal/provider/util/util.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package util
22

33
import (
44
"fmt"
5+
"net/mail"
56
"os"
67
"path/filepath"
78
"strings"
@@ -179,3 +180,9 @@ func SubtractListValues(a, b []types.String) []types.String {
179180

180181
return result
181182
}
183+
184+
func IsValidEmail(email string) bool {
185+
_, err := mail.ParseAddress(email)
186+
187+
return err == nil
188+
}

0 commit comments

Comments
 (0)