Skip to content

Commit 7d2e049

Browse files
feat(mongodb): add CreateUser grpc layer (scaleway#2285)
Co-authored-by: Laure-di <[email protected]>
1 parent 3f147e5 commit 7d2e049

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

api/mongodb/v1alpha1/mongodb_sdk.go

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -718,6 +718,21 @@ type CreateSnapshotRequest struct {
718718
ExpiresAt *time.Time `json:"expires_at,omitempty"`
719719
}
720720

721+
// CreateUserRequest: create user request.
722+
type CreateUserRequest struct {
723+
// Region: region to target. If none is passed will use default region from the config.
724+
Region scw.Region `json:"-"`
725+
726+
// InstanceID: UUID of the Database Instance the user belongs to.
727+
InstanceID string `json:"-"`
728+
729+
// Name: name of the database user.
730+
Name string `json:"-"`
731+
732+
// Password: password of the database user.
733+
Password *string `json:"password,omitempty"`
734+
}
735+
721736
// DeleteInstanceRequest: delete instance request.
722737
type DeleteInstanceRequest struct {
723738
// Region: region to target. If none is passed will use default region from the config.
@@ -1673,6 +1688,46 @@ func (s *API) ListUsers(req *ListUsersRequest, opts ...scw.RequestOption) (*List
16731688
return &resp, nil
16741689
}
16751690

1691+
// CreateUser: Create an user on a Database Instance. You must define the `name`, `password` of the user and `instance_id` parameters in the request.
1692+
func (s *API) CreateUser(req *CreateUserRequest, opts ...scw.RequestOption) (*User, error) {
1693+
var err error
1694+
1695+
if req.Region == "" {
1696+
defaultRegion, _ := s.client.GetDefaultRegion()
1697+
req.Region = defaultRegion
1698+
}
1699+
1700+
if fmt.Sprint(req.Region) == "" {
1701+
return nil, errors.New("field Region cannot be empty in request")
1702+
}
1703+
1704+
if fmt.Sprint(req.InstanceID) == "" {
1705+
return nil, errors.New("field InstanceID cannot be empty in request")
1706+
}
1707+
1708+
if fmt.Sprint(req.Name) == "" {
1709+
return nil, errors.New("field Name cannot be empty in request")
1710+
}
1711+
1712+
scwReq := &scw.ScalewayRequest{
1713+
Method: "POST",
1714+
Path: "/mongodb/v1alpha1/regions/" + fmt.Sprint(req.Region) + "/instances/" + fmt.Sprint(req.InstanceID) + "/users/" + fmt.Sprint(req.Name) + "",
1715+
}
1716+
1717+
err = scwReq.SetBody(req)
1718+
if err != nil {
1719+
return nil, err
1720+
}
1721+
1722+
var resp User
1723+
1724+
err = s.client.Do(scwReq, &resp, opts...)
1725+
if err != nil {
1726+
return nil, err
1727+
}
1728+
return &resp, nil
1729+
}
1730+
16761731
// UpdateUser: Update the parameters of a user on a Database Instance. You can update the `password` parameter, but you cannot change the name of the user.
16771732
func (s *API) UpdateUser(req *UpdateUserRequest, opts ...scw.RequestOption) (*User, error) {
16781733
var err error

0 commit comments

Comments
 (0)