Remove singular/plural from field-metadata (#2085)

* Remove singular/plural from field-metadata

* revert removing id from create input

* remove console log

* remove console log

* codegen

* missing files

* fix tests
This commit is contained in:
Weiko
2023-10-17 15:21:58 +02:00
committed by GitHub
parent 0d6386bc8d
commit 1344e78acb
32 changed files with 213 additions and 130 deletions

View File

@ -36,19 +36,19 @@ describe('PGGraphQLQueryBuilder', () => {
beforeEach(() => {
const fields = [
{
nameSingular: 'name',
name: 'name',
targetColumnMap: {
value: 'column_name',
} as FieldMetadataTargetColumnMap,
},
{
nameSingular: 'age',
name: 'age',
targetColumnMap: {
value: 'column_age',
} as FieldMetadataTargetColumnMap,
},
{
nameSingular: 'complexField',
name: 'complexField',
targetColumnMap: {
subField1: 'column_subField1',
subField2: 'column_subField2',

View File

@ -10,21 +10,21 @@ describe('convertArguments', () => {
beforeEach(() => {
fields = [
{
nameSingular: 'firstName',
name: 'firstName',
targetColumnMap: {
value: 'column_1randomFirstNameKey',
} as FieldMetadataTargetColumnMap,
type: 'text',
},
{
nameSingular: 'age',
name: 'age',
targetColumnMap: {
value: 'column_randomAgeKey',
} as FieldMetadataTargetColumnMap,
type: 'text',
},
{
nameSingular: 'website',
name: 'website',
targetColumnMap: {
link: 'column_randomLinkKey',
text: 'column_randomTex7Key',

View File

@ -12,13 +12,13 @@ describe('convertFieldsToGraphQL', () => {
beforeEach(() => {
fields = [
{
nameSingular: 'simpleField',
name: 'simpleField',
targetColumnMap: {
value: 'column_RANDOMSTRING1',
} as FieldMetadataTargetColumnMap,
},
{
nameSingular: 'complexField',
name: 'complexField',
targetColumnMap: {
link: 'column_RANDOMSTRING2',
text: 'column_RANDOMSTRING3',
@ -74,7 +74,7 @@ describe('convertFieldsToGraphQL', () => {
test('should handle empty targetColumnMap gracefully', () => {
const emptyField = {
nameSingular: 'emptyField',
name: 'emptyField',
targetColumnMap: {},
} as FieldMetadata;

View File

@ -11,15 +11,13 @@ describe('getFieldAliases', () => {
// Setup sample field metadata
fields = [
{
nameSingular: 'singleValueField',
namePlural: 'singleValueFields',
name: 'singleValueField',
targetColumnMap: {
value: 'column_singleValue',
} as FieldMetadataTargetColumnMap,
},
{
nameSingular: 'multipleValuesField',
namePlural: 'multipleValuesFields',
name: 'multipleValuesField',
targetColumnMap: {
link: 'column_value1',
text: 'column_value2',
@ -47,8 +45,7 @@ describe('getFieldAliases', () => {
const fieldsWithEmptyMap = [
...fields,
{
nameSingular: 'emptyField',
namePlural: 'emptyFields',
name: 'emptyField',
targetColumnMap: {} as FieldMetadataTargetColumnMap,
},
] as FieldMetadata[];

View File

@ -4,8 +4,7 @@ import { FieldMetadata } from 'src/metadata/field-metadata/field-metadata.entity
export const convertArguments = (args: any, fields: FieldMetadata[]): any => {
const fieldsMap = new Map(
// TODO: Handle plural for fields when we add relations
fields.map((metadata) => [metadata.nameSingular, metadata]),
fields.map((metadata) => [metadata.name, metadata]),
);
if (Array.isArray(args)) {

View File

@ -8,8 +8,7 @@ export const convertFieldsToGraphQL = (
acc = '',
) => {
const fieldsMap = new Map(
// TODO: Handle plural for fields when we add relations
fields.map((metadata) => [metadata.nameSingular, metadata]),
fields.map((metadata) => [metadata.name, metadata]),
);
for (const [key, value] of Object.entries(select)) {
@ -29,9 +28,7 @@ export const convertFieldsToGraphQL = (
// Otherwise it means it's a special type with multiple values, so we need fetch all fields
fieldAlias = `
${entries
.map(
([key, value]) => `___${metadata.nameSingular}_${key}: ${value}`,
)
.map(([key, value]) => `___${metadata.name}_${key}: ${value}`)
.join('\n')}
`;
}

View File

@ -7,8 +7,7 @@ export const getFieldAliases = (fields: FieldMetadata[]) => {
if (values.length === 1) {
return {
...acc,
// TODO: Handle plural for fields when we add relations
[column.nameSingular]: values[0],
[column.name]: values[0],
};
} else {
return {

View File

@ -30,12 +30,12 @@ describe('generateCreateInputType', () => {
test('should generate fields with correct types and descriptions', () => {
const columns = [
{
nameSingular: 'firstName',
name: 'firstName',
type: 'text',
isNullable: false,
},
{
nameSingular: 'age',
name: 'age',
type: 'number',
isNullable: true,
},

View File

@ -46,12 +46,12 @@ describe('generateObjectType', () => {
test('should generate fields based on provided columns', () => {
const columns = [
{
nameSingular: 'firstName',
name: 'firstName',
type: 'text',
isNullable: false,
},
{
nameSingular: 'age',
name: 'age',
type: 'number',
isNullable: true,
},

View File

@ -29,12 +29,12 @@ describe('generateUpdateInputType', () => {
test('should generate fields with correct types and descriptions', () => {
const columns = [
{
nameSingular: 'firstName',
name: 'firstName',
type: 'text',
isNullable: true,
},
{
nameSingular: 'age',
name: 'age',
type: 'number',
isNullable: true,
},

View File

@ -40,7 +40,7 @@ describe('mapColumnTypeToGraphQLType', () => {
test('should create a GraphQLEnumType for enum fields', () => {
const column = new FieldMetadata();
column.type = 'enum';
column.nameSingular = 'Status';
column.name = 'Status';
column.enums = ['ACTIVE', 'INACTIVE'];
const result = mapColumnTypeToGraphQLType(column);

View File

@ -22,7 +22,7 @@ export const generateCreateInputType = (
columns.forEach((column) => {
const graphqlType = mapColumnTypeToGraphQLType(column, true);
fields[column.nameSingular] = {
fields[column.name] = {
type: !column.isNullable ? new GraphQLNonNull(graphqlType) : graphqlType,
};
});

View File

@ -33,7 +33,7 @@ export const generateObjectType = <TSource = any, TContext = any>(
columns.forEach((column) => {
const graphqlType = mapColumnTypeToGraphQLType(column);
fields[column.nameSingular] = {
fields[column.name] = {
type: !column.isNullable ? new GraphQLNonNull(graphqlType) : graphqlType,
};
});

View File

@ -22,7 +22,7 @@ export const generateUpdateInputType = (
columns.forEach((column) => {
const graphqlType = mapColumnTypeToGraphQLType(column, true);
// No GraphQLNonNull wrapping here, so all fields are optional
fields[column.nameSingular] = {
fields[column.name] = {
type: graphqlType,
};
});

View File

@ -65,7 +65,7 @@ export const mapColumnTypeToGraphQLType = (
return GraphQLInt;
case 'enum': {
if (column.enums && column.enums.length > 0) {
const enumName = `${pascalCase(column.nameSingular)}Enum`;
const enumName = `${pascalCase(column.name)}Enum`;
return new GraphQLEnumType({
name: enumName,