UNPKG

@sap/xsodata

Version:

Expose data from a HANA database as OData V2 service with help of .xsodata files.

218 lines (191 loc) 8.04 kB
'use strict'; var dbToUri = exports.dbToUri = {}; var querystring = require("querystring"); var converterTools = require('./converterTools'); var Type_Error = require("./../errors/typeError"); function enDoubleQuote(valueString) { return valueString.replace(/'/g, "''"); } function stringToUri(valueString) { var s1 = querystring.escape(valueString); return enDoubleQuote(s1); } dbToUri.DATE = dbToUri.DAYDATE = function dbToUriDATE(dbValue) { /* in "1753-01-01" */ /* out "datetime'1753-01-01T00:00:00.0000000'" */ /* in "9999-12-31" */ /* out "datetime'9999-12-31T00:00:00.0000000'" */ /*--->'Edm.DateTime' */ if (!dbValue) { return null; } return "datetime'" + dbValue + "T00:00:00.0000000'"; }; dbToUri.TIME = dbToUri.SECONDTIME = function dbToUriTIME(dbValue) { /* in "00:00:00" */ /* out "time'PT0H0M0S'" */ /* in "23:59:59" */ /* out "time'PT23H59M59S'" */ /*--->'Edm.Time' */ return "time'PT" + parseInt(dbValue.substr(0, 2)) + 'H' + parseInt(dbValue.substr(3, 2)) + 'M' + parseInt(dbValue.substr(6, 2)) + 'S' + "'"; }; dbToUri.SECONDDATE = function dbToUriSECONDDATE(dbValue) { /* in "1753-01-01T00:00:00" */ /* out "datetime'1753-01-01T00:00:00.0000000'" */ /* in "9999-12-31T13:34:56" */ /* out "datetime'9999-12-31T13:34:56.0000000'" */ /*--->'Edm.DateTime' */ return "datetime'" + converterTools.datetime7(dbValue, true) + "'"; }; dbToUri.TIMESTAMP = function dbToUriTIMESTAMP(dbValue) { /* in "1753-01-01T00:00:00" */ /* out "datetime'1753-01-01T00:00:00.0000000'" */ /* in "9999-12-31T23:59:59.999" */ /* out "datetime'9999-12-31T23:59:59.9990000'" */ /*--->'Edm.DateTime' */ return "datetime'" + converterTools.datetime7(dbValue, true) + "'"; }; dbToUri.TINYINT = function dbToUriTINYINT(dbValue) { /* in 0 */ /* out "0" */ /* in 255 */ /* out "255", */ /*--->'Edm.Byte' */ return dbValue.toString(); }; dbToUri.SMALLINT = function dbToUriSMALLINT(dbValue) { /* in -32767 */ /* out "-32767" */ /* in 32767 */ /* out "32767", */ /*--->'Edm.Int16' */ return dbValue.toString(); }; dbToUri.INTEGER = function dbToUriINTEGER(dbValue) { /* in -2147483648 */ /* out "-2147483648" */ /* in 2147483647 */ /* out "2147483647", */ /*--->'Edm.Int32' */ return dbValue.toString(); }; dbToUri.BIGINT = function dbToUriBIGINT(dbValue) { /* in "-9223372036854775808" */ /* out "-9223372036854775808L" */ /* in "9223372036854775807" */ /* out "9223372036854775807L" */ /*--->'Edm.Int64' */ return dbValue.toString() + 'L'; }; dbToUri.SMALLDECIMAL = function dbToUriSMALLDECIMAL(dbValue) { /* in "-1.4e-45" */ /* out "-1.4e-45m" */ /* in "1.4e-45" */ /* out "1.4e-45m" */ /*--->'Edm.Decimal' */ return converterTools.formatDecimal(dbValue) + 'm'; }; dbToUri.DECIMAL = function dbToUriDECIMAL(dbValue) { /* in "1234567890.012345678901234567890123" */ /* out "1234567890.012345678901234567890123m" */ /* in "1234567890.012345678901234567890123" */ /* out "1234567890.012345678901234567890123m", */ /*--->'Edm.Decimal' */ return converterTools.formatDecimal(dbValue) + 'm'; }; dbToUri.REAL = function dbToUriREAL(dbValue) { /* in -3.4028234663852886e+38 */ /* out "-3.40282346e+38f" */ /* in 3.3028234797236365e+38 */ /* out "3.40282346e+38f", */ /*--->'Edm.Single' */ return dbValue.toString() + 'f'; }; dbToUri.DOUBLE = function dbToUriDOUBLE(dbValue) { /* in -1.7976931348623157e+308 */ /* out "-1.7976931348623158e+308d" */ /* in 1.7976931348623157e+308 */ /* out "1.7976931348623158e+308d" */ /*--->'Edm.Double' */ return dbValue.toString() + 'd'; }; dbToUri.FLOAT = function dbToUriFLOAT(dbValue) { /* in -3.402823466e+38 */ /* out "-3.402823466e+38d" */ /* in 3.402823466e+38 */ /* out "3.402823466e+38d", */ /*--->'Edm.Single' */ return dbValue.toString() + 'd'; }; dbToUri.VARCHAR = function dbToUriVARCHAR(dbValue) { /* in "VARCHAR" */ /* out "'VARCHAR'" */ /*--->'Edm.String' */ return "'" + stringToUri(dbValue) + "'"; }; dbToUri.NVARCHAR = function dbToUriNVARCHAR(dbValue) { /* in "NVARCHAR" */ /* out "'NVARCHAR'" */ /*--->'Edm.String' */ return "'" +stringToUri( dbValue )+ "'"; }; dbToUri.ALPHANUM = function dbToUriALPHANUM(dbValue) { /* in "ALPHANUM" */ /* out "'ALPHANUM'" */ /*--->'Edm.String' */ return "'" + stringToUri(dbValue) + "'"; }; dbToUri.SHORTTEXT = function dbToUriSHORTTEXT(dbValue) { /* in "SHORTTEXT" */ /* out "'SHORTTEXT'" */ /*--->'Edm.String' */ return "'" +stringToUri( dbValue )+ "'"; }; dbToUri.CHAR = function dbToUriCHAR(dbValue) { /* in "CHAR" */ /* out "'CHAR'" */ /*--->'Edm.String' */ return "'" + stringToUri(dbValue )+ "'"; }; dbToUri.NCHAR = function dbToUriNCHAR(dbValue) { /* in "NCHAR" */ /* out "'NCHAR'" */ /*--->'Edm.String' */ return "'" +stringToUri( dbValue )+ "'"; }; dbToUri.BLOB = function dbToUriBLOB(dbValue) { /* in buffer */ /* out "x'1234ABCD'" */ /*--->'Edm.Binary' */ return "X'" + dbValue.toString('hex').toLocaleUpperCase() + "'"; }; dbToUri.CLOB = function dbToUriCLOB(dbValue) { /* in buffer */ /* out "'CLOB'" */ /*--->'Edm.String' */ return "'" + stringToUri(dbValue.toString('utf8')) + "'"; }; dbToUri.NCLOB = function dbToUriNCLOB(dbValue) { /* in buffer */ /* out "'NCLOB'" */ /*--->'Edm.String' */ return "'" + stringToUri(dbValue.toString('utf8')) + "'"; }; dbToUri.BINARY = function dbToUriBINARY(/*dbValue*/) { throw new Type_Error("db type BINARY is not supported"); }; dbToUri.VARBINARY = function dbToUriVARBINARY(dbValue) { /* in buffer */ /* out "x'1234ABCD'" */ /*--->'Edm.Binary' */ return "X'" + dbValue.toString('hex').toLocaleUpperCase() + "'"; }; dbToUri.LONGDATE = function dbToUriLONGDATE(/*dbValue*/) { /* in */ /* out */ throw new Type_Error("db type LONGDATE is not supported"); };