package forms

type PaginationReq struct {
	Page    uint32 `form:"page,default=1,gt=0" json:"page"`
	PerPage uint32 `form:"per_page,default=100,gt=0,lte=100" json:"per_page"`
}

type LimitAndOffset struct {
	Limit  int
	Offset int
}

type GetOrgIDReq struct {
	OrgID uint64 `uri:"org_id" binding:"required"`
}

type GetProjectIDReq struct {
	ProjectID uint64 `uri:"project_id" binding:"required"`
}

type GetClusterIDReq struct {
	ClusterID uint64 `uri:"cluster_id" binding:"required"`
}

type GetUserIDReq struct {
	UserID uint64 `uri:"user_id" binding:"required"`
}

type GetRoleIDReq struct {
	RoleID uint64 `uri:"role_id" binding:"required"`
}

type GetDiscountIDReq struct {
	DiscountID uint64 `uri:"discount_id" binding:"required"`
}

type GetProviderReq struct {
	Provider string `uri:"provider" binding:"required"`
}

type GetMachineIDReq struct {
	MachineID uint64 `uri:"machine_id" binding:"required"`
}

type GetClusterProfileIDReq struct {
	ClusterProfileID uint64 `uri:"profile_id" binding:"required"`
}

type GetRegionDiskIDReq struct {
	RegionDiskID uint64 `uri:"disk_id" binding:"required"`
}

type GetDiskIDReq struct {
	DiskID uint64 `uri:"disk_id" binding:"required"`
}

type GetRegionIDReq struct {
	RegionID uint64 `uri:"region_id" binding:"required"`
}

type GetOrgIDAndUserIDReq struct {
	GetOrgIDReq
	GetUserIDReq
}

type GetOrgIDAndProjectIDReq struct {
	GetOrgIDReq
	GetProjectIDReq
}

type GetOrgIDAndClusterIDReq struct {
	GetOrgIDReq
	GetClusterIDReq
}

type GetProviderAndMachineIDReq struct {
	GetProviderReq
	GetMachineIDReq
}

type GetRegionAndDiskReq struct {
	GetDiskIDReq
	GetProviderReq
}

type GetProviderAndRegionIDReq struct {
	GetProviderReq
	GetRegionIDReq
}

type GetProviderAndClusterProfileID struct {
	GetProviderReq
	GetClusterProfileIDReq
}

type GetOrgIDAndDiscountIDReq struct {
	GetOrgIDReq
	GetDiscountIDReq
}

type GetProviderAndDiskIDReq struct {
	GetProviderReq
	GetDiskIDReq
}

type ListTenantClusterLifeCycleReq struct {
	Start int64 `form:"start" binding:"required" json:"start"`
	End   int64 `form:"end" binding:"required" json:"end"`
}

type BillIDReq struct {
	GetOrgIDReq
	BillID uint64 `uri:"bill_id" binding:"required"`
}
