Skip to content

Commit

Permalink
fix: allow hstore type to use transformers in driver postgres (#8823)
Browse files Browse the repository at this point in the history
The HSTORE type is the only type bypassing the transformer
column options.
This fix makes the option available to this column type as well.

Co-authored-by: Samuel Roy <sam@pricemetry.com>
  • Loading branch information
devx-opensource and Samuel Roy committed Mar 30, 2022
1 parent ed06f4c commit b1a0107
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 3 deletions.
4 changes: 1 addition & 3 deletions src/driver/postgres/PostgresDriver.ts
Expand Up @@ -723,9 +723,7 @@ export class PostgresDriver implements Driver {
return ""
},
)
return object
} else {
return value
value = object
}
} else if (columnMetadata.type === "simple-array") {
value = DateUtils.stringToSimpleArray(value)
Expand Down
13 changes: 13 additions & 0 deletions test/other-issues/hstore-allow-transformer/entity/hstore-entity.ts
@@ -0,0 +1,13 @@
import { Entity } from "../../../../src/decorator/entity/Entity"
import { Column } from "../../../../src/decorator/columns/Column"
import { PrimaryGeneratedColumn } from "../../../../src/decorator/columns/PrimaryGeneratedColumn"
import { testTransformer } from "../test-transformer"

@Entity()
export class DummyHSTOREEntity {
@PrimaryGeneratedColumn()
id: number

@Column({ type: "hstore", transformer: testTransformer })
translation: object
}
@@ -0,0 +1,47 @@
import "../../utils/test-setup"
import {
createTestingConnections,
closeTestingConnections,
reloadTestingDatabases,
} from "../../utils/test-utils"
import { DataSource } from "../../../src"
import { expect } from "chai"
import { DummyHSTOREEntity } from "./entity/hstore-entity"

describe("other issues > allow HSTORE column type to use transformers", () => {
let connections: DataSource[]
before(
async () =>
(connections = await createTestingConnections({
entities: [__dirname + "/entity/*{.js,.ts}"],
schemaCreate: true,
dropSchema: true,
enabledDrivers: ["postgres"],
})),
)
beforeEach(() => reloadTestingDatabases(connections))
after(() => closeTestingConnections(connections))

it("should use the transformer set in the column options", () =>
Promise.all(
connections.map(async (connection) => {
const repository = connection.getRepository(DummyHSTOREEntity)

const translation = {
en_US: "hello",
fr_FR: "salut",
}

const dummy = repository.create({
translation,
})

await repository.save(dummy)

const dummyEntity = await repository.findOneByOrFail({
id: dummy.id,
})
expect(dummyEntity.translation).to.equal("hello")
}),
))
})
@@ -0,0 +1,8 @@
export const testTransformer = {
to(data: any) {
return data
},
from(data: any) {
return data.en_US
},
}

0 comments on commit b1a0107

Please sign in to comment.