import { action } from 'mobx';
import { get } from 'lodash';
import client from 'client';
import Base from 'stores/base';
export class StaticRouteStore extends Base {
get client() {
return client.neutron.routers;
}
@action
async fetchList({
limit,
page,
sortKey,
sortOrder,
conditions,
...filters
} = {}) {
this.list.isLoading = true;
const { id } = filters;
const result = await this.client.show(id);
const data = get(result, this.responseKey, {});
const { routes = [] } = data;
routes.forEach((it) => {
it.router_id = id;
it.id = `${it.destination} - ${it.nexthop}`;
});
this.list.update({
data: routes,
total: routes.length || 0,
limit: Number(limit) || 10,
page: Number(page) || 1,
sortKey,
sortOrder,
filters,
isLoading: false,
...(this.list.silent ? {} : { selectedRowKeys: [] }),
});
return routes;
}
async addStaticRoute({ id, routes }) {
const body = {
router: {
routes,
},
};
return this.submitting(this.client.addExtraRoutes(id, body));
}
async removeStaticRoute({ id, routes }) {
const body = {
router: {
routes,
},
};
return this.submitting(this.client.removeExtraRoutes(id, body));
}
}
const globalStaticRouteStore = new StaticRouteStore();
export default globalStaticRouteStore;