Skip to content
Snippets Groups Projects
Commit e950b5a4 authored by Konrad Mohrfeldt's avatar Konrad Mohrfeldt :koala:
Browse files

feat: add partialUpdate method to APIUpdate mixin

parent ff9d890b
No related branches found
No related tags found
No related merge requests found
...@@ -268,26 +268,31 @@ export function APIRetrieve<T extends APIObject>(api: ExtendableAPI<T>) { ...@@ -268,26 +268,31 @@ export function APIRetrieve<T extends APIObject>(api: ExtendableAPI<T>) {
return { retrieve, retrieveMultiple } return { retrieve, retrieveMultiple }
} }
export function APIUpdate<T extends APIObject, TData = Partial<T>>(api: ExtendableAPI<T>) { export function APIUpdate<
async function update( T extends APIObject,
id: T['id'], TUpdateData = Partial<T>,
data: TData | FormData, TPartialUpdateData = Partial<TUpdateData>,
options: BaseRequestOptions = {}, >(api: ExtendableAPI<T>) {
): Promise<T> { function updateWith<TData>(method: 'PUT' | 'PATCH') {
const res = await fetch( return async function (id: T['id'], data: FormData | TData, options: BaseRequestOptions = {}) {
api.createRequest(api.endpoint(id.toString()), options.requestInit, { const res = await fetch(
method: 'PUT', api.createRequest(api.endpoint(id.toString()), options.requestInit, {
headers: data instanceof FormData ? undefined : { 'Content-Type': 'application/json' }, method,
body: data instanceof FormData ? data : JSON.stringify(data), headers: data instanceof FormData ? undefined : { 'Content-Type': 'application/json' },
}), body: data instanceof FormData ? data : JSON.stringify(data),
) }),
await api.maybeRaiseResponse(res) )
const obj: T = await res.json() await api.maybeRaiseResponse(res)
api.itemMap.value.set(obj.id, obj) const obj: T = await res.json()
return obj api.itemMap.value.set(obj.id, obj)
return obj
}
} }
return { update } const update = updateWith<TUpdateData>('PUT')
const partialUpdate = updateWith<TPartialUpdateData>('PATCH')
return { update, partialUpdate }
} }
export function APICreate<T extends APIObject, TData = Partial<Omit<T, 'id'>>>( export function APICreate<T extends APIObject, TData = Partial<Omit<T, 'id'>>>(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment