Skip to content

Commit fb0af92

Browse files
author
Alexander Kharkovey
committed
fix(json-api-nestjs): fix check if field exist and camelcase transform
1 parent 9f3ecb3 commit fb0af92

File tree

4 files changed

+21
-7
lines changed

4 files changed

+21
-7
lines changed

libs/json-api-nestjs/src/lib/helper/utils/index.spec.ts

+2
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,11 @@ describe('Test utils', () => {
1919
const result = snakeToCamel('test_test');
2020
const result1 = snakeToCamel('test-test');
2121
const result2 = snakeToCamel('testTest');
22+
const result3 = snakeToCamel('event_incident_typeFK');
2223
expect(result).toBe('testTest');
2324
expect(result1).toBe('testTest');
2425
expect(result2).toBe('testTest');
26+
expect(result3).toBe('eventIncidentTypeFK');
2527
});
2628

2729
it('isString', () => {

libs/json-api-nestjs/src/lib/helper/utils/index.ts

+3-5
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,9 @@ export function snakeToCamel(str: string): string {
3535
if (!str.match(/[\s_-]/g)) {
3636
return str;
3737
}
38-
return str
39-
.toLowerCase()
40-
.replace(/([-_][a-z])/g, (group) =>
41-
group.toUpperCase().replace('-', '').replace('_', '')
42-
);
38+
return str.replace(/([-_][a-z])/g, (group) =>
39+
group.toUpperCase().replace('-', '').replace('_', '')
40+
);
4341
}
4442

4543
export function camelToKebab(str: string): string {

libs/json-api-nestjs/src/lib/mixin/service/transform/transform.mixin.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ export class TransformMixinService<T> {
122122
this.commonColumnsForRelation.has(tableName) &&
123123
this.commonColumnsForRelation.get(tableName).has(fieldName)
124124
) {
125-
if (!currentItem[field]) {
125+
if (!(field in currentItem)) {
126126
continue;
127127
}
128128
relationObject[tableName] = relationObject[tableName] || {};
@@ -181,6 +181,7 @@ export class TransformMixinService<T> {
181181
const propsData = data[field];
182182
const typeName = getEntityName(this.relationTarget.get(field));
183183
if (Array.isArray(propsData)) {
184+
console.log(propsData, this.relationPrimaryField.get(field));
184185
builtData.data = propsData.map((i) => ({
185186
type: camelToKebab(typeName),
186187
id: i[this.relationPrimaryField.get(field)].toString(),

libs/json-api-nestjs/src/lib/mixin/service/typeorm/methods/get-one/get-one.spec.ts

+14-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@ import { getDataSourceToken, getRepositoryToken } from '@nestjs/typeorm';
33
import { BadRequestException, NotFoundException } from '@nestjs/common';
44

55
import { TypeormMixinService } from '../../typeorm.mixin';
6-
import { mockDBTestModule, Users, Addresses } from '../../../../../mock-utils';
6+
import {
7+
mockDBTestModule,
8+
Users,
9+
Addresses,
10+
Roles,
11+
} from '../../../../../mock-utils';
712
import { ConfigParam, QueryField, QueryParams } from '../../../../../types';
813
import { DataSource, Repository } from 'typeorm';
914
import {
@@ -84,11 +89,19 @@ describe('GetOne methode test', () => {
8489
})
8590
);
8691

92+
const roles = await repository.manager.getRepository(Roles).save(
93+
Object.assign(new Roles(), {
94+
name: 'test',
95+
key: 'test',
96+
})
97+
);
98+
console.log(roles);
8799
const user = {
88100
login: 'login',
89101
lastName: 'lastName',
90102
isActive: true,
91103
addresses: addresses,
104+
roles: [roles],
92105
};
93106
await repository.save(Object.assign(new Users(), user));
94107
});

0 commit comments

Comments
 (0)