Commit d3384dc6 authored by Phạm Quang Bảo's avatar Phạm Quang Bảo

[tag]0.1-vcci

parents 8d2a2451 655ba51d
Pipeline #53131 passed with stages
in 4 minutes and 49 seconds
...@@ -3,11 +3,7 @@ import { AxiosError, isAxiosError } from 'axios' ...@@ -3,11 +3,7 @@ import { AxiosError, isAxiosError } from 'axios'
import { QueryClient } from '@tanstack/react-query' import { QueryClient } from '@tanstack/react-query'
// App // App
// import router from '@/router'
import { handleAdminUnauthorized } from '@/lib/auth/admin-auth'
// import useProfileStore from '@stores/profile'
import { QueryData } from '@/lib/types/base-api' import { QueryData } from '@/lib/types/base-api'
// import { BASE_PATHS } from '@/constants/path'
// Constants // Constants
const RETRY_COUNT = 3 const RETRY_COUNT = 3
...@@ -25,35 +21,22 @@ const handleCheckBaseRetryLogical = (failureCount: number, error: Error) => { ...@@ -25,35 +21,22 @@ const handleCheckBaseRetryLogical = (failureCount: number, error: Error) => {
return false return false
} }
// Expired token error // Expired token error — let the interceptor handle refresh, don't retry here
if (error.response?.status === EXPIRED_TOKEN_ERROR) { if (error.response?.status === EXPIRED_TOKEN_ERROR) {
if (typeof window !== "undefined" && window.location.pathname.startsWith("/admin")) { return false
handleUnAuthorizationError();
}
return false;
} }
// Denied permission error // Denied permission error
if (error.response?.status === DENIED_PERMISSION_ERROR) { if (error.response?.status === DENIED_PERMISSION_ERROR) {
// router.navigate('/') if (typeof window !== "undefined" && window.location.pathname.startsWith("/admin")) {
window.location.href = process ? '/' : '/admin' window.location.href = '/admin'
}
return false return false
} }
return true return true
} }
// Handle un authorization error
const handleUnAuthorizationError = () => {
void handleAdminUnauthorized()
// useProfileStore.getState().resetStore()
// const languageAwarePath = addLanguageToPath({
// path: BASE_PATHS.authSignIn
// })
// router.navigate('')
}
// Handle delay value // Handle delay value
const handleDelayRetry = (failureCount: number) => failureCount * 1000 + Math.random() * 1000 const handleDelayRetry = (failureCount: number) => failureCount * 1000 + Math.random() * 1000
......
import Axios, { AxiosError, AxiosRequestConfig } from "axios"; import Axios, { AxiosError, AxiosRequestConfig } from "axios";
import links from "@/links"; import links from "@/links";
const AXIOS_INSTANCE = Axios.create({ const instance = Axios.create({
baseURL: links.externalApiOrigin, baseURL: links.externalApiOrigin,
withCredentials: false, withCredentials: false,
}); });
type CustomClientPromise<T> = Promise<T> & { export async function useCustomClient<T>(
cancel?: () => void;
};
const useCustomClient = <T>(
config: AxiosRequestConfig, config: AxiosRequestConfig,
options?: AxiosRequestConfig, options?: AxiosRequestConfig,
): CustomClientPromise<T> => { ): Promise<T> {
const source = Axios.CancelToken.source(); const response = await instance({ ...config, ...options });
return response.data as T;
const promise = AXIOS_INSTANCE({ ...config, ...options, cancelToken: source.token }) }
.then(({ data }) => data as T) as CustomClientPromise<T>;
promise.cancel = () => {
source.cancel("Query was cancelled");
};
return promise;
};
export { useCustomClient };
export type ErrorType<Error> = AxiosError<Error>; export type ErrorType<Error> = AxiosError<Error>;
export type BodyType<BodyData> = BodyData; export type BodyType<BodyData> = BodyData;
...@@ -34,6 +34,7 @@ import type { ...@@ -34,6 +34,7 @@ import type {
DeleteApiV10CategoryId200, DeleteApiV10CategoryId200,
GetApiV10CategoryId200, GetApiV10CategoryId200,
GetApiV10CategoryParams, GetApiV10CategoryParams,
GetApiV10CategoryTree200,
PostApiV10Category200, PostApiV10Category200,
PutApiV10CategoryId200, PutApiV10CategoryId200,
ResponseGetAllData ResponseGetAllData
...@@ -629,4 +630,197 @@ export const usePostApiV10Category = <TError = ErrorType<unknown>, ...@@ -629,4 +630,197 @@ export const usePostApiV10Category = <TError = ErrorType<unknown>,
return useMutation(mutationOptions, queryClient); return useMutation(mutationOptions, queryClient);
} }
/**
* Retrieve hierarchical category tree with level field computed by backend. Each node includes children sorted by sort_order then name.
* @summary Get category tree
*/
export const getApiV10CategoryTree = (
options?: SecondParameter<typeof useCustomClient>,signal?: AbortSignal
) => {
return useCustomClient<GetApiV10CategoryTree200>(
{url: `/api/v1.0/category/tree`, method: 'GET', signal
},
options);
}
export const getGetApiV10CategoryTreeInfiniteQueryKey = () => {
return [
'infinite', `/api/v1.0/category/tree`
] as const;
}
export const getGetApiV10CategoryTreeQueryKey = () => {
return [
`/api/v1.0/category/tree`
] as const;
}
export const getGetApiV10CategoryTreeInfiniteQueryOptions = <TData = InfiniteData<Awaited<ReturnType<typeof getApiV10CategoryTree>>>, TError = ErrorType<unknown>>( options?: { query?:Partial<UseInfiniteQueryOptions<Awaited<ReturnType<typeof getApiV10CategoryTree>>, TError, TData>>, request?: SecondParameter<typeof useCustomClient>}
) => {
const {query: queryOptions, request: requestOptions} = options ?? {};
const queryKey = queryOptions?.queryKey ?? getGetApiV10CategoryTreeInfiniteQueryKey();
const queryFn: QueryFunction<Awaited<ReturnType<typeof getApiV10CategoryTree>>> = ({ signal }) => getApiV10CategoryTree(requestOptions, signal);
return { queryKey, queryFn, retry: 3, retryDelay: 1000, ...queryOptions} as UseInfiniteQueryOptions<Awaited<ReturnType<typeof getApiV10CategoryTree>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }
}
export type GetApiV10CategoryTreeInfiniteQueryResult = NonNullable<Awaited<ReturnType<typeof getApiV10CategoryTree>>>
export type GetApiV10CategoryTreeInfiniteQueryError = ErrorType<unknown>
export function useGetApiV10CategoryTreeInfinite<TData = InfiniteData<Awaited<ReturnType<typeof getApiV10CategoryTree>>>, TError = ErrorType<unknown>>(
options: { query:Partial<UseInfiniteQueryOptions<Awaited<ReturnType<typeof getApiV10CategoryTree>>, TError, TData>> & Pick<
DefinedInitialDataOptions<
Awaited<ReturnType<typeof getApiV10CategoryTree>>,
TError,
Awaited<ReturnType<typeof getApiV10CategoryTree>>
> , 'initialData'
>, request?: SecondParameter<typeof useCustomClient>}
, queryClient?: QueryClient
): DefinedUseInfiniteQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }
export function useGetApiV10CategoryTreeInfinite<TData = InfiniteData<Awaited<ReturnType<typeof getApiV10CategoryTree>>>, TError = ErrorType<unknown>>(
options?: { query?:Partial<UseInfiniteQueryOptions<Awaited<ReturnType<typeof getApiV10CategoryTree>>, TError, TData>> & Pick<
UndefinedInitialDataOptions<
Awaited<ReturnType<typeof getApiV10CategoryTree>>,
TError,
Awaited<ReturnType<typeof getApiV10CategoryTree>>
> , 'initialData'
>, request?: SecondParameter<typeof useCustomClient>}
, queryClient?: QueryClient
): UseInfiniteQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }
export function useGetApiV10CategoryTreeInfinite<TData = InfiniteData<Awaited<ReturnType<typeof getApiV10CategoryTree>>>, TError = ErrorType<unknown>>(
options?: { query?:Partial<UseInfiniteQueryOptions<Awaited<ReturnType<typeof getApiV10CategoryTree>>, TError, TData>>, request?: SecondParameter<typeof useCustomClient>}
, queryClient?: QueryClient
): UseInfiniteQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }
/**
* @summary Get category tree
*/
export function useGetApiV10CategoryTreeInfinite<TData = InfiniteData<Awaited<ReturnType<typeof getApiV10CategoryTree>>>, TError = ErrorType<unknown>>(
options?: { query?:Partial<UseInfiniteQueryOptions<Awaited<ReturnType<typeof getApiV10CategoryTree>>, TError, TData>>, request?: SecondParameter<typeof useCustomClient>}
, queryClient?: QueryClient
): UseInfiniteQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {
const queryOptions = getGetApiV10CategoryTreeInfiniteQueryOptions(options)
const query = useInfiniteQuery(queryOptions, queryClient) as UseInfiniteQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };
query.queryKey = queryOptions.queryKey ;
return query;
}
/**
* @summary Get category tree
*/
export const prefetchGetApiV10CategoryTreeInfiniteQuery = async <TData = Awaited<ReturnType<typeof getApiV10CategoryTree>>, TError = ErrorType<unknown>>(
queryClient: QueryClient, options?: { query?:Partial<UseInfiniteQueryOptions<Awaited<ReturnType<typeof getApiV10CategoryTree>>, TError, TData>>, request?: SecondParameter<typeof useCustomClient>}
): Promise<QueryClient> => {
const queryOptions = getGetApiV10CategoryTreeInfiniteQueryOptions(options)
await queryClient.prefetchInfiniteQuery(queryOptions);
return queryClient;
}
export const getGetApiV10CategoryTreeQueryOptions = <TData = Awaited<ReturnType<typeof getApiV10CategoryTree>>, TError = ErrorType<unknown>>( options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof getApiV10CategoryTree>>, TError, TData>>, request?: SecondParameter<typeof useCustomClient>}
) => {
const {query: queryOptions, request: requestOptions} = options ?? {};
const queryKey = queryOptions?.queryKey ?? getGetApiV10CategoryTreeQueryKey();
const queryFn: QueryFunction<Awaited<ReturnType<typeof getApiV10CategoryTree>>> = ({ signal }) => getApiV10CategoryTree(requestOptions, signal);
return { queryKey, queryFn, retry: 3, retryDelay: 1000, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof getApiV10CategoryTree>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }
}
export type GetApiV10CategoryTreeQueryResult = NonNullable<Awaited<ReturnType<typeof getApiV10CategoryTree>>>
export type GetApiV10CategoryTreeQueryError = ErrorType<unknown>
export function useGetApiV10CategoryTree<TData = Awaited<ReturnType<typeof getApiV10CategoryTree>>, TError = ErrorType<unknown>>(
options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof getApiV10CategoryTree>>, TError, TData>> & Pick<
DefinedInitialDataOptions<
Awaited<ReturnType<typeof getApiV10CategoryTree>>,
TError,
Awaited<ReturnType<typeof getApiV10CategoryTree>>
> , 'initialData'
>, request?: SecondParameter<typeof useCustomClient>}
, queryClient?: QueryClient
): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }
export function useGetApiV10CategoryTree<TData = Awaited<ReturnType<typeof getApiV10CategoryTree>>, TError = ErrorType<unknown>>(
options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof getApiV10CategoryTree>>, TError, TData>> & Pick<
UndefinedInitialDataOptions<
Awaited<ReturnType<typeof getApiV10CategoryTree>>,
TError,
Awaited<ReturnType<typeof getApiV10CategoryTree>>
> , 'initialData'
>, request?: SecondParameter<typeof useCustomClient>}
, queryClient?: QueryClient
): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }
export function useGetApiV10CategoryTree<TData = Awaited<ReturnType<typeof getApiV10CategoryTree>>, TError = ErrorType<unknown>>(
options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof getApiV10CategoryTree>>, TError, TData>>, request?: SecondParameter<typeof useCustomClient>}
, queryClient?: QueryClient
): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }
/**
* @summary Get category tree
*/
export function useGetApiV10CategoryTree<TData = Awaited<ReturnType<typeof getApiV10CategoryTree>>, TError = ErrorType<unknown>>(
options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof getApiV10CategoryTree>>, TError, TData>>, request?: SecondParameter<typeof useCustomClient>}
, queryClient?: QueryClient
): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {
const queryOptions = getGetApiV10CategoryTreeQueryOptions(options)
const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };
query.queryKey = queryOptions.queryKey ;
return query;
}
/**
* @summary Get category tree
*/
export const prefetchGetApiV10CategoryTreeQuery = async <TData = Awaited<ReturnType<typeof getApiV10CategoryTree>>, TError = ErrorType<unknown>>(
queryClient: QueryClient, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof getApiV10CategoryTree>>, TError, TData>>, request?: SecondParameter<typeof useCustomClient>}
): Promise<QueryClient> => {
const queryOptions = getGetApiV10CategoryTreeQueryOptions(options)
await queryClient.prefetchQuery(queryOptions);
return queryClient;
}
...@@ -34,6 +34,8 @@ import type { ...@@ -34,6 +34,8 @@ import type {
GetApiV10PostId200, GetApiV10PostId200,
GetApiV10PostIdHistory200, GetApiV10PostIdHistory200,
GetApiV10PostParams, GetApiV10PostParams,
GetApiV10PostStats200,
GetApiV10PostStatsParams,
PostApiV10Post200, PostApiV10Post200,
PostMutate, PostMutate,
PutApiV10PostId200, PutApiV10PostId200,
...@@ -824,4 +826,198 @@ export const usePostApiV10Post = <TError = ErrorType<unknown>, ...@@ -824,4 +826,198 @@ export const usePostApiV10Post = <TError = ErrorType<unknown>,
return useMutation(mutationOptions, queryClient); return useMutation(mutationOptions, queryClient);
} }
/**
* Retrieve aggregate post counts (total, published, featured) matching the given filters in a single request.
* @summary Get post stats
*/
export const getApiV10PostStats = (
params?: GetApiV10PostStatsParams,
options?: SecondParameter<typeof useCustomClient>,signal?: AbortSignal
) => {
return useCustomClient<GetApiV10PostStats200>(
{url: `/api/v1.0/post/stats`, method: 'GET',
params, signal
},
options);
}
export const getGetApiV10PostStatsInfiniteQueryKey = (params?: GetApiV10PostStatsParams,) => {
return [
'infinite', `/api/v1.0/post/stats`, ...(params ? [params]: [])
] as const;
}
export const getGetApiV10PostStatsQueryKey = (params?: GetApiV10PostStatsParams,) => {
return [
`/api/v1.0/post/stats`, ...(params ? [params]: [])
] as const;
}
export const getGetApiV10PostStatsInfiniteQueryOptions = <TData = InfiniteData<Awaited<ReturnType<typeof getApiV10PostStats>>>, TError = ErrorType<unknown>>(params?: GetApiV10PostStatsParams, options?: { query?:Partial<UseInfiniteQueryOptions<Awaited<ReturnType<typeof getApiV10PostStats>>, TError, TData>>, request?: SecondParameter<typeof useCustomClient>}
) => {
const {query: queryOptions, request: requestOptions} = options ?? {};
const queryKey = queryOptions?.queryKey ?? getGetApiV10PostStatsInfiniteQueryKey(params);
const queryFn: QueryFunction<Awaited<ReturnType<typeof getApiV10PostStats>>> = ({ signal }) => getApiV10PostStats(params, requestOptions, signal);
return { queryKey, queryFn, retry: 3, retryDelay: 1000, ...queryOptions} as UseInfiniteQueryOptions<Awaited<ReturnType<typeof getApiV10PostStats>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }
}
export type GetApiV10PostStatsInfiniteQueryResult = NonNullable<Awaited<ReturnType<typeof getApiV10PostStats>>>
export type GetApiV10PostStatsInfiniteQueryError = ErrorType<unknown>
export function useGetApiV10PostStatsInfinite<TData = InfiniteData<Awaited<ReturnType<typeof getApiV10PostStats>>>, TError = ErrorType<unknown>>(
params: undefined | GetApiV10PostStatsParams, options: { query:Partial<UseInfiniteQueryOptions<Awaited<ReturnType<typeof getApiV10PostStats>>, TError, TData>> & Pick<
DefinedInitialDataOptions<
Awaited<ReturnType<typeof getApiV10PostStats>>,
TError,
Awaited<ReturnType<typeof getApiV10PostStats>>
> , 'initialData'
>, request?: SecondParameter<typeof useCustomClient>}
, queryClient?: QueryClient
): DefinedUseInfiniteQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }
export function useGetApiV10PostStatsInfinite<TData = InfiniteData<Awaited<ReturnType<typeof getApiV10PostStats>>>, TError = ErrorType<unknown>>(
params?: GetApiV10PostStatsParams, options?: { query?:Partial<UseInfiniteQueryOptions<Awaited<ReturnType<typeof getApiV10PostStats>>, TError, TData>> & Pick<
UndefinedInitialDataOptions<
Awaited<ReturnType<typeof getApiV10PostStats>>,
TError,
Awaited<ReturnType<typeof getApiV10PostStats>>
> , 'initialData'
>, request?: SecondParameter<typeof useCustomClient>}
, queryClient?: QueryClient
): UseInfiniteQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }
export function useGetApiV10PostStatsInfinite<TData = InfiniteData<Awaited<ReturnType<typeof getApiV10PostStats>>>, TError = ErrorType<unknown>>(
params?: GetApiV10PostStatsParams, options?: { query?:Partial<UseInfiniteQueryOptions<Awaited<ReturnType<typeof getApiV10PostStats>>, TError, TData>>, request?: SecondParameter<typeof useCustomClient>}
, queryClient?: QueryClient
): UseInfiniteQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }
/**
* @summary Get post stats
*/
export function useGetApiV10PostStatsInfinite<TData = InfiniteData<Awaited<ReturnType<typeof getApiV10PostStats>>>, TError = ErrorType<unknown>>(
params?: GetApiV10PostStatsParams, options?: { query?:Partial<UseInfiniteQueryOptions<Awaited<ReturnType<typeof getApiV10PostStats>>, TError, TData>>, request?: SecondParameter<typeof useCustomClient>}
, queryClient?: QueryClient
): UseInfiniteQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {
const queryOptions = getGetApiV10PostStatsInfiniteQueryOptions(params,options)
const query = useInfiniteQuery(queryOptions, queryClient) as UseInfiniteQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };
query.queryKey = queryOptions.queryKey ;
return query;
}
/**
* @summary Get post stats
*/
export const prefetchGetApiV10PostStatsInfiniteQuery = async <TData = Awaited<ReturnType<typeof getApiV10PostStats>>, TError = ErrorType<unknown>>(
queryClient: QueryClient, params?: GetApiV10PostStatsParams, options?: { query?:Partial<UseInfiniteQueryOptions<Awaited<ReturnType<typeof getApiV10PostStats>>, TError, TData>>, request?: SecondParameter<typeof useCustomClient>}
): Promise<QueryClient> => {
const queryOptions = getGetApiV10PostStatsInfiniteQueryOptions(params,options)
await queryClient.prefetchInfiniteQuery(queryOptions);
return queryClient;
}
export const getGetApiV10PostStatsQueryOptions = <TData = Awaited<ReturnType<typeof getApiV10PostStats>>, TError = ErrorType<unknown>>(params?: GetApiV10PostStatsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof getApiV10PostStats>>, TError, TData>>, request?: SecondParameter<typeof useCustomClient>}
) => {
const {query: queryOptions, request: requestOptions} = options ?? {};
const queryKey = queryOptions?.queryKey ?? getGetApiV10PostStatsQueryKey(params);
const queryFn: QueryFunction<Awaited<ReturnType<typeof getApiV10PostStats>>> = ({ signal }) => getApiV10PostStats(params, requestOptions, signal);
return { queryKey, queryFn, retry: 3, retryDelay: 1000, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof getApiV10PostStats>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }
}
export type GetApiV10PostStatsQueryResult = NonNullable<Awaited<ReturnType<typeof getApiV10PostStats>>>
export type GetApiV10PostStatsQueryError = ErrorType<unknown>
export function useGetApiV10PostStats<TData = Awaited<ReturnType<typeof getApiV10PostStats>>, TError = ErrorType<unknown>>(
params: undefined | GetApiV10PostStatsParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof getApiV10PostStats>>, TError, TData>> & Pick<
DefinedInitialDataOptions<
Awaited<ReturnType<typeof getApiV10PostStats>>,
TError,
Awaited<ReturnType<typeof getApiV10PostStats>>
> , 'initialData'
>, request?: SecondParameter<typeof useCustomClient>}
, queryClient?: QueryClient
): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }
export function useGetApiV10PostStats<TData = Awaited<ReturnType<typeof getApiV10PostStats>>, TError = ErrorType<unknown>>(
params?: GetApiV10PostStatsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof getApiV10PostStats>>, TError, TData>> & Pick<
UndefinedInitialDataOptions<
Awaited<ReturnType<typeof getApiV10PostStats>>,
TError,
Awaited<ReturnType<typeof getApiV10PostStats>>
> , 'initialData'
>, request?: SecondParameter<typeof useCustomClient>}
, queryClient?: QueryClient
): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }
export function useGetApiV10PostStats<TData = Awaited<ReturnType<typeof getApiV10PostStats>>, TError = ErrorType<unknown>>(
params?: GetApiV10PostStatsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof getApiV10PostStats>>, TError, TData>>, request?: SecondParameter<typeof useCustomClient>}
, queryClient?: QueryClient
): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }
/**
* @summary Get post stats
*/
export function useGetApiV10PostStats<TData = Awaited<ReturnType<typeof getApiV10PostStats>>, TError = ErrorType<unknown>>(
params?: GetApiV10PostStatsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof getApiV10PostStats>>, TError, TData>>, request?: SecondParameter<typeof useCustomClient>}
, queryClient?: QueryClient
): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {
const queryOptions = getGetApiV10PostStatsQueryOptions(params,options)
const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };
query.queryKey = queryOptions.queryKey ;
return query;
}
/**
* @summary Get post stats
*/
export const prefetchGetApiV10PostStatsQuery = async <TData = Awaited<ReturnType<typeof getApiV10PostStats>>, TError = ErrorType<unknown>>(
queryClient: QueryClient, params?: GetApiV10PostStatsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof getApiV10PostStats>>, TError, TData>>, request?: SecondParameter<typeof useCustomClient>}
): Promise<QueryClient> => {
const queryOptions = getGetApiV10PostStatsQueryOptions(params,options)
await queryClient.prefetchQuery(queryOptions);
return queryClient;
}
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { DeleteAdvertisementId200AllOf } from './deleteAdvertisementId200AllOf';
export type DeleteAdvertisementId200 = ApiResponse & DeleteAdvertisementId200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type DeleteAdvertisementId200AllOf = {
responseData?: boolean;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { DeleteBannerId200AllOf } from './deleteBannerId200AllOf';
export type DeleteBannerId200 = ApiResponse & DeleteBannerId200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type DeleteBannerId200AllOf = {
responseData?: boolean;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { DeleteCategoryId200AllOf } from './deleteCategoryId200AllOf';
export type DeleteCategoryId200 = ApiResponse & DeleteCategoryId200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type DeleteCategoryId200AllOf = {
responseData?: boolean;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { DeleteContactId200AllOf } from './deleteContactId200AllOf';
export type DeleteContactId200 = ApiResponse & DeleteContactId200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type DeleteContactId200AllOf = {
responseData?: boolean;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { DeleteFileId200AllOf } from './deleteFileId200AllOf';
export type DeleteFileId200 = ApiResponse & DeleteFileId200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type DeleteFileId200AllOf = {
responseData?: boolean;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { DeleteLogoId200AllOf } from './deleteLogoId200AllOf';
export type DeleteLogoId200 = ApiResponse & DeleteLogoId200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type DeleteLogoId200AllOf = {
responseData?: boolean;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { DeletePermissionBulk200AllOf } from './deletePermissionBulk200AllOf';
export type DeletePermissionBulk200 = ApiResponse & DeletePermissionBulk200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { DeletePermissionBulk200AllOfResponseData } from './deletePermissionBulk200AllOfResponseData';
export type DeletePermissionBulk200AllOf = {
responseData?: DeletePermissionBulk200AllOfResponseData;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type DeletePermissionBulk200AllOfResponseData = {
deletedCount?: number;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { DeletePositionId200AllOf } from './deletePositionId200AllOf';
export type DeletePositionId200 = ApiResponse & DeletePositionId200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type DeletePositionId200AllOf = {
responseData?: boolean;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type DeletePostCategoryPostIdParams = {
category_id: string;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { DeletePostId200AllOf } from './deletePostId200AllOf';
export type DeletePostId200 = ApiResponse & DeletePostId200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type DeletePostId200AllOf = {
responseData?: boolean;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type DeletePostTagPostIdParams = {
tag_id: string;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { DeleteRoleBulk200AllOf } from './deleteRoleBulk200AllOf';
export type DeleteRoleBulk200 = ApiResponse & DeleteRoleBulk200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { DeleteRoleBulk200AllOfResponseData } from './deleteRoleBulk200AllOfResponseData';
export type DeleteRoleBulk200AllOf = {
responseData?: DeleteRoleBulk200AllOfResponseData;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type DeleteRoleBulk200AllOfResponseData = {
deletedCount?: number;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { DeleteRolePermissionBulk200AllOf } from './deleteRolePermissionBulk200AllOf';
export type DeleteRolePermissionBulk200 = ApiResponse & DeleteRolePermissionBulk200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { DeleteRolePermissionBulk200AllOfResponseData } from './deleteRolePermissionBulk200AllOfResponseData';
export type DeleteRolePermissionBulk200AllOf = {
responseData?: DeleteRolePermissionBulk200AllOfResponseData;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type DeleteRolePermissionBulk200AllOfResponseData = {
deletedCount?: number;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { DeleteRolePermissionRoleRoleId200AllOf } from './deleteRolePermissionRoleRoleId200AllOf';
export type DeleteRolePermissionRoleRoleId200 = ApiResponse & DeleteRolePermissionRoleRoleId200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { DeleteRolePermissionRoleRoleId200AllOfResponseData } from './deleteRolePermissionRoleRoleId200AllOfResponseData';
export type DeleteRolePermissionRoleRoleId200AllOf = {
responseData?: DeleteRolePermissionRoleRoleId200AllOfResponseData;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type DeleteRolePermissionRoleRoleId200AllOfResponseData = {
deletedCount?: number;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { DeleteTermId200AllOf } from './deleteTermId200AllOf';
export type DeleteTermId200 = ApiResponse & DeleteTermId200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type DeleteTermId200AllOf = {
responseData?: boolean;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type DeleteUserIdRoleBody = {
/** Role ID to remove */
role_id?: string;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { DeleteUserRoleId200AllOf } from './deleteUserRoleId200AllOf';
export type DeleteUserRoleId200 = ApiResponse & DeleteUserRoleId200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { DeleteUserRoleId200AllOfResponseData } from './deleteUserRoleId200AllOfResponseData';
export type DeleteUserRoleId200AllOf = {
responseData?: DeleteUserRoleId200AllOfResponseData;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type DeleteUserRoleId200AllOfResponseData = {
id?: string;
deleted?: boolean;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { GetAdvertisementId200AllOf } from './getAdvertisementId200AllOf';
export type GetAdvertisementId200 = ApiResponse & GetAdvertisementId200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { Advertisement } from './advertisement';
export type GetAdvertisementId200AllOf = {
responseData?: Advertisement;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { FiltersParameter } from './filtersParameter';
import type { SortFieldParameter } from './sortFieldParameter';
import type { SortOrderParameter } from './sortOrderParameter';
import type { PageParameter } from './pageParameter';
import type { PageSizeParameter } from './pageSizeParameter';
export type GetAdvertisementParams = {
/**
* filter, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
filters?: FiltersParameter;
/**
* sortField, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortField?: SortFieldParameter;
/**
* sort order, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortOrder?: SortOrderParameter;
/**
* page, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
page?: PageParameter;
/**
* pageSize, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
pageSize?: PageSizeParameter;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { GetAdvertisementPublic200AllOf } from './getAdvertisementPublic200AllOf';
export type GetAdvertisementPublic200 = ApiResponse & GetAdvertisementPublic200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { Advertisement } from './advertisement';
export type GetAdvertisementPublic200AllOf = {
responseData?: Advertisement[];
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { GetAdvertisementPublicType } from './getAdvertisementPublicType';
export type GetAdvertisementPublicParams = {
/**
* Advertisement type (square or horizontal). If omitted, returns all active.
*/
type?: GetAdvertisementPublicType;
/**
* Max number of records to return (default 20)
* @minimum 1
* @maximum 100
*/
limit?: number;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type GetAdvertisementPublicType = typeof GetAdvertisementPublicType[keyof typeof GetAdvertisementPublicType];
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const GetAdvertisementPublicType = {
square: 'square',
horizontal: 'horizontal',
} as const;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* VietProDev CMS Backend API
* Generated API documentation
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { GetApiV10CategoryTree200AllOf } from './getApiV10CategoryTree200AllOf';
export type GetApiV10CategoryTree200 = ApiResponse & GetApiV10CategoryTree200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* VietProDev CMS Backend API
* Generated API documentation
* OpenAPI spec version: 1.0.0
*/
import type { Category } from './category';
export type GetApiV10CategoryTree200AllOf = {
responseData?: Category[];
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* VietProDev CMS Backend API
* Generated API documentation
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { GetApiV10PostStats200AllOf } from './getApiV10PostStats200AllOf';
export type GetApiV10PostStats200 = ApiResponse & GetApiV10PostStats200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* VietProDev CMS Backend API
* Generated API documentation
* OpenAPI spec version: 1.0.0
*/
import type { GetApiV10PostStats200AllOfResponseData } from './getApiV10PostStats200AllOfResponseData';
export type GetApiV10PostStats200AllOf = {
responseData?: GetApiV10PostStats200AllOfResponseData;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* VietProDev CMS Backend API
* Generated API documentation
* OpenAPI spec version: 1.0.0
*/
export type GetApiV10PostStats200AllOfResponseData = {
/** Total posts matching filters */
total?: number;
/** Published posts matching filters (is_hidden == false) */
published?: number;
/** Featured posts matching filters (is_featured == true) */
featured?: number;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* VietProDev CMS Backend API
* Generated API documentation
* OpenAPI spec version: 1.0.0
*/
import type { FiltersParameter } from './filtersParameter';
export type GetApiV10PostStatsParams = {
/**
* filter, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
filters?: FiltersParameter;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { GetAuthMe200AllOf } from './getAuthMe200AllOf';
export type GetAuthMe200 = ApiResponse & GetAuthMe200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { UserMeResponse } from './userMeResponse';
export type GetAuthMe200AllOf = {
responseData?: UserMeResponse;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { GetAuthProfile200Data } from './getAuthProfile200Data';
export type GetAuthProfile200 = {
success?: boolean;
data?: GetAuthProfile200Data;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { GetAuthProfile200DataRole } from './getAuthProfile200DataRole';
export type GetAuthProfile200Data = {
id?: string;
email?: string;
username?: string;
role?: GetAuthProfile200DataRole;
permissions?: string[];
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type GetAuthProfile200DataRole = typeof GetAuthProfile200DataRole[keyof typeof GetAuthProfile200DataRole];
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const GetAuthProfile200DataRole = {
user: 'user',
admin: 'admin',
system_admin: 'system_admin',
} as const;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { GetBannerId200AllOf } from './getBannerId200AllOf';
export type GetBannerId200 = ApiResponse & GetBannerId200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { Banner } from './banner';
export type GetBannerId200AllOf = {
responseData?: Banner;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { FiltersParameter } from './filtersParameter';
import type { SortFieldParameter } from './sortFieldParameter';
import type { SortOrderParameter } from './sortOrderParameter';
import type { PageParameter } from './pageParameter';
import type { PageSizeParameter } from './pageSizeParameter';
export type GetBannerParams = {
/**
* filter, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
filters?: FiltersParameter;
/**
* sortField, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortField?: SortFieldParameter;
/**
* sort order, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortOrder?: SortOrderParameter;
/**
* page, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
page?: PageParameter;
/**
* pageSize, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
pageSize?: PageSizeParameter;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { FiltersParameter } from './filtersParameter';
import type { SortFieldParameter } from './sortFieldParameter';
import type { SortOrderParameter } from './sortOrderParameter';
import type { PageParameter } from './pageParameter';
import type { PageSizeParameter } from './pageSizeParameter';
export type GetBusinessParams = {
/**
* filter, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
filters?: FiltersParameter;
/**
* sortField, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortField?: SortFieldParameter;
/**
* sort order, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortOrder?: SortOrderParameter;
/**
* page, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
page?: PageParameter;
/**
* pageSize, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
pageSize?: PageSizeParameter;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { GetCategoryId200AllOf } from './getCategoryId200AllOf';
export type GetCategoryId200 = ApiResponse & GetCategoryId200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { Category } from './category';
export type GetCategoryId200AllOf = {
responseData?: Category;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { FiltersParameter } from './filtersParameter';
import type { SortFieldParameter } from './sortFieldParameter';
import type { SortOrderParameter } from './sortOrderParameter';
import type { PageParameter } from './pageParameter';
import type { PageSizeParameter } from './pageSizeParameter';
export type GetCategoryParams = {
/**
* filter, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
filters?: FiltersParameter;
/**
* sortField, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortField?: SortFieldParameter;
/**
* sort order, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortOrder?: SortOrderParameter;
/**
* page, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
page?: PageParameter;
/**
* pageSize, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
pageSize?: PageSizeParameter;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { FiltersParameter } from './filtersParameter';
import type { SortFieldParameter } from './sortFieldParameter';
import type { SortOrderParameter } from './sortOrderParameter';
import type { PageParameter } from './pageParameter';
import type { PageSizeParameter } from './pageSizeParameter';
export type GetCategoryTagParams = {
/**
* filter, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
filters?: FiltersParameter;
/**
* sortField, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortField?: SortFieldParameter;
/**
* sort order, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortOrder?: SortOrderParameter;
/**
* page, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
page?: PageParameter;
/**
* pageSize, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
pageSize?: PageSizeParameter;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { GetContactId200AllOf } from './getContactId200AllOf';
export type GetContactId200 = ApiResponse & GetContactId200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { Contact } from './contact';
export type GetContactId200AllOf = {
responseData?: Contact;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { FiltersParameter } from './filtersParameter';
import type { SortFieldParameter } from './sortFieldParameter';
import type { SortOrderParameter } from './sortOrderParameter';
import type { PageParameter } from './pageParameter';
import type { PageSizeParameter } from './pageSizeParameter';
export type GetContactParams = {
/**
* filter, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
filters?: FiltersParameter;
/**
* sortField, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortField?: SortFieldParameter;
/**
* sort order, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortOrder?: SortOrderParameter;
/**
* page, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
page?: PageParameter;
/**
* pageSize, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
pageSize?: PageSizeParameter;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { GetFileId200AllOf } from './getFileId200AllOf';
export type GetFileId200 = ApiResponse & GetFileId200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { File } from './file';
export type GetFileId200AllOf = {
responseData?: File;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { FiltersParameter } from './filtersParameter';
import type { SortFieldParameter } from './sortFieldParameter';
import type { SortOrderParameter } from './sortOrderParameter';
import type { PageParameter } from './pageParameter';
import type { PageSizeParameter } from './pageSizeParameter';
export type GetFileParams = {
/**
* filter, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
filters?: FiltersParameter;
/**
* sortField, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortField?: SortFieldParameter;
/**
* sort order, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortOrder?: SortOrderParameter;
/**
* page, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
page?: PageParameter;
/**
* pageSize, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
pageSize?: PageSizeParameter;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { GetLogoId200AllOf } from './getLogoId200AllOf';
export type GetLogoId200 = ApiResponse & GetLogoId200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { Logo } from './logo';
export type GetLogoId200AllOf = {
responseData?: Logo;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { FiltersParameter } from './filtersParameter';
import type { SortFieldParameter } from './sortFieldParameter';
import type { SortOrderParameter } from './sortOrderParameter';
import type { PageParameter } from './pageParameter';
import type { PageSizeParameter } from './pageSizeParameter';
export type GetLogoParams = {
/**
* filter, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
filters?: FiltersParameter;
/**
* sortField, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortField?: SortFieldParameter;
/**
* sort order, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortOrder?: SortOrderParameter;
/**
* page, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
page?: PageParameter;
/**
* pageSize, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
pageSize?: PageSizeParameter;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { FiltersParameter } from './filtersParameter';
import type { SortFieldParameter } from './sortFieldParameter';
import type { SortOrderParameter } from './sortOrderParameter';
import type { PageParameter } from './pageParameter';
import type { PageSizeParameter } from './pageSizeParameter';
export type GetMemberParams = {
/**
* filter, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
filters?: FiltersParameter;
/**
* sortField, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortField?: SortFieldParameter;
/**
* sort order, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortOrder?: SortOrderParameter;
/**
* page, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
page?: PageParameter;
/**
* pageSize, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
pageSize?: PageSizeParameter;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { FiltersParameter } from './filtersParameter';
import type { SortFieldParameter } from './sortFieldParameter';
import type { SortOrderParameter } from './sortOrderParameter';
import type { PageParameter } from './pageParameter';
import type { PageSizeParameter } from './pageSizeParameter';
export type GetNewsletterSubscriptionParams = {
/**
* filter, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
filters?: FiltersParameter;
/**
* sortField, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortField?: SortFieldParameter;
/**
* sort order, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortOrder?: SortOrderParameter;
/**
* page, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
page?: PageParameter;
/**
* pageSize, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
pageSize?: PageSizeParameter;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type GetPageConfigParams = {
/**
* ID of the page config to retrieve
*/
id?: string;
/**
* Static link of the page config to retrieve
*/
static_link?: string;
/**
* Code of the page config to retrieve
*/
code?: string;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { GetPasswordResetRequestStatus } from './getPasswordResetRequestStatus';
import type { GetPasswordResetRequestSortOrder } from './getPasswordResetRequestSortOrder';
export type GetPasswordResetRequestParams = {
page?: number;
pageSize?: number;
status?: GetPasswordResetRequestStatus;
sortField?: string;
sortOrder?: GetPasswordResetRequestSortOrder;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type GetPasswordResetRequestSortOrder = typeof GetPasswordResetRequestSortOrder[keyof typeof GetPasswordResetRequestSortOrder];
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const GetPasswordResetRequestSortOrder = {
asc: 'asc',
desc: 'desc',
} as const;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type GetPasswordResetRequestStatus = typeof GetPasswordResetRequestStatus[keyof typeof GetPasswordResetRequestStatus];
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const GetPasswordResetRequestStatus = {
PENDING: 'PENDING',
RESOLVED: 'RESOLVED',
REJECTED: 'REJECTED',
all: 'all',
} as const;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { GetPermissionId200AllOf } from './getPermissionId200AllOf';
export type GetPermissionId200 = ApiResponse & GetPermissionId200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { Permission } from './permission';
export type GetPermissionId200AllOf = {
responseData?: Permission;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { FiltersParameter } from './filtersParameter';
import type { SortFieldParameter } from './sortFieldParameter';
import type { SortOrderParameter } from './sortOrderParameter';
import type { PageParameter } from './pageParameter';
import type { PageSizeParameter } from './pageSizeParameter';
export type GetPermissionParams = {
/**
* filter, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
filters?: FiltersParameter;
/**
* sortField, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortField?: SortFieldParameter;
/**
* sort order, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortOrder?: SortOrderParameter;
/**
* page, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
page?: PageParameter;
/**
* pageSize, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
pageSize?: PageSizeParameter;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { GetPositionId200AllOf } from './getPositionId200AllOf';
export type GetPositionId200 = ApiResponse & GetPositionId200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { Position } from './position';
export type GetPositionId200AllOf = {
responseData?: Position;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { FiltersParameter } from './filtersParameter';
import type { SortFieldParameter } from './sortFieldParameter';
import type { SortOrderParameter } from './sortOrderParameter';
import type { PageParameter } from './pageParameter';
import type { PageSizeParameter } from './pageSizeParameter';
export type GetPositionParams = {
/**
* filter, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
filters?: FiltersParameter;
/**
* sortField, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortField?: SortFieldParameter;
/**
* sort order, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortOrder?: SortOrderParameter;
/**
* page, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
page?: PageParameter;
/**
* pageSize, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
pageSize?: PageSizeParameter;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { FiltersParameter } from './filtersParameter';
import type { SortFieldParameter } from './sortFieldParameter';
import type { SortOrderParameter } from './sortOrderParameter';
import type { PageParameter } from './pageParameter';
import type { PageSizeParameter } from './pageSizeParameter';
export type GetPostCategoryParams = {
/**
* filter, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
filters?: FiltersParameter;
/**
* sortField, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortField?: SortFieldParameter;
/**
* sort order, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortOrder?: SortOrderParameter;
/**
* page, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
page?: PageParameter;
/**
* pageSize, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
pageSize?: PageSizeParameter;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { FiltersParameter } from './filtersParameter';
import type { SortFieldParameter } from './sortFieldParameter';
import type { SortOrderParameter } from './sortOrderParameter';
import type { PageParameter } from './pageParameter';
import type { PageSizeParameter } from './pageSizeParameter';
export type GetPostCategoryPostIdParams = {
/**
* filter, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
filters?: FiltersParameter;
/**
* sortField, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortField?: SortFieldParameter;
/**
* sort order, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortOrder?: SortOrderParameter;
/**
* page, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
page?: PageParameter;
/**
* pageSize, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
pageSize?: PageSizeParameter;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { GetPostId200AllOf } from './getPostId200AllOf';
export type GetPostId200 = ApiResponse & GetPostId200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { Post } from './post';
export type GetPostId200AllOf = {
responseData?: Post;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { GetPostIdHistory200AllOf } from './getPostIdHistory200AllOf';
export type GetPostIdHistory200 = ApiResponse & GetPostIdHistory200AllOf;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { GetPostIdHistory200AllOfResponseDataItem } from './getPostIdHistory200AllOfResponseDataItem';
export type GetPostIdHistory200AllOf = {
responseData?: GetPostIdHistory200AllOfResponseDataItem[];
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { GetPostIdHistory200AllOfResponseDataItemAction } from './getPostIdHistory200AllOfResponseDataItemAction';
import type { GetPostIdHistory200AllOfResponseDataItemActor } from './getPostIdHistory200AllOfResponseDataItemActor';
import type { GetPostIdHistory200AllOfResponseDataItemChanges } from './getPostIdHistory200AllOfResponseDataItemChanges';
import type { GetPostIdHistory200AllOfResponseDataItemSnapshot } from './getPostIdHistory200AllOfResponseDataItemSnapshot';
export type GetPostIdHistory200AllOfResponseDataItem = {
id?: string;
post_id?: string;
action?: GetPostIdHistory200AllOfResponseDataItemAction;
actor?: GetPostIdHistory200AllOfResponseDataItemActor;
/**
* { field: { old: x, new: y } }
* @nullable
*/
changes?: GetPostIdHistory200AllOfResponseDataItemChanges;
/** @nullable */
snapshot?: GetPostIdHistory200AllOfResponseDataItemSnapshot;
created_at?: string;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type GetPostIdHistory200AllOfResponseDataItemAction = typeof GetPostIdHistory200AllOfResponseDataItemAction[keyof typeof GetPostIdHistory200AllOfResponseDataItemAction];
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const GetPostIdHistory200AllOfResponseDataItemAction = {
CREATE: 'CREATE',
UPDATE: 'UPDATE',
DELETE: 'DELETE',
} as const;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
export type GetPostIdHistory200AllOfResponseDataItemActor = {
id?: string;
email?: string;
/** @nullable */
username?: string | null;
full_name?: string;
/** @nullable */
avatar_url?: string | null;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
/**
* { field: { old: x, new: y } }
* @nullable
*/
export type GetPostIdHistory200AllOfResponseDataItemChanges = { [key: string]: unknown } | null;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
/**
* @nullable
*/
export type GetPostIdHistory200AllOfResponseDataItemSnapshot = { [key: string]: unknown } | null;
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { FiltersParameter } from './filtersParameter';
import type { SortFieldParameter } from './sortFieldParameter';
import type { SortOrderParameter } from './sortOrderParameter';
import type { PageParameter } from './pageParameter';
import type { PageSizeParameter } from './pageSizeParameter';
export type GetPostParams = {
/**
* filter, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
filters?: FiltersParameter;
/**
* sortField, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortField?: SortFieldParameter;
/**
* sort order, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
*/
sortOrder?: SortOrderParameter;
/**
* page, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
page?: PageParameter;
/**
* pageSize, visit https://www.npmjs.com/package/sequelize-api-paginate for syntax
* @minimum 1
*/
pageSize?: PageSizeParameter;
};
/**
* Generated by orval v7.17.0 🍺
* Do not edit manually.
* Backend Template
* Coded by Meu TEAM
* OpenAPI spec version: 1.0.0
*/
import type { ApiResponse } from './apiResponse';
import type { GetPostStats200AllOf } from './getPostStats200AllOf';
export type GetPostStats200 = ApiResponse & GetPostStats200AllOf;
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment