mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-29 22:18:12 +00:00
booking operations and trains scheduling also allocations
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
import { cargoService, type Cargo } from "@/services/cargoService";
|
||||
import { containerService, type Container } from "@/services/containerService";
|
||||
import { locomotivesService, type Locomotive } from "@/services/locomotives.service";
|
||||
import { trainService, type Train } from "@/services/trains.service";
|
||||
import { wagonService, type Wagon } from "@/services/wagon.service";
|
||||
import type { FleetResourceSlug } from "@/pages/fleet/config/resources";
|
||||
|
||||
export type FleetRecord = Locomotive | Train | Wagon | Container | Cargo;
|
||||
|
||||
const listHandlers: Record<FleetResourceSlug, () => Promise<FleetRecord[]>> = {
|
||||
locomotives: () => locomotivesService.getAll().then((r) => r.data),
|
||||
trains: () => trainService.getAll().then((r) => r.data),
|
||||
wagons: () => wagonService.getAll().then((r) => r.data),
|
||||
containers: () => containerService.getAll().then((r) => r.data),
|
||||
cargoes: () => cargoService.getAll().then((r) => r.data),
|
||||
};
|
||||
|
||||
const createHandlers: Record<FleetResourceSlug, (data: Record<string, unknown>) => Promise<unknown>> = {
|
||||
locomotives: (data) => locomotivesService.create(data),
|
||||
trains: (data) => trainService.create(data),
|
||||
wagons: (data) => wagonService.create(data),
|
||||
containers: (data) => containerService.create(data),
|
||||
cargoes: (data) => cargoService.create(data),
|
||||
};
|
||||
|
||||
const updateHandlers: Record<
|
||||
FleetResourceSlug,
|
||||
(id: string, data: Record<string, unknown>) => Promise<unknown>
|
||||
> = {
|
||||
locomotives: (id, data) => locomotivesService.update(id, data),
|
||||
trains: (id, data) => trainService.update(id, data),
|
||||
wagons: (id, data) => wagonService.update(id, data),
|
||||
containers: (id, data) => containerService.update(id, data),
|
||||
cargoes: (id, data) => cargoService.update(id, data),
|
||||
};
|
||||
|
||||
const removeHandlers: Record<FleetResourceSlug, (id: string) => Promise<unknown>> = {
|
||||
locomotives: (id) => locomotivesService.decommission(id),
|
||||
trains: (id) => trainService.delete(id),
|
||||
wagons: (id) => wagonService.delete(id),
|
||||
containers: (id) => containerService.delete(id),
|
||||
cargoes: (id) => cargoService.delete(id),
|
||||
};
|
||||
|
||||
export const fleetService = {
|
||||
list: (slug: FleetResourceSlug) => listHandlers[slug](),
|
||||
create: (slug: FleetResourceSlug, data: Record<string, unknown>) => createHandlers[slug](data),
|
||||
update: (slug: FleetResourceSlug, id: string, data: Record<string, unknown>) =>
|
||||
updateHandlers[slug](id, data),
|
||||
remove: (slug: FleetResourceSlug, id: string) => removeHandlers[slug](id),
|
||||
};
|
||||
Reference in New Issue
Block a user