refactor(nvim): streamline Neovim configuration and plugin management
This commit is contained in:
1 parent
06e0bab7dd
commit
bdf8ad1bb0
27 files changed
+1797
-476
No files matched your search
@@ -0,0 +1,58 @@
|
||||
;; typescript
|
||||
/**
|
||||
* {{_camel_case_file_}} API Client
|
||||
* @author {{_author_}}
|
||||
* @created {{_date_}}
|
||||
*/
|
||||
|
||||
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'
|
||||
|
||||
// API Types
|
||||
interface {{_camel_case_file_}}Data {
|
||||
{{_cursor_}}
|
||||
}
|
||||
|
||||
// Query Keys
|
||||
export const {{_file_name_}}Keys = {
|
||||
all: ['{{_file_name_}}'] as const,
|
||||
lists: () => [...{{_file_name_}}Keys.all, 'list'] as const,
|
||||
list: (filters: string) => [...{{_file_name_}}Keys.lists(), { filters }] as const,
|
||||
details: () => [...{{_file_name_}}Keys.all, 'detail'] as const,
|
||||
detail: (id: string) => [...{{_file_name_}}Keys.details(), id] as const,
|
||||
}
|
||||
|
||||
// API Functions
|
||||
async function fetch{{_camel_case_file_}}(id: string): Promise<{{_camel_case_file_}}Data> {
|
||||
const response = await fetch(`/api/{{_file_name_}}/${id}`)
|
||||
if (!response.ok) throw new Error('Failed to fetch {{_file_name_}}')
|
||||
return response.json()
|
||||
}
|
||||
|
||||
async function create{{_camel_case_file_}}(data: Partial<{{_camel_case_file_}}Data>): Promise<{{_camel_case_file_}}Data> {
|
||||
const response = await fetch('/api/{{_file_name_}}', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(data),
|
||||
})
|
||||
if (!response.ok) throw new Error('Failed to create {{_file_name_}}')
|
||||
return response.json()
|
||||
}
|
||||
|
||||
// Hooks
|
||||
export function use{{_camel_case_file_}}(id: string) {
|
||||
return useQuery({
|
||||
queryKey: {{_file_name_}}Keys.detail(id),
|
||||
queryFn: () => fetch{{_camel_case_file_}}(id),
|
||||
})
|
||||
}
|
||||
|
||||
export function useCreate{{_camel_case_file_}}() {
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation({
|
||||
mutationFn: create{{_camel_case_file_}},
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: {{_file_name_}}Keys.lists() })
|
||||
},
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user