-
Notifications
You must be signed in to change notification settings - Fork 428
/
Copy pathrole_grant.go
41 lines (33 loc) · 934 Bytes
/
role_grant.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package snowflake
import "fmt"
type RoleGrantBuilder struct {
name string
}
type RoleGrantExecutable struct {
name string
granteeType granteeType
grantee string
}
func RoleGrant(name string) *RoleGrantBuilder {
return &RoleGrantBuilder{name: name}
}
func (gb *RoleGrantBuilder) User(user string) *RoleGrantExecutable {
return &RoleGrantExecutable{
name: gb.name,
granteeType: userType,
grantee: user,
}
}
func (gb *RoleGrantBuilder) Role(role string) *RoleGrantExecutable {
return &RoleGrantExecutable{
name: gb.name,
granteeType: roleType,
grantee: role,
}
}
func (gr *RoleGrantExecutable) Grant() string {
return fmt.Sprintf(`GRANT ROLE "%s" TO %s "%s"`, gr.name, gr.granteeType, gr.grantee) // nolint: gosec
}
func (gr *RoleGrantExecutable) Revoke() string {
return fmt.Sprintf(`REVOKE ROLE "%s" FROM %s "%s"`, gr.name, gr.granteeType, gr.grantee) // nolint: gosec
}