@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
JavaScript
;
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");
};