postgrejs
Version:
Professional PostgreSQL client NodeJS
132 lines (131 loc) • 6.45 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.GlobalTypeMap = exports.DataTypeMap = void 0;
const constants_js_1 = require("./constants.js");
const bool_type_js_1 = require("./data-types/bool-type.js");
const box_type_js_1 = require("./data-types/box-type.js");
const bytea_type_js_1 = require("./data-types/bytea-type.js");
const char_type_js_1 = require("./data-types/char-type.js");
const circle_type_js_1 = require("./data-types/circle-type.js");
const date_type_js_1 = require("./data-types/date-type.js");
const float4_type_js_1 = require("./data-types/float4-type.js");
const float8_type_js_1 = require("./data-types/float8-type.js");
const int2_type_js_1 = require("./data-types/int2-type.js");
const int2_vector_type_js_1 = require("./data-types/int2-vector-type.js");
const int4_type_js_1 = require("./data-types/int4-type.js");
const int8_type_js_1 = require("./data-types/int8-type.js");
const json_type_js_1 = require("./data-types/json-type.js");
const jsonb_type_js_1 = require("./data-types/jsonb-type.js");
const lseg_type_js_1 = require("./data-types/lseg-type.js");
const numeric_type_js_1 = require("./data-types/numeric-type.js");
const oid_type_js_1 = require("./data-types/oid-type.js");
const point_type_js_1 = require("./data-types/point-type.js");
const time_type_js_1 = require("./data-types/time-type.js");
const timestamp_type_js_1 = require("./data-types/timestamp-type.js");
const timestamptz_type_js_1 = require("./data-types/timestamptz-type.js");
const uuid_type_js_1 = require("./data-types/uuid-type.js");
const varchar_type_js_1 = require("./data-types/varchar-type.js");
class DataTypeMap {
constructor(other) {
this._itemsByOID = {};
this._items = [];
if (other instanceof DataTypeMap)
Object.assign(this._items, other._items);
}
get(oid) {
return this._itemsByOID[oid];
}
register(dataTypes) {
dataTypes = Array.isArray(dataTypes) ? dataTypes : [dataTypes];
for (const t of dataTypes) {
this._itemsByOID[t.oid] = t;
const i = this._items.findIndex(tt => tt.oid === t.oid);
if (i >= 0)
this._items[i] = t;
else
this._items.push(t);
}
}
determine(value) {
if (value == null)
return constants_js_1.DataTypeOIDs.unknown;
const valueIsArray = Array.isArray(value);
let i;
let t;
for (i = this._items.length - 1; i >= 0; i--) {
t = this._items[i];
if (valueIsArray) {
if (t.elementsOID && t.isType(value[0]))
return t.oid;
}
else if (!t.elementsOID && t.isType(value))
return t.oid;
}
return constants_js_1.DataTypeOIDs.unknown;
}
}
exports.DataTypeMap = DataTypeMap;
exports.GlobalTypeMap = new DataTypeMap();
exports.GlobalTypeMap.register([oid_type_js_1.OidType, oid_type_js_1.VectorOidType, oid_type_js_1.ArrayOidType]);
exports.GlobalTypeMap.register([jsonb_type_js_1.JsonbType, jsonb_type_js_1.ArrayJsonbType]);
exports.GlobalTypeMap.register([json_type_js_1.JsonType, json_type_js_1.ArrayJsonType]);
exports.GlobalTypeMap.register([bool_type_js_1.BoolType, bool_type_js_1.ArrayBoolType]);
exports.GlobalTypeMap.register([numeric_type_js_1.NumericType, numeric_type_js_1.ArrayNumericType]);
exports.GlobalTypeMap.register([float4_type_js_1.Float4Type, float4_type_js_1.ArrayFloat4Type]);
exports.GlobalTypeMap.register([float8_type_js_1.Float8Type, float8_type_js_1.ArrayFloat8Type]);
exports.GlobalTypeMap.register([int2_type_js_1.Int2Type, int2_type_js_1.ArrayInt2Type]);
exports.GlobalTypeMap.register([int4_type_js_1.Int4Type, int4_type_js_1.ArrayInt4Type]);
exports.GlobalTypeMap.register([int8_type_js_1.Int8Type, int8_type_js_1.ArrayInt8Type]);
exports.GlobalTypeMap.register([bytea_type_js_1.ByteaType, bytea_type_js_1.ArrayByteaType]);
exports.GlobalTypeMap.register([circle_type_js_1.CircleType, circle_type_js_1.ArrayCircleType]);
exports.GlobalTypeMap.register([point_type_js_1.PointType, point_type_js_1.ArrayPointType]);
exports.GlobalTypeMap.register([lseg_type_js_1.LsegType, lseg_type_js_1.ArrayLsegType]);
exports.GlobalTypeMap.register([box_type_js_1.BoxType, box_type_js_1.ArrayBoxType]);
exports.GlobalTypeMap.register([int2_vector_type_js_1.Int2VectorType, int2_vector_type_js_1.ArrayInt2VectorType]);
exports.GlobalTypeMap.register({
...varchar_type_js_1.VarcharType,
name: 'bpchar',
oid: constants_js_1.DataTypeOIDs.bpchar,
});
exports.GlobalTypeMap.register({
...varchar_type_js_1.ArrayVarcharType,
name: '_bpchar',
oid: constants_js_1.DataTypeOIDs._bpchar,
elementsOID: constants_js_1.DataTypeOIDs.bpchar,
});
exports.GlobalTypeMap.register({
...varchar_type_js_1.VarcharType,
name: 'name',
oid: constants_js_1.DataTypeOIDs.name,
});
exports.GlobalTypeMap.register({
...varchar_type_js_1.ArrayVarcharType,
name: '_name',
oid: constants_js_1.DataTypeOIDs._name,
elementsOID: constants_js_1.DataTypeOIDs.name,
});
exports.GlobalTypeMap.register({
...varchar_type_js_1.VarcharType,
name: 'text',
oid: constants_js_1.DataTypeOIDs.text,
});
exports.GlobalTypeMap.register({
...varchar_type_js_1.ArrayVarcharType,
name: '_text',
oid: constants_js_1.DataTypeOIDs._text,
elementsOID: constants_js_1.DataTypeOIDs.text,
});
exports.GlobalTypeMap.register({ ...varchar_type_js_1.VarcharType, name: 'xml', oid: constants_js_1.DataTypeOIDs.xml });
exports.GlobalTypeMap.register({
...varchar_type_js_1.ArrayVarcharType,
name: '_xml',
oid: constants_js_1.DataTypeOIDs._xml,
elementsOID: constants_js_1.DataTypeOIDs.xml,
});
exports.GlobalTypeMap.register([varchar_type_js_1.VarcharType, varchar_type_js_1.ArrayVarcharType]);
exports.GlobalTypeMap.register([uuid_type_js_1.UuidType, uuid_type_js_1.ArrayUuidType]);
exports.GlobalTypeMap.register([char_type_js_1.CharType, char_type_js_1.ArrayCharType]);
exports.GlobalTypeMap.register([timestamptz_type_js_1.TimestamptzType, timestamptz_type_js_1.ArrayTimestamptzType]);
exports.GlobalTypeMap.register([time_type_js_1.TimeType, time_type_js_1.ArrayTimeType]);
exports.GlobalTypeMap.register([date_type_js_1.DateType, date_type_js_1.ArrayDateType]);
exports.GlobalTypeMap.register([timestamp_type_js_1.TimestampType, timestamp_type_js_1.ArrayTimestampType]);