@@ -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.
722737type 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.
16771732func (s * API ) UpdateUser (req * UpdateUserRequest , opts ... scw.RequestOption ) (* User , error ) {
16781733 var err error
0 commit comments