package account

// IDs gets array of AccountIDs from ListAccounts struct
func (la ListAccounts) IDs() []uint64 {
	res := make([]uint64, 0, len(la.Data))
	for _, acc := range la.Data {
		res = append(res, acc.ID)
	}
	return res
}

// IDs gets array of ComputeIDs from ListComputes struct
func (lc ListComputes) IDs() []uint64 {
	res := make([]uint64, 0, len(lc.Data))
	for _, c := range lc.Data {
		res = append(res, c.ComputeID)
	}
	return res
}

// IDs gets array of DiskIDs from ListDisks struct
func (ld ListDisks) IDs() []uint64 {
	res := make([]uint64, 0, len(ld.Data))
	for _, d := range ld.Data {
		res = append(res, d.ID)
	}
	return res
}

// IDs gets array of FLIPGroupIDs from ListFLIPGroups struct
func (fg ListFLIPGroups) IDs() []uint64 {
	res := make([]uint64, 0, len(fg.Data))
	for _, g := range fg.Data {
		res = append(res, g.ID)
	}
	return res
}

// IDs gets array of AccountIDs from ListResourceConsumption struct
func (rc ListResourceConsumption) IDs() []uint64 {
	res := make([]uint64, 0, len(rc.Data))
	for _, r := range rc.Data {
		res = append(res, r.AccountID)
	}
	return res
}

// IDs gets array of RGIDs from ListRG struct
func (rg ListRG) IDs() []uint64 {
	res := make([]uint64, 0, len(rg.Data))
	for _, g := range rg.Data {
		res = append(res, g.RGID)
	}
	return res
}

// IDs gets array of TemplateIDs from ListTemplates struct
func (lt ListTemplates) IDs() []uint64 {
	res := make([]uint64, 0, len(lt.Data))
	for _, t := range lt.Data {
		res = append(res, t.ID)
	}
	return res
}

// IDs gets array of VINSIDs from ListVINS struct
func (lv ListVINS) IDs() []uint64 {
	res := make([]uint64, 0, len(lv.Data))
	for _, v := range lv.Data {
		res = append(res, v.ID)
	}
	return res
}
