@fox-hound-tools/refine-library
Version:
Refine sdk library
94 lines (93 loc) • 3.6 kB
TypeScript
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 {};