96 lines
3.0 KiB
JavaScript
96 lines
3.0 KiB
JavaScript
import {action, iterateActionTimes, iterateCollection} from "./helpers";
|
|
import {isUndefined, union, takeRight} from "lodash";
|
|
|
|
const createClient = (apis, getState) => async (i) => {
|
|
const client = apis.recordApi.getNew("/clients", "client");
|
|
client.FamilyName = "Humperdink";
|
|
client.Address1 = `${i} Mainitucetts Avenue`;
|
|
client.Address2 = "Longerton Road South";
|
|
client.Address3 = "Chalico City";
|
|
client.Address4 = "Northern Humranistan";
|
|
client.Postcode = "BY71 5FR";
|
|
client.CreatedDate = new Date();
|
|
|
|
const state = getState();
|
|
if(isUndefined(state.clientKeys)) state.clientKeys = [];
|
|
state.clientKeys.push(client.key());
|
|
|
|
await apis.recordApi.save(client);
|
|
|
|
return client.key();
|
|
}
|
|
|
|
const getClient = (apis, getState) => async (k) => {
|
|
const state = getState();
|
|
if(isUndefined(state.clients)) state.clients = [];
|
|
|
|
const client = await apis.recordApi.load(k);
|
|
state.clients.push(client);
|
|
|
|
return `key: ${k} , add1: ${client.Address1} , count: ${state.clients.length}`;
|
|
}
|
|
|
|
const listClients = (apis, getState) => async () => {
|
|
const clients = await apis.viewApi.listItems("/clients/default");
|
|
const state = getState();
|
|
if(state.clientKeys.length !== clients.length) {
|
|
throw new Error(
|
|
"list CLients, expected "
|
|
+ state.clientKeys.length.toString()
|
|
+ " clients, actual "
|
|
+ clients.length.toString()
|
|
)
|
|
}
|
|
}
|
|
|
|
const deleteClient = (apis, getState) => async k => {
|
|
await apis.recordApi.delete(k);
|
|
const state = getState();
|
|
state.clientKeys = state.clientKeys.filter(key => key !== k);
|
|
}
|
|
|
|
|
|
export default (apis) => {
|
|
|
|
const state = {};
|
|
const getState = () => state;
|
|
|
|
const noOfRecords = 10000;
|
|
const recordsPerIteration = 10;
|
|
const noOfIterations = noOfRecords / recordsPerIteration;
|
|
|
|
const actionsInOneIteration = () => ([
|
|
|
|
action("Create client", createClient(apis, getState),
|
|
iterateActionTimes(recordsPerIteration)),
|
|
|
|
/*action("Get client", getClient(apis, getState),
|
|
iterateCollection(() => takeRight(getState().clientKeys, recordsPerIteration))),*/
|
|
|
|
action("List Clients", listClients(apis, getState))
|
|
]);
|
|
|
|
let actions = [];
|
|
for (let index = 0; index < noOfIterations; index++) {
|
|
actions = union(actions, actionsInOneIteration());
|
|
}
|
|
|
|
/*
|
|
for (let index = 0; index < noOfIterations; index++) {
|
|
actions.push(
|
|
action("Delete Clients", deleteClient(apis, getState),
|
|
iterateCollection(() => takeRight(getState().clientKeys, recordsPerIteration))),
|
|
action("List Clients", listClients(apis, getState))
|
|
);
|
|
}*/
|
|
let actionIndex = 0;
|
|
|
|
return () => {
|
|
if(actionIndex == actions.length) {
|
|
return {done:true};
|
|
}
|
|
const result = {action:actions[actionIndex], done:false};
|
|
actionIndex++;
|
|
return result;
|
|
};
|
|
}; |