• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

panates / postgresql-client / 50d5a8f1-a1ba-4c39-947d-fb4f2c7685e1

16 Apr 2024 07:12AM UTC coverage: 85.802% (+0.3%) from 85.476%
50d5a8f1-a1ba-4c39-947d-fb4f2c7685e1

push

circleci

erayhanoglu
Added prettier formatting

696 of 980 branches covered (71.02%)

Branch coverage included in aggregate %.

1 of 1 new or added line in 1 file covered. (100.0%)

52 existing lines in 10 files now uncovered.

2513 of 2760 relevant lines covered (91.05%)

799.06 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

96.63
/src/data-type-map.ts
1
import { DataTypeOIDs } from './constants.js';
30✔
2
import { ArrayBoolType, BoolType } from './data-types/bool-type.js';
30✔
3
import { ArrayBoxType, BoxType } from './data-types/box-type.js';
30✔
4
import { ArrayByteaType, ByteaType } from './data-types/bytea-type.js';
30✔
5
import { ArrayCharType, CharType } from './data-types/char-type.js';
30✔
6
import { ArrayCircleType, CircleType } from './data-types/circle-type.js';
30✔
7
import { ArrayDateType, DateType } from './data-types/date-type.js';
30✔
8
import { ArrayFloat4Type, Float4Type } from './data-types/float4-type.js';
30✔
9
import { ArrayFloat8Type, Float8Type } from './data-types/float8-type.js';
30✔
10
import { ArrayInt2Type, Int2Type } from './data-types/int2-type.js';
30✔
11
import { ArrayInt2VectorType, Int2VectorType } from './data-types/int2-vector-type.js';
30✔
12
import { ArrayInt4Type, Int4Type } from './data-types/int4-type.js';
30✔
13
import { ArrayInt8Type, Int8Type } from './data-types/int8-type.js';
30✔
14
import { ArrayJsonType, JsonType } from './data-types/json-type.js';
30✔
15
import { ArrayJsonbType, JsonbType } from './data-types/jsonb-type.js';
30✔
16
import { ArrayLsegType, LsegType } from './data-types/lseg-type.js';
30✔
17
import { ArrayNumericType, NumericType } from './data-types/numeric-type.js';
30✔
18
import { ArrayOidType, OidType, VectorOidType } from './data-types/oid-type.js';
30✔
19
import { ArrayPointType, PointType } from './data-types/point-type.js';
30✔
20
import { ArrayTimeType, TimeType } from './data-types/time-type.js';
30✔
21
import { ArrayTimestampType, TimestampType } from './data-types/timestamp-type.js';
30✔
22
import { ArrayTimestamptzType, TimestamptzType } from './data-types/timestamptz-type.js';
30✔
23
import { ArrayUuidType, UuidType } from './data-types/uuid-type.js';
30✔
24
import { ArrayVarcharType, VarcharType } from './data-types/varchar-type.js';
30✔
25
import { DataType } from './interfaces/data-type.js';
26
import { OID } from './types.js';
27

28
export class DataTypeMap {
30✔
29
  private _itemsByOID: Record<OID, DataType> = {};
30✔
30
  private _items: DataType[] = [];
30✔
31

32
  constructor(other?: DataTypeMap) {
33
    if (other instanceof DataTypeMap) Object.assign(this._items, other._items);
30!
34
  }
35

36
  get(oid: OID): DataType {
37
    return this._itemsByOID[oid];
4,113✔
38
  }
39

40
  register(dataTypes: DataType | DataType[]): void {
41
    dataTypes = Array.isArray(dataTypes) ? dataTypes : [dataTypes];
930✔
42
    for (const t of dataTypes) {
930✔
43
      this._itemsByOID[t.oid] = t;
1,650✔
44
      const i = this._items.findIndex(tt => tt.oid === t.oid);
44,550✔
45
      if (i >= 0) this._items[i] = t;
1,650!
46
      else this._items.push(t);
1,650✔
47
    }
48
  }
49

50
  determine(value: any): OID {
51
    if (value == null) return DataTypeOIDs.unknown;
93✔
52
    const valueIsArray = Array.isArray(value);
87✔
53
    let i: number;
54
    let t: DataType;
55
    for (i = this._items.length - 1; i >= 0; i--) {
87✔
56
      t = this._items[i];
2,634✔
57
      if (valueIsArray) {
2,634✔
58
        if (t.elementsOID && t.isType(value[0])) return t.oid;
150✔
59
      } else if (!t.elementsOID && t.isType(value)) return t.oid;
2,484✔
60
    }
UNCOV
61
    return DataTypeOIDs.unknown;
×
62
  }
63
}
64

65
export const GlobalTypeMap = new DataTypeMap();
30✔
66

67
GlobalTypeMap.register([OidType, VectorOidType, ArrayOidType]);
30✔
68
GlobalTypeMap.register([JsonbType, ArrayJsonbType]);
30✔
69
GlobalTypeMap.register([JsonType, ArrayJsonType]);
30✔
70

71
GlobalTypeMap.register([BoolType, ArrayBoolType]);
30✔
72
GlobalTypeMap.register([NumericType, ArrayNumericType]);
30✔
73
GlobalTypeMap.register([Float4Type, ArrayFloat4Type]);
30✔
74
GlobalTypeMap.register([Float8Type, ArrayFloat8Type]);
30✔
75
GlobalTypeMap.register([Int2Type, ArrayInt2Type]);
30✔
76
GlobalTypeMap.register([Int4Type, ArrayInt4Type]);
30✔
77
GlobalTypeMap.register([Int8Type, ArrayInt8Type]);
30✔
78

79
GlobalTypeMap.register([ByteaType, ArrayByteaType]);
30✔
80
GlobalTypeMap.register([CircleType, ArrayCircleType]);
30✔
81
GlobalTypeMap.register([PointType, ArrayPointType]);
30✔
82
GlobalTypeMap.register([LsegType, ArrayLsegType]);
30✔
83
GlobalTypeMap.register([BoxType, ArrayBoxType]);
30✔
84

85
GlobalTypeMap.register([Int2VectorType, ArrayInt2VectorType]);
30✔
86

87
GlobalTypeMap.register({ ...VarcharType, name: 'bpchar', oid: DataTypeOIDs.bpchar });
30✔
88
GlobalTypeMap.register({
30✔
89
  ...ArrayVarcharType,
90
  name: '_bpchar',
91
  oid: DataTypeOIDs._bpchar,
92
  elementsOID: DataTypeOIDs.bpchar,
93
});
94

95
GlobalTypeMap.register({ ...VarcharType, name: 'name', oid: DataTypeOIDs.name });
30✔
96
GlobalTypeMap.register({
30✔
97
  ...ArrayVarcharType,
98
  name: '_name',
99
  oid: DataTypeOIDs._name,
100
  elementsOID: DataTypeOIDs.name,
101
});
102

103
GlobalTypeMap.register({ ...VarcharType, name: 'text', oid: DataTypeOIDs.text });
30✔
104
GlobalTypeMap.register({
30✔
105
  ...ArrayVarcharType,
106
  name: '_text',
107
  oid: DataTypeOIDs._text,
108
  elementsOID: DataTypeOIDs.text,
109
});
110
GlobalTypeMap.register({ ...VarcharType, name: 'xml', oid: DataTypeOIDs.xml });
30✔
111
GlobalTypeMap.register({
30✔
112
  ...ArrayVarcharType,
113
  name: '_xml',
114
  oid: DataTypeOIDs._xml,
115
  elementsOID: DataTypeOIDs.xml,
116
});
117
GlobalTypeMap.register([VarcharType, ArrayVarcharType]);
30✔
118
GlobalTypeMap.register([UuidType, ArrayUuidType]);
30✔
119
GlobalTypeMap.register([CharType, ArrayCharType]);
30✔
120

121
GlobalTypeMap.register([TimestamptzType, ArrayTimestamptzType]);
30✔
122
GlobalTypeMap.register([TimeType, ArrayTimeType]);
30✔
123
GlobalTypeMap.register([DateType, ArrayDateType]);
30✔
124
GlobalTypeMap.register([TimestampType, ArrayTimestampType]);
30✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc