chore: Merge master to develop and manage conflict (#3570)
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
import { hasChanges } from "../has-changes"
|
||||
|
||||
describe("hasChanges", function () {
|
||||
it("should return true the data differ and false otherwise", () => {
|
||||
const objToCompareTo = {
|
||||
prop1: "test",
|
||||
prop2: "test",
|
||||
prop3: "test",
|
||||
prop4: {
|
||||
prop4_1: "test",
|
||||
prop4_2: "test",
|
||||
prop4_3: "test",
|
||||
},
|
||||
}
|
||||
|
||||
const obj = {
|
||||
prop1: "test",
|
||||
prop2: "test",
|
||||
prop3: "test",
|
||||
prop4: {
|
||||
prop4_1: "test",
|
||||
prop4_2: "test",
|
||||
prop4_3: "test",
|
||||
},
|
||||
}
|
||||
|
||||
let res = hasChanges(objToCompareTo, obj)
|
||||
expect(res).toBeFalsy()
|
||||
|
||||
const obj2 = {
|
||||
...obj,
|
||||
prop3: "tes",
|
||||
}
|
||||
|
||||
res = hasChanges(objToCompareTo, obj2)
|
||||
expect(res).toBeTruthy()
|
||||
|
||||
const obj3 = {
|
||||
...obj,
|
||||
prop4: {
|
||||
prop4_1: "",
|
||||
prop4_2: "test",
|
||||
prop4_3: "test",
|
||||
},
|
||||
}
|
||||
|
||||
res = hasChanges(objToCompareTo, obj3)
|
||||
expect(res).toBeTruthy()
|
||||
|
||||
const obj4 = {
|
||||
...obj,
|
||||
}
|
||||
/* @ts-ignore */
|
||||
delete obj4.prop4
|
||||
|
||||
res = hasChanges(objToCompareTo, obj4)
|
||||
expect(res).toBeFalsy()
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,23 @@
|
||||
import { isObject } from "./is-object"
|
||||
|
||||
/**
|
||||
* Compare two objects and return true if there is changes detected from obj2 compared to obj1
|
||||
* @param obj1
|
||||
* @param obj2
|
||||
*/
|
||||
export function hasChanges<T1 extends Object, T2 extends Object>(
|
||||
obj1: T1,
|
||||
obj2: T2
|
||||
): boolean {
|
||||
for (const [key, value] of Object.entries(obj2)) {
|
||||
if (isObject(obj1[key])) {
|
||||
return hasChanges(obj1[key], value)
|
||||
}
|
||||
|
||||
if (obj1[key] !== value) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
@@ -9,6 +9,7 @@ export * from "./is-object"
|
||||
export * from "./is-string"
|
||||
export * from "./product-category"
|
||||
export * from "./remove-undefined-properties"
|
||||
export * from "./row-sql-results-to-entity-transformer"
|
||||
export * from "./set-metadata"
|
||||
export * from "./validate-id"
|
||||
export * from "./is-object"
|
||||
export * from "./has-changes"
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
import { RelationIdLoader } from "typeorm/query-builder/relation-id/RelationIdLoader"
|
||||
import { RawSqlResultsToEntityTransformer } from "typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer"
|
||||
import { QueryBuilder, QueryRunner } from "typeorm"
|
||||
|
||||
export async function rowSqlResultsToEntityTransformer<T>(
|
||||
rows: any[],
|
||||
queryBuilder: QueryBuilder<T>,
|
||||
queryRunner: QueryRunner
|
||||
): Promise<T[]> {
|
||||
const relationIdLoader = new RelationIdLoader(
|
||||
queryBuilder.connection,
|
||||
queryRunner,
|
||||
queryBuilder.expressionMap.relationIdAttributes
|
||||
)
|
||||
const transformer = new RawSqlResultsToEntityTransformer(
|
||||
queryBuilder.expressionMap,
|
||||
queryBuilder.connection.driver,
|
||||
[],
|
||||
[],
|
||||
queryRunner
|
||||
)
|
||||
|
||||
return transformer.transform(
|
||||
rows,
|
||||
queryBuilder.expressionMap.mainAlias!
|
||||
) as T[]
|
||||
}
|
||||
Reference in New Issue
Block a user