@sap/xsodata
Version:
Expose data from a HANA database as OData V2 service with help of .xsodata files.
186 lines (172 loc) • 5.16 kB
JavaScript
;
const dbToXml = (exports.dbToXml = {});
const converterTools = require('./converterTools');
const XsODataTypeError = require('./../errors/typeError');
dbToXml.DATE = dbToXml.DAYDATE = function dbToXmlDATE(dbValue) {
/*in 9999-12-31*/
/*out Edm.DateTime~~> 1957-06-13T00:00:00.0000000 */
if (dbValue === null) {
return null;
}
return (
dbValue.substr(0, 4) +
'-' +
dbValue.substr(5, 2) +
'-' +
dbValue.substr(8, 2) +
'T' +
'00:00:00.0000000'
);
};
dbToXml.TIME = dbToXml.SECONDTIME = function dbToXmlTIME(dbValue) {
/*in "23:59:59"*/
/*out Edm.Time ~~> "PT23H59M59S" */
if (dbValue === null) {
return null;
}
return (
'PT' +
parseInt(dbValue.substr(0, 2)) +
'H' +
parseInt(dbValue.substr(3, 2)) +
'M' +
parseInt(dbValue.substr(6, 2)) +
'S'
);
};
dbToXml.SECONDDATE = function dbToXmlSECONDDATE(dbValue) {
/*in 9999-12-31T23:59:59*/
/*out Edm.DateTime~~> 9999-12-31T23:59:59.0000000 */
if (dbValue === null) {
return null;
}
return converterTools.datetime7(dbValue, true);
};
dbToXml.TIMESTAMP = function dbToXmlTIMESTAMP(dbValue) {
/*in 2011-05-11T12:00:59.999*/
/*out Edm.DateTime~~> 9999-12-31T23:59:59.9990000 */
if (dbValue === null) {
return null;
}
return converterTools.datetime7(dbValue, true);
};
dbToXml.TINYINT = function dbToXmlTINYINT(dbValue) {
/*in 0*/
/*out Edm.Byte~~> 0 */
return dbValue;
};
dbToXml.SMALLINT = function dbToXmlSMALLINT(dbValue) {
/*in -32768*/
/*out Edm.Int16~~> -32768 */
return dbValue;
};
dbToXml.INTEGER = function dbToXmlINTEGER(dbValue) {
/*in -2147483647*/
/*out Edm.Int32~~> -2147483647 */
return dbValue;
};
dbToXml.BIGINT = function dbToXmlBIGINT(dbValue) {
/*in 9223372036854775807*/
/*out Edm.Int64~~> 9223372036854775808l <it an small L at the end */
return dbValue;
};
dbToXml.SMALLDECIMAL = function dbToXmlSMALLDECIMAL(dbValue) {
/*in 1.2e+1*/
/*out Edm.Decimal~~> 12*/
/*SAPINFO xsodata<->xs1: type convertion db to uri: SMALLDECIMAL/Edm.Single is not trunctated*/
return dbValue;
};
dbToXml.DECIMAL = function dbToXmlDECIMAL(dbValue) {
/*in -1.234567890132456789013245678901234e+33*/
/*out Edm.Decimal~~> -1234567890132456789013245678901234*/
/*SAPINFO xsodata<->xs1: type convertion db to uri: SMALLDECIMAL/Edm.Single is not trunctated*/
if (dbValue === null) {
return null;
}
return converterTools.decimal_db_to_uri(dbValue);
};
dbToXml.REAL = function dbToXmlREAL(dbValue) {
/*in -3.4028230607370965e+38*/
/*out Edm.Single~~> -3.4028230607370965e+38*/
return dbValue;
};
dbToXml.DOUBLE = function dbToXmlDOUBLE(dbValue) {
/*in 1.7976931348623157e+308*/
/*out Edm.Single~~> -3.4028230607370965e+38*/
return dbValue;
};
dbToXml.FLOAT = function dbToXmlFLOAT(dbValue) {
/*in -3.4028230607370965e+38*/
/*out Edm.Single~~> -3.4028230607370965e+38*/
return dbValue;
};
dbToXml.VARCHAR = function dbToXmlVARCHAR(dbValue) {
/*in "A VARCHAR"*/
/*out Edm.String~~> "A VARCHAR"*/
return dbValue;
};
dbToXml.NVARCHAR = function dbToXmlNVARCHAR(dbValue) {
/*in "A NVARCHAR"*/
/*out Edm.String~~> "A NVARCHAR"*/
return dbValue;
};
dbToXml.ALPHANUM = function dbToXmlALPHANUM(dbValue) {
/*in "A VARCHAR"*/
/*out Edm.String~~> "A VARCHAR"*/
return dbValue;
};
dbToXml.SHORTTEXT = function dbToXmlSHORTTEXT(dbValue) {
/*in "A VARCHAR"*/
/*out Edm.String~~> "A VARCHAR"*/
return dbValue;
};
dbToXml.CHAR = function dbToXmlCHAR(dbValue) {
/*in "A VARCHAR"*/
/*out Edm.String~~> "A VARCHAR"*/
return dbValue;
};
dbToXml.NCHAR = function dbToXmlNCHAR(dbValue) {
/*in "A NVARCHAR"*/
/*out Edm.String~~> "A NVARCHAR"*/
return dbValue;
};
dbToXml.BLOB = function dbToXmlBLOB(dbValue) {
if (dbValue === null) {
return null;
}
return dbValue.toString('base64');
};
dbToXml.CLOB = function dbToXmlCLOB(dbValue) {
//TODO atom format not supported yet
//const decoder = new StringDecoder('utf8');
//const c = decoder.write(dbValue);
//return "'" + c + "'";
if (dbValue === null) {
return null;
}
return dbValue.toString('utf8');
};
dbToXml.NCLOB = function dbToXmlNCLOB(dbValue) {
//TODO atom format not supported yet
//const decoder = new StringDecoder('utf8');
//const c = decoder.write(dbValue);
//return "'" + c + "'";
if (dbValue === null) {
return null;
}
return dbValue.toString('utf8');
};
dbToXml.BINARY = function dbToXmlBINARY(/*dbValue*/) {
throw new XsODataTypeError('db type BINARY is not supported');
};
dbToXml.VARBINARY = function dbToXmlVARBINARY(dbValue) {
//TODO atom format not supported yet
/* in Buffer object*/
if (dbValue === null) {
return null;
}
return dbValue.toString('base64');
};
dbToXml.LONGDATE = function dbToUriLONGDATE(/*dbValue*/) {
throw new XsODataTypeError('db type LONGDATE is not supported');
};