import { groupArray } from 'utils/index';
import Base from 'stores/base';
export class ServerGroupInstanceStore extends Base {
get listResponseKey() {
return 'servers';
}
get paramsFunc() {
return (params) => {
const { all_projects, members, isServerGroup, ...rest } = params;
return rest;
};
}
get groupArraySize() {
return 1;
}
async requestList(params, filters) {
const { members, isServerGroup, all_projects } = filters;
if (members && isServerGroup && members.length === 0) {
return [];
}
const memberArrs = groupArray(members, this.groupArraySize);
const results = await Promise.all(
memberArrs.map((it) => {
const newParams = { ...params, uuid: it, all_projects };
return this.skylineClient.extension.servers(newParams);
})
);
const servers = [];
results.forEach((result) => {
servers.push(...result[this.listResponseKey]);
});
return servers;
}
async listDidFetch(items) {
if (items.length === 0) {
return items;
}
return items.map((it) => ({
...it,
tags: (it.origin_data || {}).tags || [],
}));
}
}
const globalServerGroupInstanceStore = new ServerGroupInstanceStore();
export default globalServerGroupInstanceStore;