Skip to content

Commit

Permalink
fix: SqlQueryRunner.hasColumn was not working (#6146)
Browse files Browse the repository at this point in the history
* fixed #5718

* removed .only
  • Loading branch information
pleerock committed May 27, 2020
1 parent e073e02 commit a595fed
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/driver/sqlserver/SqlServerQueryRunner.ts
Expand Up @@ -359,7 +359,7 @@ export class SqlServerQueryRunner extends BaseQueryRunner implements QueryRunner
async hasColumn(tableOrName: Table|string, columnName: string): Promise<boolean> {
const parsedTableName = this.parseTableName(tableOrName);
const schema = parsedTableName.schema === "SCHEMA_NAME()" ? parsedTableName.schema : `'${parsedTableName.schema}'`;
const sql = `SELECT * FROM "${parsedTableName.database}"."INFORMATION_SCHEMA"."TABLES" WHERE "TABLE_NAME" = '${parsedTableName.name}' AND "COLUMN_NAME" = '${columnName}' AND "TABLE_SCHEMA" = ${schema}`;
const sql = `SELECT * FROM "${parsedTableName.database}"."INFORMATION_SCHEMA"."COLUMNS" WHERE "TABLE_NAME" = '${parsedTableName.name}' AND "COLUMN_NAME" = '${columnName}' AND "TABLE_SCHEMA" = ${schema}`;
const result = await this.query(sql);
return result.length ? true : false;
}
Expand Down
33 changes: 33 additions & 0 deletions test/functional/query-runner/has-column.ts
@@ -0,0 +1,33 @@
import "reflect-metadata";
import {Connection} from "../../../src/connection/Connection";
import {closeTestingConnections, createTestingConnections} from "../../utils/test-utils";

describe("query runner > has column", () => {

let connections: Connection[];
before(async () => {
connections = await createTestingConnections({
entities: [__dirname + "/entity/*{.js,.ts}"],
schemaCreate: true,
dropSchema: true,
});
});
after(() => closeTestingConnections(connections));

it("should correctly check if column exist", () => Promise.all(connections.map(async connection => {
const queryRunner = connection.createQueryRunner();

let hasIdColumn = await queryRunner.hasColumn("post", "id");
let hasNameColumn = await queryRunner.hasColumn("post", "name");
let hasVersionColumn = await queryRunner.hasColumn("post", "version");
let hasDescriptionColumn = await queryRunner.hasColumn("post", "description");

hasIdColumn.should.be.true;
hasNameColumn.should.be.true;
hasVersionColumn.should.be.true;
hasDescriptionColumn.should.be.false;

await queryRunner.release();
})));

});

0 comments on commit a595fed

Please sign in to comment.