/
mock.js
58 lines (54 loc) · 1.97 KB
/
mock.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import { MasterForm } from "./forms/master";
import { PlanForm } from "./forms/plan";
import { StudentForm } from "./forms/student";
import { MockMasters, MockStudents } from "./mock-data";
export const MockRepositoryFor = (formDefinition, sampleData = [], filterHandler = (items, filter) => { return items; }) => {
const items = sampleData;
return {
create: (data) => {
const item = {id: sampleData.length + 1, ...data};
items.push(item);
console.log("Created ", item);
return item;
},
delete: (id) => {
const index = items.findIndex(c => c.id == id);
items.splice(index, 1);
return true;
},
update: (id, updatePayload) => {
console.log("updating " + id + " with payload", updatePayload);
const itemIndex = items.findIndex(c => c.id == id);
items[itemIndex] = {
...items[itemIndex],
...updatePayload,
};
return {id, ...updatePayload};
},
list: (filter = undefined) => {
if (!!filter)
return filterHandler(items, filter);
return items;
},
get: (id) => {
return items.find(c => c.id === id);
},
count: () => {
return items?.length;
},
formDefinition,
}
}
export const MockStudentsRepository = MockRepositoryFor(new StudentForm(), MockStudents, (items, filter) => {
const {query} = filter;
if (!!query) {
return items//.filter(c => c.first_name == query)
}
return items;
});
export const MockMastersRepository = MockRepositoryFor(new MasterForm(), MockMasters, (items, filter) => {
if (!!filter.query)
return items.filter(item => item.first_name.toLowerCase().indexOf(filter.query.toLowerCase()) !== -1) ?? [];
return items;
});
export const MockPlanRepository = MockRepositoryFor(new PlanForm(), [{name: 'Plan', id: 0}]);