@@ -31,6 +31,7 @@ import type {
3131 NodeTypeVolumeType ,
3232 RestoreSnapshotRequest ,
3333 RestoreSnapshotRequestVolumeDetails ,
34+ SetUserRoleRequest ,
3435 Setting ,
3536 Snapshot ,
3637 SnapshotVolumeType ,
@@ -39,6 +40,7 @@ import type {
3940 UpdateUserRequest ,
4041 UpgradeInstanceRequest ,
4142 User ,
43+ UserRole ,
4244 Version ,
4345 Volume ,
4446} from './types.gen'
@@ -177,6 +179,20 @@ export const unmarshalSnapshot = (data: unknown): Snapshot => {
177179 } as Snapshot
178180}
179181
182+ const unmarshalUserRole = ( data : unknown ) : UserRole => {
183+ if ( ! isJSONObject ( data ) ) {
184+ throw new TypeError (
185+ `Unmarshalling the type 'UserRole' failed as data isn't a dictionary.` ,
186+ )
187+ }
188+
189+ return {
190+ anyDatabase : data . any_database ,
191+ database : data . database ,
192+ role : data . role ,
193+ } as UserRole
194+ }
195+
180196export const unmarshalUser = ( data : unknown ) : User => {
181197 if ( ! isJSONObject ( data ) ) {
182198 throw new TypeError (
@@ -186,6 +202,7 @@ export const unmarshalUser = (data: unknown): User => {
186202
187203 return {
188204 name : data . name ,
205+ roles : unmarshalArrayOfObject ( data . roles , unmarshalUserRole ) ,
189206 } as User
190207}
191208
@@ -450,6 +467,28 @@ export const marshalRestoreSnapshotRequest = (
450467 volume : marshalRestoreSnapshotRequestVolumeDetails ( request . volume , defaults ) ,
451468} )
452469
470+ const marshalUserRole = (
471+ request : UserRole ,
472+ defaults : DefaultValues ,
473+ ) : Record < string , unknown > => ( {
474+ role : request . role ,
475+ ...resolveOneOf < string | boolean > ( [
476+ { param : 'database' , value : request . database } ,
477+ { param : 'any_database' , value : request . anyDatabase } ,
478+ ] ) ,
479+ } )
480+
481+ export const marshalSetUserRoleRequest = (
482+ request : SetUserRoleRequest ,
483+ defaults : DefaultValues ,
484+ ) : Record < string , unknown > => ( {
485+ roles :
486+ request . roles !== undefined
487+ ? request . roles . map ( elt => marshalUserRole ( elt , defaults ) )
488+ : undefined ,
489+ user_name : request . userName ,
490+ } )
491+
453492export const marshalUpdateInstanceRequest = (
454493 request : UpdateInstanceRequest ,
455494 defaults : DefaultValues ,
0 commit comments