| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import { entityKind } from "../../entity.js";
- import { getColumnNameAndConfig } from "../../utils.js";
- import { PgColumn, PgColumnBuilder } from "./common.js";
- class PgCustomColumnBuilder extends PgColumnBuilder {
- static [entityKind] = "PgCustomColumnBuilder";
- constructor(name, fieldConfig, customTypeParams) {
- super(name, "custom", "PgCustomColumn");
- this.config.fieldConfig = fieldConfig;
- this.config.customTypeParams = customTypeParams;
- }
- /** @internal */
- build(table) {
- return new PgCustomColumn(
- table,
- this.config
- );
- }
- }
- class PgCustomColumn extends PgColumn {
- static [entityKind] = "PgCustomColumn";
- sqlName;
- mapTo;
- mapFrom;
- constructor(table, config) {
- super(table, config);
- this.sqlName = config.customTypeParams.dataType(config.fieldConfig);
- this.mapTo = config.customTypeParams.toDriver;
- this.mapFrom = config.customTypeParams.fromDriver;
- }
- getSQLType() {
- return this.sqlName;
- }
- mapFromDriverValue(value) {
- return typeof this.mapFrom === "function" ? this.mapFrom(value) : value;
- }
- mapToDriverValue(value) {
- return typeof this.mapTo === "function" ? this.mapTo(value) : value;
- }
- }
- function customType(customTypeParams) {
- return (a, b) => {
- const { name, config } = getColumnNameAndConfig(a, b);
- return new PgCustomColumnBuilder(name, config, customTypeParams);
- };
- }
- export {
- PgCustomColumn,
- PgCustomColumnBuilder,
- customType
- };
- //# sourceMappingURL=custom.js.map
|