@supabase-kit/react
Version:
> Hooks by management data from supabase and fetch data by react.
110 lines (109 loc) • 4.61 kB
TypeScript
export type ValidatedSchema<SchemaKey extends keyof D, D extends DatabaseTemp> = D[SchemaKey] extends {
Tables: infer T;
} ? T extends Record<string, any> ? T : never : D[SchemaKey] extends {
Views: infer V;
} ? V extends Record<string, any> ? V : never : never;
export type TableRow<Schema extends BaseSchema, TableName extends keyof Schema['Tables']> = Schema['Tables'] extends Record<string, {
Row: any;
}> ? TableName extends keyof NonNullable<Schema['Tables']> ? NonNullable<Schema['Tables']>[TableName]['Row'] : never : never;
export type ViewRow<Schema extends BaseSchema, ViewName extends keyof Schema['Views']> = Schema['Views'] extends Record<string, {
Row: any;
}> ? ViewName extends keyof NonNullable<Schema['Views']> ? NonNullable<Schema['Views']>[ViewName]['Row'] : never : never;
export type BaseSchema = {
Tables?: Record<string, {
Row: Record<string, any>;
}>;
Views?: Record<string, {
Row: Record<string, any>;
}>;
};
export type DatabaseTemp = {
__InternalSupabase: {
PostgrestVersion: string;
};
public: BaseSchema;
} & {
[K in string as Exclude<K, keyof {
__InternalSupabase: unknown;
public: unknown;
}>]: BaseSchema;
};
export type OrWhere = string[];
export type EqWhere<T> = Partial<Record<T extends Array<any> ? keyof T[0] : keyof T, string | number | boolean>>;
export type InWhere<T> = Partial<Record<T extends Array<any> ? keyof T[0] : keyof T, (string | number)[]>>;
export type FilterWhere<T> = Record<T extends Array<any> ? keyof T[0] : keyof T, [
operator: `${'' | 'not.'}${FilterOperator}`,
value: string
]>;
export type gtWhere<T> = Partial<Record<T extends Array<any> ? keyof T[0] : keyof T, T[keyof T]>>;
export type isWhere<T> = Partial<Record<T extends Array<any> ? keyof T[0] : keyof T, T[keyof T]>>;
export type matchWhere<T> = Partial<T>;
export type likeWhere<T> = [T extends Array<any> ? keyof T[0] : keyof T, string];
export type containsWhere<T> = Partial<Record<T extends Array<any> ? keyof T[0] : keyof T, string[]>>;
export type rangeWhere<T> = Partial<Record<T extends Array<any> ? keyof T[0] : keyof T, string>>;
export type overlapsWhere<T> = Partial<Record<T extends Array<any> ? keyof T[0] : keyof T, string | string[]>>;
export type textSearchWhereConfig = {
text: string;
options?: {
config?: string;
type?: 'plain' | 'phrase' | 'websearch';
};
};
export type textSearchWhere<T> = Partial<Record<T extends Array<any> ? keyof T[0] : keyof T, textSearchWhereConfig>>;
export type orderWhere<T> = Partial<Record<T extends Array<any> ? keyof T[0] : keyof T, {
ascending?: boolean;
nullsFirst?: boolean;
foreignTable?: string;
referencedTable?: string;
}>>;
export type baseRangeWhere = {
from: number;
to: number;
options?: {
foreignTable?: string;
referencedTable?: string;
};
};
export type FilterOperator = 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'like' | 'ilike' | 'is' | 'in' | 'cs' | 'cd' | 'sl' | 'sr' | 'nxl' | 'nxr' | 'adj' | 'ov' | 'fts' | 'plfts' | 'phfts' | 'wfts';
type PublicSchema<D extends DatabaseTemp> = D[Extract<keyof D, 'public'>] & any;
export type PublicSchemaKeys<D extends DatabaseTemp> = keyof (PublicSchema<D>['Tables'] & PublicSchema<D>['Views']) | {
schema: keyof D;
};
export type TableName<D extends DatabaseTemp, P extends PublicSchemaKeys<D>, T extends P extends {
schema: keyof D;
} ? keyof (D['public']['Tables'] & D['public']['Views']) : never = never> = T;
export type Tables<D extends DatabaseTemp, P extends PublicSchemaKeys<D>, T extends TableName<D, P>> = (D['public']['Tables'] & D['public']['Views'])[T] extends {
Row: infer R;
} ? R : never;
export type SupabaseQueryResult<T> = {
payload: T;
count: number;
};
export type Where<V> = {
eq?: EqWhere<V>;
neq?: EqWhere<V>;
gt?: gtWhere<V>;
gte?: gtWhere<V>;
lt?: gtWhere<V>;
lte?: gtWhere<V>;
is?: isWhere<V>;
in?: InWhere<V>;
or?: OrWhere;
not?: FilterWhere<V>;
filter?: FilterWhere<V>;
match?: matchWhere<V>;
like?: likeWhere<V>;
ilike?: likeWhere<V>;
contains?: containsWhere<V>;
containedBy?: containsWhere<V>;
rangeGt?: rangeWhere<V>;
rangeGte?: rangeWhere<V>;
rangeLt?: rangeWhere<V>;
rangeLte?: rangeWhere<V>;
rangeAdjacent?: rangeWhere<V>;
overlaps?: overlapsWhere<V>;
textSearch?: textSearchWhere<V>;
};
export type WhereKeys = keyof Where<any>;
export type WhereBasicKeys = keyof Omit<Where<any>, 'or' | 'filter' | 'match' | 'textSearch' | 'not'>;
export {};