// useDocuments.ts
import { invoiceDocumentsOptions } from "./invoice-documents/invoiceDocumentsOptions";
import { baseDocumentsOptions } from "./base-documents/baseDocumentsOptions";
import type { UseQueryResult } from "@tanstack/react-query";
import type {
InvoiceDocumentsTable_DocumentFragment,
DocumentsTable_DocumentFragment,
} from "@/gql/graphql";
type DocumentQueryParams =
| {
type: "invoiceDocuments";
documentTypeId: string;
}
| {
type: "baseDocuments";
documentTypeId: string;
};
type InvoiceDocumentsResult = {
totalPages: number;
documents: [InvoiceDocumentsTable_DocumentFragment];
};
type BaseDocumentsResult = {
totalPages: number;
documents: [DocumentsTable_DocumentFragment];
};
export function useDocuments({
type,
documentTypeId,
}: DocumentQueryParams): UseQueryResult<
InvoiceDocumentsResult | BaseDocumentsResult,
Error
> {
const variables = { documentTypeId }
if (type === "baseDocuments") {
const queryOptions = baseDocumentsOptions(variables);
return useQuery(queryOptions) as UseQueryResult<BaseDocumentsResult, Error>;
}
if (type === "invoiceDocuments") {
const queryOptions = invoiceDocumentsOptions(variables);
return useQuery(queryOptions) as UseQueryResult<
InvoiceDocumentsResult,
Error
>;
}
const queryOptions = baseDocumentsOptions(variables);
return useQuery(queryOptions) as UseQueryResult<BaseDocumentsResult, Error>;
}
// useDocuments.ts
import { invoiceDocumentsOptions } from "./invoice-documents/invoiceDocumentsOptions";
import { baseDocumentsOptions } from "./base-documents/baseDocumentsOptions";
import type { UseQueryResult } from "@tanstack/react-query";
import type {
InvoiceDocumentsTable_DocumentFragment,
DocumentsTable_DocumentFragment,
} from "@/gql/graphql";
type DocumentQueryParams =
| {
type: "invoiceDocuments";
documentTypeId: string;
}
| {
type: "baseDocuments";
documentTypeId: string;
};
type InvoiceDocumentsResult = {
totalPages: number;
documents: [InvoiceDocumentsTable_DocumentFragment];
};
type BaseDocumentsResult = {
totalPages: number;
documents: [DocumentsTable_DocumentFragment];
};
export function useDocuments({
type,
documentTypeId,
}: DocumentQueryParams): UseQueryResult<
InvoiceDocumentsResult | BaseDocumentsResult,
Error
> {
const variables = { documentTypeId }
if (type === "baseDocuments") {
const queryOptions = baseDocumentsOptions(variables);
return useQuery(queryOptions) as UseQueryResult<BaseDocumentsResult, Error>;
}
if (type === "invoiceDocuments") {
const queryOptions = invoiceDocumentsOptions(variables);
return useQuery(queryOptions) as UseQueryResult<
InvoiceDocumentsResult,
Error
>;
}
const queryOptions = baseDocumentsOptions(variables);
return useQuery(queryOptions) as UseQueryResult<BaseDocumentsResult, Error>;
}