From 46a6112e6ea038bd7fed63d04e1732b92aa38fff Mon Sep 17 00:00:00 2001 From: Claudio Catterina Date: Fri, 10 Dec 2021 09:07:30 +0100 Subject: [PATCH] TypeORM adapter: Don't escape fields There's no need to escape fields with typeorm querybuilder. Moreover field escaping can cause problems when an entity field name is different from the database field name. --- packages/sql/spec/typeorm.spec.ts | 12 +++++++----- packages/sql/src/lib/typeorm.ts | 1 + 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/sql/spec/typeorm.spec.ts b/packages/sql/spec/typeorm.spec.ts index da70b87..3b92c48 100644 --- a/packages/sql/spec/typeorm.spec.ts +++ b/packages/sql/spec/typeorm.spec.ts @@ -30,7 +30,7 @@ describe('Condition interpreter for TypeORM', () => { expect(query).to.be.instanceof(SelectQueryBuilder) expect(query.getQuery()).to.equal([ - 'SELECT "u"."id" AS "u_id", "u"."name" AS "u_name"', + 'SELECT "u"."id" AS "u_id", "u"."name" AS "u_name", "u"."age" AS "u_age"', 'FROM "user" "u"', 'WHERE "u"."name" = :0' ].join(' ')) @@ -42,7 +42,7 @@ describe('Condition interpreter for TypeORM', () => { const query = interpret(condition, conn.createQueryBuilder(User, 'u')) expect(query.getQuery()).to.equal([ - 'SELECT "u"."id" AS "u_id", "u"."name" AS "u_name"', + 'SELECT "u"."id" AS "u_id", "u"."name" AS "u_name", "u"."age" AS "u_age"', 'FROM "user" "u"', 'WHERE "u"."age" in(:0, :1, :2)' ].join(' ')) @@ -59,7 +59,7 @@ describe('Condition interpreter for TypeORM', () => { const query = interpret(condition, conn.createQueryBuilder(User, 'u')) expect(query.getQuery()).to.equal([ - 'SELECT "u"."id" AS "u_id", "u"."name" AS "u_name"', + 'SELECT "u"."id" AS "u_id", "u"."name" AS "u_name", "u"."age" AS "u_age"', 'FROM "user" "u"', 'LEFT JOIN "project" "projects" ON "projects"."userId"="u"."id"', 'WHERE "projects"."name" = :0' @@ -75,7 +75,7 @@ describe('Condition interpreter for TypeORM', () => { const query = interpret(condition, conn.createQueryBuilder(User, 'u')) expect(query.getQuery()).to.equal([ - 'SELECT "u"."id" AS "u_id", "u"."name" AS "u_name"', + 'SELECT "u"."id" AS "u_id", "u"."name" AS "u_name", "u"."age" AS "u_age"', 'FROM "user" "u"', 'LEFT JOIN "project" "projects" ON "projects"."userId"="u"."id"', 'WHERE ("projects"."name" = :0 and "projects"."active" = :1)' @@ -91,7 +91,7 @@ describe('Condition interpreter for TypeORM', () => { const query = interpret(condition, conn.createQueryBuilder(User, 'u')) expect(query.getQuery()).to.equal([ - 'SELECT "u"."id" AS "u_id", "u"."name" AS "u_name"', + 'SELECT "u"."id" AS "u_id", "u"."name" AS "u_name", "u"."age" AS "u_age"', 'FROM "user" "u"', 'LEFT JOIN "project" "projects" ON "projects"."userId"="u"."id"', ' LEFT JOIN "review" "projects_reviews" ON "projects_reviews"."projectId"="projects"."id"', @@ -105,6 +105,7 @@ async function configureORM() { class User { id!: number name!: string + age!: string projects!: Project[] } @@ -129,6 +130,7 @@ async function configureORM() { columns: { id: { primary: true, type: 'int', generated: true }, name: { type: 'varchar' }, + age: { type: 'int' }, }, relations: { projects: { diff --git a/packages/sql/src/lib/typeorm.ts b/packages/sql/src/lib/typeorm.ts index 709dde0..9417ef8 100644 --- a/packages/sql/src/lib/typeorm.ts +++ b/packages/sql/src/lib/typeorm.ts @@ -38,6 +38,7 @@ function foreignField(field: string, relationName: string) { const dialects = createDialects({ joinRelation, paramPlaceholder: index => `:${index - 1}`, + escapeField: (field: string) => field, foreignField });