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