UNPKG

postgrejs

Version:

Professional PostgreSQL client NodeJS

132 lines (131 loc) 6.45 kB
"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]);