interface/src/api/users.ts

118 lines
3.2 KiB
TypeScript

import { $axios } from '@/plugins/axios';
import { AxiosResponse } from 'axios';
import { OrderBy } from '@/types/order-by';
import { camelToSnake } from '@/mixins/case-converter';
import { setURIParams } from '@/mixins/query-params';
import { NewCredentials } from '@/types/new-credentials';
export default {
getAll: async (
count: number = 10,
page: number = 1,
orderBy: OrderBy,
search: string,
groupId: string,
): Promise<[AxiosResponse?, string?]> => {
try {
const sp = new URLSearchParams([
...Object.entries(orderBy),
['count', String(count)],
['page', String(page)],
['input', search],
['group_id', groupId],
]);
setURIParams(sp);
const params: string = camelToSnake(sp.toString());
const data = await $axios.get(`v1/users?${params}`);
return [data, undefined];
} catch (e: any) {
return [undefined, e?.response?.data?.error ?? e.message];
}
},
create: async (
email: string,
realName: string,
groupID: number,
): Promise<[AxiosResponse?, string?]> => {
try {
const data = await $axios.post('v1/users', {
email,
realName,
groupID,
});
return [data, undefined];
} catch (e: any) {
return [undefined, e?.response?.data?.error ?? e.message];
}
},
update: async (
ID: number,
email: string,
realName: string,
groupID: number,
): Promise<[AxiosResponse?, string?]> => {
try {
const data = await $axios.patch('v1/users', {
ID,
email,
realName,
groupID,
});
return [data, undefined];
} catch (e: any) {
return [undefined, e?.response?.data?.error ?? e.message];
}
},
delete: async (ID: number): Promise<[AxiosResponse?, string?]> => {
try {
const data = await $axios.delete(`v1/users/${ID}`);
return [data, undefined];
} catch (e: any) {
return [undefined, e?.response?.data?.error ?? e.message];
}
},
deleteMany: async (IDs: number[]): Promise<[AxiosResponse?, string?]> => {
try {
const data = await $axios.delete('v1/users', {
data: {
array: IDs,
},
});
return [data, undefined];
} catch (e: any) {
return [undefined, e?.response?.data?.error ?? e.message];
}
},
blockMany: async (IDs: number[]): Promise<[AxiosResponse?, string?]> => {
try {
const data = await $axios.patch('v1/users/block', {
array: IDs,
});
return [data, undefined];
} catch (e: any) {
return [undefined, e?.response?.data?.error ?? e.message];
}
},
unblockMany: async (IDs: number[]): Promise<[AxiosResponse?, string?]> => {
try {
const data = await $axios.patch('v1/users/unblock', {
array: IDs,
});
return [data, undefined];
} catch (e: any) {
return [undefined, e?.response?.data?.error ?? e.message];
}
},
resetPassword: async (
ID: number,
): Promise<[AxiosResponse<NewCredentials>?, string?]> => {
try {
const data = await $axios.patch(`v1/users/password/${ID}`);
return [data, undefined];
} catch (e: any) {
return [undefined, e?.response?.data?.error ?? e.message];
}
},
};