58 lines
1.6 KiB
Go
58 lines
1.6 KiB
Go
package contract
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
type PermissionResponse struct {
|
|
ID uuid.UUID `json:"id"`
|
|
Code string `json:"code"`
|
|
Description *string `json:"description,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type CreatePermissionRequest struct {
|
|
Code string `json:"code"` // unique
|
|
Description *string `json:"description,omitempty"`
|
|
}
|
|
|
|
type UpdatePermissionRequest struct {
|
|
Code *string `json:"code,omitempty"`
|
|
Description *string `json:"description,omitempty"`
|
|
}
|
|
|
|
type ListPermissionsResponse struct {
|
|
Permissions []PermissionResponse `json:"permissions"`
|
|
}
|
|
|
|
type RoleWithPermissionsResponse struct {
|
|
ID uuid.UUID `json:"id"`
|
|
Name string `json:"name"`
|
|
Code string `json:"code"`
|
|
Description *string `json:"description,omitempty"`
|
|
Permissions []PermissionResponse `json:"permissions"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type CreateRoleRequest struct {
|
|
Name string `json:"name"`
|
|
Code string `json:"code"`
|
|
Description *string `json:"description,omitempty"`
|
|
PermissionCodes []string `json:"permission_codes,omitempty"`
|
|
}
|
|
|
|
type UpdateRoleRequest struct {
|
|
Name *string `json:"name,omitempty"`
|
|
Code *string `json:"code,omitempty"`
|
|
Description *string `json:"description,omitempty"`
|
|
PermissionCodes *[]string `json:"permission_codes,omitempty"`
|
|
}
|
|
|
|
type ListRolesResponse struct {
|
|
Roles []RoleWithPermissionsResponse `json:"roles"`
|
|
}
|