feat: add findAll and findUnique resolver for universal objects (#1576)

* wip: refacto and start creating custom resolver

* feat: findMany & findUnique of a custom entity

* feat: wip pagination

* feat: initial metadata migration

* feat: universal findAll with pagination

* fix: clean small stuff in pagination

* fix: test

* fix: miss file

* feat: rename custom into universal

* feat: create metadata schema in default database

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
Jérémy M
2023-09-21 02:24:13 +02:00
committed by GitHub
parent dafe08ef78
commit b1171e22a3
41 changed files with 1043 additions and 29 deletions

View File

@ -0,0 +1,26 @@
import isObject from 'lodash.isobject';
import lodashSnakeCase from 'lodash.snakecase';
import { SnakeCase, SnakeCasedPropertiesDeep } from 'type-fest';
export const snakeCase = <T>(text: T) =>
lodashSnakeCase(text as unknown as string) as SnakeCase<T>;
export const snakeCaseDeep = <T>(value: T): SnakeCasedPropertiesDeep<T> => {
// Check if it's an array
if (Array.isArray(value)) {
return value.map(snakeCaseDeep) as SnakeCasedPropertiesDeep<T>;
}
// Check if it's an object
if (isObject(value)) {
const result: Record<string, any> = {};
for (const key in value) {
result[snakeCase(key)] = snakeCaseDeep(value[key]);
}
return result as SnakeCasedPropertiesDeep<T>;
}
return value as SnakeCasedPropertiesDeep<T>;
};