diff --git a/src/query-builder/DeleteQueryBuilder.ts b/src/query-builder/DeleteQueryBuilder.ts index 1840a48728..6e14bef959 100644 --- a/src/query-builder/DeleteQueryBuilder.ts +++ b/src/query-builder/DeleteQueryBuilder.ts @@ -73,10 +73,14 @@ export class DeleteQueryBuilder extends QueryBuilder implements const result = await queryRunner.query(sql, parameters); const driver = queryRunner.connection.driver; - if (driver instanceof MysqlDriver || driver instanceof AuroraDataApiDriver) { + if (driver instanceof MysqlDriver) { deleteResult.raw = result; deleteResult.affected = result.affectedRows; + } else if (driver instanceof AuroraDataApiDriver) { + deleteResult.raw = result; + deleteResult.affected = result.numberOfRecordsUpdated; + } else if (driver instanceof SqlServerDriver || driver instanceof PostgresDriver || driver instanceof CockroachDriver) { deleteResult.raw = result[0] ? result[0] : null; // don't return 0 because it could confuse. null means that we did not receive this value diff --git a/src/query-builder/UpdateQueryBuilder.ts b/src/query-builder/UpdateQueryBuilder.ts index 19a091da61..1318fae2b0 100644 --- a/src/query-builder/UpdateQueryBuilder.ts +++ b/src/query-builder/UpdateQueryBuilder.ts @@ -110,6 +110,10 @@ export class UpdateQueryBuilder extends QueryBuilder implements updateResult.raw = result; updateResult.affected = result.affectedRows; } + else if (this.connection.driver instanceof AuroraDataApiDriver) { + updateResult.raw = result; + updateResult.affected = result.numberOfRecordsUpdated; + } else if (this.connection.driver instanceof BetterSqlite3Driver) { // only works for better-sqlite3 updateResult.raw = result; updateResult.affected = result.changes; diff --git a/test/github-issues/1308/issue-1308.ts b/test/github-issues/1308/issue-1308.ts index a6d6aecb78..9eb79b333b 100644 --- a/test/github-issues/1308/issue-1308.ts +++ b/test/github-issues/1308/issue-1308.ts @@ -11,7 +11,7 @@ describe("github issues > #1308 Raw Postgresql Update query result is always an (connections = await createTestingConnections({ entities: [new EntitySchema(AuthorSchema), new EntitySchema(PostSchema)], dropSchema: true, - enabledDrivers: ["postgres", "mysql", "mariadb"], + enabledDrivers: ["postgres", "mysql", "mariadb", "aurora-data-api"], })) ); beforeEach(() => reloadTestingDatabases(connections)); diff --git a/test/github-issues/2499/issue-2499.ts b/test/github-issues/2499/issue-2499.ts index a514261842..e8a1974388 100644 --- a/test/github-issues/2499/issue-2499.ts +++ b/test/github-issues/2499/issue-2499.ts @@ -11,18 +11,16 @@ describe("github issues > #2499 Postgres DELETE query result is useless", () => entities: [__dirname + "/entity/*{.js,.ts}"], schemaCreate: true, dropSchema: true, + // skip test for sqlite because sqlite doesn't return any data on delete + // sqljs -- the same + // mongodb requires another test and it is also doesn't return correct number + // of removed documents (possibly a bug with mongodb itself) + enabledDrivers: ["mysql", "mariadb", "mssql", "postgres", "aurora-data-api"] })); beforeEach(() => reloadTestingDatabases(connections)); after(() => closeTestingConnections(connections)); it("should return correct number of affected rows for mysql, mariadb, postgres", () => Promise.all(connections.map(async connection => { - // skip test for sqlite because sqlite doesn't return any data on delete - // sqljs -- the same - // mongodb requires another test and it is also doesn't return correct number - // of removed documents (possibly a bug with mongodb itself) - if (["mysql", "mariadb", "mssql", "postgres"].indexOf(connection.name) === -1) { - return; - } const repo = connection.getRepository(Foo); await repo.save({ id: 1, description: "test1" });