UNPKG

@worker-tools/deno-kv-storage

Version:

An implementation of the StorageArea (1,2,3) interface for Deno with an extensible system for supporting various database backends.

209 lines 7.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.decode = exports.Column = void 0; const oid_js_1 = require("./oid.js"); const decoders_js_1 = require("./decoders.js"); class Column { constructor(name, tableOid, index, typeOid, columnLength, typeModifier, format) { Object.defineProperty(this, "name", { enumerable: true, configurable: true, writable: true, value: name }); Object.defineProperty(this, "tableOid", { enumerable: true, configurable: true, writable: true, value: tableOid }); Object.defineProperty(this, "index", { enumerable: true, configurable: true, writable: true, value: index }); Object.defineProperty(this, "typeOid", { enumerable: true, configurable: true, writable: true, value: typeOid }); Object.defineProperty(this, "columnLength", { enumerable: true, configurable: true, writable: true, value: columnLength }); Object.defineProperty(this, "typeModifier", { enumerable: true, configurable: true, writable: true, value: typeModifier }); Object.defineProperty(this, "format", { enumerable: true, configurable: true, writable: true, value: format }); } } exports.Column = Column; var Format; (function (Format) { Format[Format["TEXT"] = 0] = "TEXT"; Format[Format["BINARY"] = 1] = "BINARY"; })(Format || (Format = {})); const decoder = new TextDecoder(); // TODO // Decode binary fields function decodeBinary() { throw new Error("Not implemented!"); } // deno-lint-ignore no-explicit-any function decodeText(value, typeOid) { const strValue = decoder.decode(value); switch (typeOid) { case oid_js_1.Oid.bpchar: case oid_js_1.Oid.char: case oid_js_1.Oid.cidr: case oid_js_1.Oid.float4: case oid_js_1.Oid.float8: case oid_js_1.Oid.inet: case oid_js_1.Oid.macaddr: case oid_js_1.Oid.name: case oid_js_1.Oid.numeric: case oid_js_1.Oid.oid: case oid_js_1.Oid.regclass: case oid_js_1.Oid.regconfig: case oid_js_1.Oid.regdictionary: case oid_js_1.Oid.regnamespace: case oid_js_1.Oid.regoper: case oid_js_1.Oid.regoperator: case oid_js_1.Oid.regproc: case oid_js_1.Oid.regprocedure: case oid_js_1.Oid.regrole: case oid_js_1.Oid.regtype: case oid_js_1.Oid.text: case oid_js_1.Oid.time: case oid_js_1.Oid.timetz: case oid_js_1.Oid.uuid: case oid_js_1.Oid.varchar: case oid_js_1.Oid.void: return strValue; case oid_js_1.Oid.bpchar_array: case oid_js_1.Oid.char_array: case oid_js_1.Oid.cidr_array: case oid_js_1.Oid.float4_array: case oid_js_1.Oid.float8_array: case oid_js_1.Oid.inet_array: case oid_js_1.Oid.macaddr_array: case oid_js_1.Oid.name_array: case oid_js_1.Oid.numeric_array: case oid_js_1.Oid.oid_array: case oid_js_1.Oid.regclass_array: case oid_js_1.Oid.regconfig_array: case oid_js_1.Oid.regdictionary_array: case oid_js_1.Oid.regnamespace_array: case oid_js_1.Oid.regoper_array: case oid_js_1.Oid.regoperator_array: case oid_js_1.Oid.regproc_array: case oid_js_1.Oid.regprocedure_array: case oid_js_1.Oid.regrole_array: case oid_js_1.Oid.regtype_array: case oid_js_1.Oid.text_array: case oid_js_1.Oid.time_array: case oid_js_1.Oid.timetz_array: case oid_js_1.Oid.uuid_array: case oid_js_1.Oid.varchar_array: return (0, decoders_js_1.decodeStringArray)(strValue); case oid_js_1.Oid.int2: case oid_js_1.Oid.int4: case oid_js_1.Oid.xid: return (0, decoders_js_1.decodeInt)(strValue); case oid_js_1.Oid.int2_array: case oid_js_1.Oid.int4_array: case oid_js_1.Oid.xid_array: return (0, decoders_js_1.decodeIntArray)(strValue); case oid_js_1.Oid.bool: return (0, decoders_js_1.decodeBoolean)(strValue); case oid_js_1.Oid.bool_array: return (0, decoders_js_1.decodeBooleanArray)(strValue); case oid_js_1.Oid.box: return (0, decoders_js_1.decodeBox)(strValue); case oid_js_1.Oid.box_array: return (0, decoders_js_1.decodeBoxArray)(strValue); case oid_js_1.Oid.circle: return (0, decoders_js_1.decodeCircle)(strValue); case oid_js_1.Oid.circle_array: return (0, decoders_js_1.decodeCircleArray)(strValue); case oid_js_1.Oid.bytea: return (0, decoders_js_1.decodeBytea)(strValue); case oid_js_1.Oid.byte_array: return (0, decoders_js_1.decodeByteaArray)(strValue); case oid_js_1.Oid.date: return (0, decoders_js_1.decodeDate)(strValue); case oid_js_1.Oid.date_array: return (0, decoders_js_1.decodeDateArray)(strValue); case oid_js_1.Oid.int8: return (0, decoders_js_1.decodeBigint)(strValue); case oid_js_1.Oid.int8_array: return (0, decoders_js_1.decodeBigintArray)(strValue); case oid_js_1.Oid.json: case oid_js_1.Oid.jsonb: return (0, decoders_js_1.decodeJson)(strValue); case oid_js_1.Oid.json_array: case oid_js_1.Oid.jsonb_array: return (0, decoders_js_1.decodeJsonArray)(strValue); case oid_js_1.Oid.line: return (0, decoders_js_1.decodeLine)(strValue); case oid_js_1.Oid.line_array: return (0, decoders_js_1.decodeLineArray)(strValue); case oid_js_1.Oid.lseg: return (0, decoders_js_1.decodeLineSegment)(strValue); case oid_js_1.Oid.lseg_array: return (0, decoders_js_1.decodeLineSegmentArray)(strValue); case oid_js_1.Oid.path: return (0, decoders_js_1.decodePath)(strValue); case oid_js_1.Oid.path_array: return (0, decoders_js_1.decodePathArray)(strValue); case oid_js_1.Oid.point: return (0, decoders_js_1.decodePoint)(strValue); case oid_js_1.Oid.point_array: return (0, decoders_js_1.decodePointArray)(strValue); case oid_js_1.Oid.polygon: return (0, decoders_js_1.decodePolygon)(strValue); case oid_js_1.Oid.polygon_array: return (0, decoders_js_1.decodePolygonArray)(strValue); case oid_js_1.Oid.tid: return (0, decoders_js_1.decodeTid)(strValue); case oid_js_1.Oid.tid_array: return (0, decoders_js_1.decodeTidArray)(strValue); case oid_js_1.Oid.timestamp: case oid_js_1.Oid.timestamptz: return (0, decoders_js_1.decodeDatetime)(strValue); case oid_js_1.Oid.timestamp_array: case oid_js_1.Oid.timestamptz_array: return (0, decoders_js_1.decodeDatetimeArray)(strValue); default: // A separate category for not handled values // They might or might not be represented correctly as strings, // returning them to the user as raw strings allows them to parse // them as they see fit return strValue; } } function decode(value, column) { if (column.format === Format.BINARY) { return decodeBinary(); } else if (column.format === Format.TEXT) { return decodeText(value, column.typeOid); } else { throw new Error(`Unknown column format: ${column.format}`); } } exports.decode = decode; //# sourceMappingURL=decode.js.map