mirror of
https://github.com/typeorm/typeorm.git
synced 2025-12-08 21:26:23 +00:00
fix: allow hstore type to use transformers in driver postgres (#8823)
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>
This commit is contained in:
parent
ed06f4c1f1
commit
b1a01074c9
@ -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)
|
||||
|
||||
@ -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
|
||||
},
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user