feat: refactor schema builder and resolver builder (#2215)
* feat: wip refactor schema builder * feat: wip store types and first queries generation * feat: refactor schema-builder and resolver-builder * fix: clean & small type fix * fix: avoid breaking change * fix: remove util from pg-graphql classes * fix: required default fields * Refactor frontend accordingly --------- Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
@ -1,9 +1,11 @@
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
import { FieldMetadataTargetColumnMap } from 'src/metadata/field-metadata/interfaces/field-metadata-target-column-map.interface';
|
||||
|
||||
import { uuidToBase36 } from 'src/metadata/data-source/data-source.util';
|
||||
import {
|
||||
FieldMetadata,
|
||||
FieldMetadataTargetColumnMap,
|
||||
FieldMetadataType,
|
||||
} from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { TenantMigrationColumnAction } from 'src/metadata/tenant-migration/tenant-migration.entity';
|
||||
|
||||
@ -25,24 +27,24 @@ export function generateColumnName(name: string): string {
|
||||
* @returns FieldMetadataTargetColumnMap
|
||||
*/
|
||||
export function generateTargetColumnMap(
|
||||
type: string,
|
||||
type: FieldMetadataType,
|
||||
): FieldMetadataTargetColumnMap {
|
||||
switch (type) {
|
||||
case 'text':
|
||||
case 'phone':
|
||||
case 'email':
|
||||
case 'number':
|
||||
case 'boolean':
|
||||
case 'date':
|
||||
case FieldMetadataType.TEXT:
|
||||
case FieldMetadataType.PHONE:
|
||||
case FieldMetadataType.EMAIL:
|
||||
case FieldMetadataType.NUMBER:
|
||||
case FieldMetadataType.BOOLEAN:
|
||||
case FieldMetadataType.DATE:
|
||||
return {
|
||||
value: `column_${uuidToBase36(v4())}`,
|
||||
};
|
||||
case 'url':
|
||||
case FieldMetadataType.URL:
|
||||
return {
|
||||
text: `column_${uuidToBase36(v4())}`,
|
||||
link: `column_${uuidToBase36(v4())}`,
|
||||
};
|
||||
case 'money':
|
||||
case FieldMetadataType.MONEY:
|
||||
return {
|
||||
amount: `column_${uuidToBase36(v4())}`,
|
||||
currency: `column_${uuidToBase36(v4())}`,
|
||||
@ -56,7 +58,7 @@ export function convertFieldMetadataToColumnActions(
|
||||
fieldMetadata: FieldMetadata,
|
||||
): TenantMigrationColumnAction[] {
|
||||
switch (fieldMetadata.type) {
|
||||
case 'text':
|
||||
case FieldMetadataType.TEXT:
|
||||
return [
|
||||
{
|
||||
name: fieldMetadata.targetColumnMap.value,
|
||||
@ -64,8 +66,8 @@ export function convertFieldMetadataToColumnActions(
|
||||
type: 'text',
|
||||
},
|
||||
];
|
||||
case 'phone':
|
||||
case 'email':
|
||||
case FieldMetadataType.PHONE:
|
||||
case FieldMetadataType.EMAIL:
|
||||
return [
|
||||
{
|
||||
name: fieldMetadata.targetColumnMap.value,
|
||||
@ -73,7 +75,7 @@ export function convertFieldMetadataToColumnActions(
|
||||
type: 'varchar',
|
||||
},
|
||||
];
|
||||
case 'number':
|
||||
case FieldMetadataType.NUMBER:
|
||||
return [
|
||||
{
|
||||
name: fieldMetadata.targetColumnMap.value,
|
||||
@ -81,7 +83,7 @@ export function convertFieldMetadataToColumnActions(
|
||||
type: 'integer',
|
||||
},
|
||||
];
|
||||
case 'boolean':
|
||||
case FieldMetadataType.BOOLEAN:
|
||||
return [
|
||||
{
|
||||
name: fieldMetadata.targetColumnMap.value,
|
||||
@ -89,7 +91,7 @@ export function convertFieldMetadataToColumnActions(
|
||||
type: 'boolean',
|
||||
},
|
||||
];
|
||||
case 'date':
|
||||
case FieldMetadataType.DATE:
|
||||
return [
|
||||
{
|
||||
name: fieldMetadata.targetColumnMap.value,
|
||||
@ -97,7 +99,7 @@ export function convertFieldMetadataToColumnActions(
|
||||
type: 'timestamp',
|
||||
},
|
||||
];
|
||||
case 'url':
|
||||
case FieldMetadataType.URL:
|
||||
return [
|
||||
{
|
||||
name: fieldMetadata.targetColumnMap.text,
|
||||
@ -110,7 +112,7 @@ export function convertFieldMetadataToColumnActions(
|
||||
type: 'varchar',
|
||||
},
|
||||
];
|
||||
case 'money':
|
||||
case FieldMetadataType.MONEY:
|
||||
return [
|
||||
{
|
||||
name: fieldMetadata.targetColumnMap.amount,
|
||||
@ -127,24 +129,3 @@ export function convertFieldMetadataToColumnActions(
|
||||
throw new Error(`Unknown type ${fieldMetadata.type}`);
|
||||
}
|
||||
}
|
||||
|
||||
// Deprecated with target_column_name deprecation
|
||||
export function convertMetadataTypeToColumnType(type: string) {
|
||||
switch (type) {
|
||||
case 'text':
|
||||
case 'url':
|
||||
case 'phone':
|
||||
case 'email':
|
||||
return 'text';
|
||||
case 'number':
|
||||
return 'int';
|
||||
case 'boolean':
|
||||
return 'boolean';
|
||||
case 'date':
|
||||
return 'timestamp';
|
||||
case 'money':
|
||||
return 'integer';
|
||||
default:
|
||||
throw new Error('Invalid type');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user