gitscope
← marzneshin / v0.6.0 / dashboard/src/features/entity-table/stories/fetch-entities.ts
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/entity-table/stories/fetch-entities.ts · TypeScript
Blame Raw
 1import { FetchEntityReturn } from "../hooks";
 2
 3interface Entity {
 4    id: number;
 5    name: string;
 6    createdAt: string;
 7}
 8
 9const massDataEntities = [
10    { id: 1, name: "Azad Ahmed", createdAt: "2023-01-01" },
11    { id: 2, name: "Bahman Karim", createdAt: "2024-02-05" },
12    { id: 3, name: "Chnar Zana", createdAt: "2022-03-08" },
13    { id: 4, name: "Dilshad Hassan", createdAt: "2024-04-11" },
14    { id: 5, name: "Evin Rojan", createdAt: "2023-05-06" },
15    { id: 6, name: "Farhad Hama", createdAt: "2025-06-08" },
16    { id: 7, name: "Goran Rebwar", createdAt: "2027-07-10" },
17    { id: 8, name: "Havin Ahmed", createdAt: "2025-08-09" },
18    { id: 9, name: "Jiyan Qasim", createdAt: "2025-06-08" },
19    { id: 10, name: "Kawa Sherwan", createdAt: "2027-07-10" },
20    { id: 11, name: "Lawan Barzan", createdAt: "2025-08-09" },
21    { id: 12, name: "Nazdar Rizgar", createdAt: "2025-08-09" },
22    { id: 13, name: "Rojan Shamal", createdAt: "2023-09-12" },
23    { id: 14, name: "Sherin Jalal", createdAt: "2024-10-23" },
24    { id: 15, name: "Tahir Walat", createdAt: "2022-11-29" },
25    { id: 16, name: "Viyan Bave", createdAt: "2023-12-17" },
26    { id: 17, name: "Yousif Farhad", createdAt: "2025-01-05" },
27    { id: 18, name: "Zahra Kamal", createdAt: "2026-02-14" },
28    { id: 19, name: "Bakhtiar Shwan", createdAt: "2025-03-21" },
29    { id: 20, name: "Diyar Latif", createdAt: "2026-04-13" },
30    { id: 21, name: "Azad Ahmed", createdAt: "2023-01-01" },
31    { id: 22, name: "Bahman Karim", createdAt: "2024-02-05" },
32    { id: 23, name: "Chnar Zana", createdAt: "2022-03-08" },
33    { id: 24, name: "Dilshad Hassan", createdAt: "2024-04-11" },
34    { id: 25, name: "Evin Rojan", createdAt: "2023-05-06" },
35    { id: 26, name: "Farhad Hama", createdAt: "2025-06-08" },
36    { id: 27, name: "Goran Rebwar", createdAt: "2027-07-10" },
37    { id: 28, name: "Havin Ahmed", createdAt: "2025-08-09" },
38    { id: 29, name: "Jiyan Qasim", createdAt: "2025-06-08" },
39    { id: 30, name: "Kawa Sherwan", createdAt: "2027-07-10" },
40    { id: 31, name: "Lawan Barzan", createdAt: "2025-08-09" },
41    { id: 32, name: "Nazdar Rizgar", createdAt: "2025-08-09" },
42    { id: 33, name: "Rojan Shamal", createdAt: "2023-09-12" },
43    { id: 34, name: "Sherin Jalal", createdAt: "2024-10-23" },
44    { id: 35, name: "Tahir Walat", createdAt: "2022-11-29" },
45    { id: 36, name: "Viyan Bave", createdAt: "2023-12-17" },
46    { id: 37, name: "Yousif Farhad", createdAt: "2025-01-05" },
47    { id: 38, name: "Zahra Kamal", createdAt: "2026-02-14" },
48    { id: 39, name: "Bakhtiar Shwan", createdAt: "2025-03-21" },
49    { id: 40, name: "Diyar Latif", createdAt: "2026-04-13" },
50];
51
52export const fetchEntity = async ({ queryKey }: { queryKey: any }) => {
53    const [, pageIndex, pageSize, search, ,] = queryKey;
54
55    const filteredEntities = search
56        ? massDataEntities.filter(entity =>
57            entity.name.toLowerCase().includes(search.toLowerCase())
58        )
59        : massDataEntities;
60
61    const startIndex = (pageIndex - 1) * pageSize;
62    const endIndex = startIndex + pageSize;
63
64    const paginatedEntities = filteredEntities.slice(startIndex, endIndex);
65
66    return {
67        entities: paginatedEntities,
68        pageCount: Math.ceil(filteredEntities.length / pageSize),
69    };
70}
71
72export const fetchEntityLoading = async (): FetchEntityReturn<Entity> => {
73    return new Promise((resolve) => {
74        setTimeout(() => {
75            resolve({
76                entities: [{ id: 40, name: "Diyar Latif", createdAt: "2026-04-13" }],
77                pageCount: 1,
78            });
79        }, 24 * 60 * 60 * 1000);
80    });
81}