supabase-cache-helpers icon indicating copy to clipboard operation
supabase-cache-helpers copied to clipboard

Feat: Add transformer option to use-query

Open toki-developer opened this issue 5 months ago • 11 comments

Issue

https://github.com/psteinroe/supabase-cache-helpers/issues/245

Overview

I've added a transformer option to use-query. This allows you to transform data, such as converting from snake_case to camelCase.

Capture

Without Transformer With Transformer Transformer Arguments
スクリーンショット 2024-09-12 22 17 33 スクリーンショット 2024-09-12 22 17 42 スクリーンショット 2024-09-12 22 17 49
CODE: snakeToCamel function
import camelcaseKeys from "camelcase-keys";

export type SnakeToCamelCase<S extends string> =
  S extends `${infer T}_${infer U}`
    ? `${Lowercase<T>}${Capitalize<SnakeToCamelCase<U>>}`
    : S;
export type SnakeToCamelCaseNested<T> = T extends (infer U)[]
  ? SnakeToCamelCaseNested<U>[]
  : T extends object
    ? {
        [K in keyof T as SnakeToCamelCase<K & string>]: SnakeToCamelCaseNested<
          T[K]
        >;
      }
    : T;

export const snakeToCamel = <
  T extends Record<string, unknown> | readonly Record<string, unknown>[],
>(
  request: T
) => camelcaseKeys(request) as unknown as SnakeToCamelCaseNested<T>;
Without Transformer With Transformer
スクリーンショット 2024-09-12 22 35 01 スクリーンショット 2024-09-12 22 35 12

Additional Notes

I'm a junior engineer. This is my first contribution to an open-source project. I'm eager to receive feedback on my work. I'm very interested in Supabase and would love to work on other issues if there are any.

toki-developer avatar Sep 12 '24 13:09 toki-developer