package privilege

import (
	"github.com/tidbcloud/devops/api"
	privent "github.com/tidbcloud/devops/entity/privilege"
)

type ListPrivilegesReq struct {
	api.PaginationReq
}

type ListPrivilegesResp struct {
	api.BaseResp `json:",inline"`

	Total      int64                `json:"total"`
	Privileges []*privent.Privilege `json:"items"`
}

type RequestApprovalPrivilegeReq struct {
	Scopes []privent.ApprovalPrivilegeScope `json:"scopes"`
}

type RequestPrivilegeReq struct {
	Reason       string   `json:"reason"`
	ExpiredAt    int64    `json:"expired_at"`
	BindingUsers []string `json:"binding_users"`

	Approval *RequestApprovalPrivilegeReq `json:"approval,omitempty"`
}

type RequestPrivilegeResp struct {
	api.BaseResp `json:",inline"`

	PrivilegeID uint64 `json:"privilege_id"`
}

type GetPrivilegeResp struct {
	api.BaseResp `json:",inline"`

	Privilege *privent.Privilege `json:"privilege"`
}
