Skip to content

Commit

Permalink
fix: loading tables with fk in sqlite query runner (#9875)
Browse files Browse the repository at this point in the history
Closes: #9266
  • Loading branch information
GP4cK committed Apr 6, 2023
1 parent 0619aca commit 4997da0
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/driver/sqlite-abstract/AbstractSqliteQueryRunner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1570,7 +1570,7 @@ export abstract class AbstractSqliteQueryRunner
)

return new TableForeignKey({
name: fkMapping!.name,
name: fkMapping?.name,
columnNames: columnNames,
referencedTableName: foreignKey["table"],
referencedColumnNames: referencedColumnNames,
Expand Down
33 changes: 33 additions & 0 deletions test/github-issues/9266/issue-9266.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import { expect } from "chai"
import "reflect-metadata"
import { DataSource } from "../../../src/data-source/DataSource"
import {
closeTestingConnections,
createTestingConnections,
reloadTestingDatabases,
} from "../../utils/test-utils"

describe("github issues > #9266 queryRunner.getTable() fails if Foreign Key is set in target table", () => {
let connections: DataSource[]
before(async () => {
connections = await createTestingConnections({
migrations: [__dirname + "/migrations/*{.js,.ts}"],
enabledDrivers: ["sqlite", "better-sqlite3"],
})
})
beforeEach(() => reloadTestingDatabases(connections))
after(() => closeTestingConnections(connections))

it("should be able to load tables", () =>
Promise.all(
connections.map(async (connection) => {
await connection.runMigrations()
const queryRunner = connection.createQueryRunner()
const tables = await queryRunner.getTables()
const tableNames = tables.map((table) => table.name)
expect(tableNames).to.include("author")
expect(tableNames).to.include("post")
await queryRunner.release()
}),
))
})
15 changes: 15 additions & 0 deletions test/github-issues/9266/migrations/init.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { MigrationInterface, QueryRunner } from "../../../../src"

export class CreateDatabase implements MigrationInterface {
name = "CreateDatabase1623518107000"
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`CREATE TABLE "author" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL)`,
)
await queryRunner.query(
`CREATE TABLE "post" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "text" varchar NOT NULL, "authorId" integer NOT NULL REFERENCES author(id) ON DELETE CASCADE ON UPDATE NO ACTION)`,
)
}

async down(queryRunner: QueryRunner): Promise<void> {}
}

0 comments on commit 4997da0

Please sign in to comment.