NAM-APJATEL/src/types/tower.types.ts

50 lines
1.5 KiB
TypeScript

import { ResponseApi } from "./response.types";
import { CacheState, ErrorState, SelectState } from "./store.types";
export interface TowerRepositoryProps {
getAll: () => Promise<TowerDataTable[] | []>;
getTowerById: (id: string) => Promise<Tower>;
createTower: (tower: TowerRequest) => Promise<Pick<ResponseApi<any>, "status">>;
updateTower: (id: string, tower: TowerRequest) => Promise<Pick<ResponseApi<any>, "status">>;
getDeviceSelect: () => Promise<SelectState[] | null>;
}
export interface Tower {
id: string;
tower_code: string;
longitude: string | number;
latitude: string | number;
device_id?: string | number | null
created_at: string;
updated_at: string;
}
export interface TowerRequest extends Omit<Tower, "id" & "created_at" & "updated_at"> {}
/**
* Tower State
* =============
*/
export interface TowerState extends ErrorState, CacheState {
data?: TowerDataTable[];
tower?: Tower | null;
isLoading: boolean;
lastUpdate: number | null;
deviceSelect: SelectState[] | null;
getDeviceSelect: () => Promise<void>;
getAll: () => Promise<void>;
find: (id: string) => Promise<void>;
create: (tower: TowerRequest) => Promise<void>;
update: (id: string, tower: TowerRequest) => Promise<void>;
clearTower: () => void;
}
export interface TowerDataTable extends Pick<Tower, "id" | "tower_code" | "longitude" | "latitude"> {
address: string;
device_code: string;
}
export interface IGetDeviceSelect {
id: string;
device_code: string;
}