UNPKG

@fox-hound-tools/refine-library

Version:

Refine sdk library

94 lines (93 loc) 3.6 kB
import { BaseRecord, CreateManyParams, CreateManyResponse, CreateParams, CreateResponse, DataProvider, DeleteManyParams, DeleteManyResponse, DeleteOneParams, DeleteOneResponse, GetListParams, GetListResponse, GetManyParams, GetManyResponse, GetOneParams, GetOneResponse, UpdateManyParams, UpdateManyResponse, UpdateParams, UpdateResponse } from '@refinedev/core'; import type { UnstableGetResult } from '@supabase/postgrest-js'; import { SupabaseClient } from '@supabase/supabase-js'; import { GenericSchema } from '@supabase/supabase-js/dist/module/lib/types'; /** * The provider to use. */ type Provider = 'sdk' | 'supabase'; /** * supabaseのセレクターから取得する型を取得する */ export type TablesSelect<Schema extends GenericSchema, TableName extends keyof Schema['Tables'], Query extends string> = UnstableGetResult<Schema, Schema['Tables'][TableName]['Row'], TableName, Schema['Tables'][TableName] extends { Relationships: infer R; } ? R : never, Query, { PostgrestVersion: '12'; }>; /** * DataProviderで使用するキー */ export type DataProviderKey = Exclude<keyof Required<DataProvider>, 'getApiUrl' | 'custom'>; /** * BffProviderOptions */ export interface BffProviderOptions { /** * The default provider to use. * * @default 'supabase' */ defaultProvider?: Provider; } /** * Override the provider for a resource. */ export type OverrideProvider<TSupabaseClient extends SupabaseClient, TSdkClient> = Record<string, OverrideMethod<TSupabaseClient, TSdkClient> & BeforeParams>; /** * The params change for before execute. */ interface BeforeParams { onBeforeParams?: <T extends Parameters<Required<DataProvider>[DataProviderKey]>[0]>(params: T) => T; } /** * Override the method for a resource. * If the method is not overridden, the default provider will be used. */ export interface OverrideMethod<TSupabaseClient extends SupabaseClient, TSdkClient> { getList?: ((params: { supabase: TSupabaseClient; sdk: TSdkClient; params: GetListParams; }) => Promise<GetListResponse<BaseRecord>>) | Provider; getMany?: ((params: { supabase: TSupabaseClient; sdk: TSdkClient; params: GetManyParams; }) => Promise<GetManyResponse<BaseRecord>>) | Provider; getOne?: ((params: { supabase: TSupabaseClient; sdk: TSdkClient; params: GetOneParams; }) => Promise<GetOneResponse<BaseRecord>>) | Provider; create?: ((params: { supabase: TSupabaseClient; sdk: TSdkClient; params: CreateParams<any>; }) => Promise<CreateResponse<BaseRecord>>) | Provider; createMany?: ((params: { supabase: TSupabaseClient; sdk: TSdkClient; params: CreateManyParams<any>; }) => Promise<CreateManyResponse<BaseRecord>>) | Provider; update?: ((params: { supabase: TSupabaseClient; sdk: TSdkClient; params: UpdateParams<any>; }) => Promise<UpdateResponse<BaseRecord>>) | Provider; updateMany?: ((params: { supabase: TSupabaseClient; sdk: TSdkClient; params: UpdateManyParams<any>; }) => Promise<UpdateManyResponse<BaseRecord>>) | Provider; deleteOne?: ((params: { supabase: TSupabaseClient; sdk: TSdkClient; params: DeleteOneParams<any>; }) => Promise<DeleteOneResponse<BaseRecord>>) | Provider; deleteMany?: ((params: { supabase: TSupabaseClient; sdk: TSdkClient; params: DeleteManyParams<any>; }) => Promise<DeleteManyResponse<BaseRecord>>) | Provider; } export {};