chain entity
This commit is contained in:
parent
f4405e14de
commit
7f281cd82b
14
src/entities/chain/api/list.ts
Normal file
14
src/entities/chain/api/list.ts
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
import { z } from "zod";
|
||||
import { chainSchema } from "../schema";
|
||||
import { getAxios } from "@/shared/lib/getAxios";
|
||||
|
||||
export async function getChainList() {
|
||||
const axios = await getAxios();
|
||||
|
||||
try {
|
||||
const response = await axios.get("/chain/list");
|
||||
return z.array(chainSchema).parse(response.data);
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
0
src/entities/chain/index.ts
Normal file
0
src/entities/chain/index.ts
Normal file
13
src/entities/chain/lib.ts
Normal file
13
src/entities/chain/lib.ts
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
import { useChainState } from "./model";
|
||||
import { getChainList } from "./api/list";
|
||||
import { redirect } from "@tanstack/react-router";
|
||||
|
||||
export async function requireChains() {
|
||||
const chainState = useChainState.getState();
|
||||
if (chainState.chains) return;
|
||||
|
||||
const chains = await getChainList();
|
||||
if (chains === null) throw redirect({ to: "/" });
|
||||
|
||||
chainState.setChains(chains);
|
||||
}
|
||||
11
src/entities/chain/model.ts
Normal file
11
src/entities/chain/model.ts
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
import { create } from "zustand";
|
||||
import type { Chain } from "./schema";
|
||||
|
||||
interface ChainState {
|
||||
chains?: Chain[];
|
||||
setChains: (chains: Chain[]) => void;
|
||||
}
|
||||
|
||||
export const useChainState = create<ChainState>((set) => ({
|
||||
setChains: (chains) => set({ chains }),
|
||||
}));
|
||||
11
src/entities/chain/schema.ts
Normal file
11
src/entities/chain/schema.ts
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
import { z } from "zod";
|
||||
import { actionSchema } from "../action/schema";
|
||||
|
||||
export const chainSchema = z.object({
|
||||
_id: z.string().uuid(),
|
||||
name: z.string().nullable(),
|
||||
actions: z.array(actionSchema),
|
||||
lastModified: z.string(),
|
||||
});
|
||||
|
||||
export type Chain = z.infer<typeof chainSchema>;
|
||||
Loading…
Reference in New Issue
Block a user