add docs settings to admin page

This commit is contained in:
yaschalew
2026-05-29 16:50:55 +03:00
parent 32e552e13b
commit ac35218299
35 changed files with 3653 additions and 3 deletions

View File

@@ -0,0 +1,97 @@
import { api as client } from "../auth/http";
import { unwrap } from "@/utils/endpoint";
import { URL_CONSTANTS } from "@/constants/URLS";
import type { ApiResponse } from "@/types/apiResponse";
import type {
CreateDropdownOptionDto,
CreateDropdownSettingDto,
DropdownOption,
DropdownSetting,
UpdateDropdownOptionDto,
UpdateDropdownSettingDto,
} from "@/types/dropdownSettings";
const BASE = URL_CONSTANTS.DROPDOWN_SETTINGS.BASE;
export const dropdownSettingsService = {
list: async (): Promise<DropdownSetting[]> => {
const response = await client.get<ApiResponse<DropdownSetting[]>>(BASE);
return unwrap(response.data);
},
getById: async (id: string): Promise<DropdownSetting> => {
const response = await client.get<ApiResponse<DropdownSetting>>(
URL_CONSTANTS.DROPDOWN_SETTINGS.BY_ID(id),
);
return unwrap(response.data);
},
getByCode: async (code: string): Promise<DropdownSetting> => {
const response = await client.get<ApiResponse<DropdownSetting>>(
URL_CONSTANTS.DROPDOWN_SETTINGS.BY_CODE(code),
);
return unwrap(response.data);
},
create: async (
payload: CreateDropdownSettingDto,
): Promise<DropdownSetting> => {
const response = await client.post<ApiResponse<DropdownSetting>>(
BASE,
payload,
);
return unwrap(response.data);
},
update: async (
id: string,
payload: UpdateDropdownSettingDto,
): Promise<DropdownSetting> => {
const response = await client.patch<ApiResponse<DropdownSetting>>(
URL_CONSTANTS.DROPDOWN_SETTINGS.BY_ID(id),
payload,
);
return unwrap(response.data);
},
remove: async (id: string): Promise<void> => {
await client.delete(URL_CONSTANTS.DROPDOWN_SETTINGS.BY_ID(id));
},
replaceOptions: async (
id: string,
options: CreateDropdownOptionDto[],
): Promise<DropdownOption[]> => {
const response = await client.put<ApiResponse<DropdownOption[]>>(
URL_CONSTANTS.DROPDOWN_SETTINGS.OPTIONS(id),
options,
);
return unwrap(response.data);
},
addOption: async (
id: string,
payload: CreateDropdownOptionDto,
): Promise<DropdownOption> => {
const response = await client.post<ApiResponse<DropdownOption>>(
URL_CONSTANTS.DROPDOWN_SETTINGS.OPTIONS(id),
payload,
);
return unwrap(response.data);
},
updateOption: async (
optionId: string,
payload: UpdateDropdownOptionDto,
): Promise<DropdownOption> => {
const response = await client.patch<ApiResponse<DropdownOption>>(
URL_CONSTANTS.DROPDOWN_SETTINGS.OPTION_BY_ID(optionId),
payload,
);
return unwrap(response.data);
},
removeOption: async (optionId: string): Promise<void> => {
await client.delete(URL_CONSTANTS.DROPDOWN_SETTINGS.OPTION_BY_ID(optionId));
},
};