118 lines
3.2 KiB
TypeScript
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];
|
|
}
|
|
},
|
|
};
|