committed by
GitHub
4 changed files with 68 additions and 1 deletions
@ -0,0 +1,25 @@ |
|||||
|
import { create } from "zustand"; |
||||
|
import { ItemCreate, ItemOut, ItemsService } from "../client"; |
||||
|
|
||||
|
interface ItemsStore { |
||||
|
items: ItemOut[]; |
||||
|
getItems: () => Promise<void>; |
||||
|
addItem: (item: ItemCreate) => Promise<void>; |
||||
|
deleteItem: (id: number) => Promise<void>; |
||||
|
} |
||||
|
|
||||
|
export const useItemsStore = create<ItemsStore>((set) => ({ |
||||
|
items: [], |
||||
|
getItems: async () => { |
||||
|
const itemsResponse = await ItemsService.readItems({ skip: 0, limit: 10 }); |
||||
|
set({ items: itemsResponse }); |
||||
|
}, |
||||
|
addItem: async (item: ItemCreate) => { |
||||
|
const itemResponse = await ItemsService.createItem({ requestBody: item}); |
||||
|
set((state) => ({ items: [...state.items, itemResponse] })); |
||||
|
}, |
||||
|
deleteItem: async (id: number) => { |
||||
|
await ItemsService.deleteItem({ id }); |
||||
|
set((state) => ({ items: state.items.filter((item) => item.id !== id) })); |
||||
|
} |
||||
|
})); |
@ -0,0 +1,19 @@ |
|||||
|
import { create } from "zustand"; |
||||
|
import { UserOut, UsersService } from "../client"; |
||||
|
|
||||
|
interface UserStore { |
||||
|
user: UserOut | null; |
||||
|
getUser: () => Promise<void>; |
||||
|
resetUser: () => void; |
||||
|
} |
||||
|
|
||||
|
export const useUserStore = create<UserStore>((set) => ({ |
||||
|
user: null, |
||||
|
getUser: async () => { |
||||
|
const user = await UsersService.readUserMe(); |
||||
|
set({ user }); |
||||
|
}, |
||||
|
resetUser: () => { |
||||
|
set({ user: null }); |
||||
|
} |
||||
|
})); |
@ -0,0 +1,21 @@ |
|||||
|
import { create } from "zustand"; |
||||
|
import { UserCreate, UserOut, UsersService } from "../client"; |
||||
|
|
||||
|
interface UsersStore { |
||||
|
users: UserOut[]; |
||||
|
getUsers: () => Promise<void>; |
||||
|
addUser: (user: UserCreate) => Promise<void>; |
||||
|
} |
||||
|
|
||||
|
export const useUsersStore = create<UsersStore>((set) => ({ |
||||
|
users: [], |
||||
|
getUsers: async () => { |
||||
|
const usersResponse = await UsersService.readUsers({ skip: 0, limit: 10 }); |
||||
|
set({ users: usersResponse }); |
||||
|
}, |
||||
|
addUser: async (user: UserCreate) => { |
||||
|
const userResponse = await UsersService.createUser({ requestBody: user }); |
||||
|
set((state) => ({ users: [...state.users, userResponse] })); |
||||
|
}, |
||||
|
// TODO: Add delete user
|
||||
|
})) |
Loading…
Reference in new issue