30 lines
697 B
TypeScript
30 lines
697 B
TypeScript
import type * as schema from "@/server/db/schema";
|
|
import type { BuildQueryResult, DBQueryConfig, ExtractTablesWithRelations } from "drizzle-orm";
|
|
|
|
type Schema = typeof schema;
|
|
type TSchema = ExtractTablesWithRelations<Schema>;
|
|
|
|
/**
|
|
* Infer the relation type of a table.
|
|
*/
|
|
export type IncludeRelation<TableName extends keyof TSchema> = DBQueryConfig<
|
|
"one" | "many",
|
|
boolean,
|
|
TSchema,
|
|
TSchema[TableName]
|
|
>["with"];
|
|
|
|
/**
|
|
* Infer the result type of a query with optional relations.
|
|
*/
|
|
export type InferResultType<
|
|
TableName extends keyof TSchema,
|
|
With extends IncludeRelation<TableName> | undefined = undefined,
|
|
> = BuildQueryResult<
|
|
TSchema,
|
|
TSchema[TableName],
|
|
{
|
|
with: With;
|
|
}
|
|
>;
|