jaydata-sqlite
Version:
Cross-platform HTML5 data-management, JavaScript Language Query (JSLQ) support for OData, SQLite, WebSQL, IndexedDB, YQL and Facebook (packaged for Node.JS)
108 lines (106 loc) • 6.81 kB
JavaScript
$data.SqLiteConverter = {
fromDb: {
'$data.Byte': $data.Container.proxyConverter,
'$data.SByte': $data.Container.proxyConverter,
'$data.Decimal': $data.Container.proxyConverter,
'$data.Float': $data.Container.proxyConverter,
'$data.Int16': $data.Container.proxyConverter,
'$data.Int64': $data.Container.proxyConverter,
"$data.Integer": $data.Container.proxyConverter,
"$data.Int32": $data.Container.proxyConverter,
"$data.Number": $data.Container.proxyConverter,
"$data.Date": function (dbData) { return dbData != null ? new Date(dbData) : dbData; },
"$data.DateTimeOffset": function (dbData) { return dbData != null ? new Date(dbData) : dbData; },
"$data.Time": $data.Container.proxyConverter,
"$data.String": $data.Container.proxyConverter,
"$data.Boolean": function (b) { return b === 1 ? true : false; },
"$data.Blob": function(b){ return b ? $data.Container.convertTo(atob(b), $data.Blob) : b; },
"$data.Array": function () {
if (arguments.length == 0) return [];
return arguments[0] ? JSON.parse(arguments[0]) : undefined;
},
"$data.Guid": function (g) { return g ? $data.parseGuid(g).toString() : g; },
'$data.GeographyPoint': function (g) { if (g) { return new $data.GeographyPoint(JSON.parse(g)); } return g; },
'$data.GeographyLineString': function (g) { if (g) { return new $data.GeographyLineString(JSON.parse(g)); } return g; },
'$data.GeographyPolygon': function (g) { if (g) { return new $data.GeographyPolygon(JSON.parse(g)); } return g; },
'$data.GeographyMultiPoint': function (g) { if (g) { return new $data.GeographyMultiPoint(JSON.parse(g)); } return g; },
'$data.GeographyMultiLineString': function (g) { if (g) { return new $data.GeographyMultiLineString(JSON.parse(g)); } return g; },
'$data.GeographyMultiPolygon': function (g) { if (g) { return new $data.GeographyMultiPolygon(JSON.parse(g)); } return g; },
'$data.GeographyCollection': function (g) { if (g) { return new $data.GeographyCollection(JSON.parse(g)); } return g; },
'$data.GeometryPoint': function (g) { if (g) { return new $data.GeometryPoint(JSON.parse(g)); } return g; },
'$data.GeometryLineString': function (g) { if (g) { return new $data.GeometryLineString(JSON.parse(g)); } return g; },
'$data.GeometryPolygon': function (g) { if (g) { return new $data.GeometryPolygon(JSON.parse(g)); } return g; },
'$data.GeometryMultiPoint': function (g) { if (g) { return new $data.GeometryMultiPoint(JSON.parse(g)); } return g; },
'$data.GeometryMultiLineString': function (g) { if (g) { return new $data.GeometryMultiLineString(JSON.parse(g)); } return g; },
'$data.GeometryMultiPolygon': function (g) { if (g) { return new $data.GeometryMultiPolygon(JSON.parse(g)); } return g; },
'$data.GeometryCollection': function (g) { if (g) { return new $data.GeometryCollection(JSON.parse(g)); } return g; }
},
toDb: {
'$data.Byte': $data.Container.proxyConverter,
'$data.SByte': $data.Container.proxyConverter,
'$data.Decimal': $data.Container.proxyConverter,
'$data.Float': $data.Container.proxyConverter,
'$data.Int16': $data.Container.proxyConverter,
'$data.Int64': $data.Container.proxyConverter,
"$data.Integer": $data.Container.proxyConverter,
"$data.Int32": $data.Container.proxyConverter,
"$data.Number": $data.Container.proxyConverter,
"$data.Date": function (date) { return date ? date.valueOf() : null; },
"$data.DateTimeOffset": function (date) { return date ? date.valueOf() : null; },
"$data.Time": $data.Container.proxyConverter,
"$data.String": $data.Container.proxyConverter,
"$data.Boolean": function (b) { return b ? 1 : 0; },
"$data.Blob": function(b){ return b ? $data.Blob.toBase64(b) : b; },
"$data.Array": function (arr) { return arr ? JSON.stringify(arr) : arr; },
"$data.Guid": function (g) { return g ? g.toString() : g; },
"$data.Object": function (value) { if (value === null) { return null; } throw 'Not supported exception'; },
'$data.GeographyPoint': function (g) { if (g) { return JSON.stringify(g); } return g; },
'$data.GeographyLineString': function (g) { if (g) { return JSON.stringify(g); } return g; },
'$data.GeographyPolygon': function (g) { if (g) { return JSON.stringify(g); } return g; },
'$data.GeographyMultiPoint': function (g) { if (g) { return JSON.stringify(g); } return g; },
'$data.GeographyMultiLineString': function (g) { if (g) { return JSON.stringify(g); } return g; },
'$data.GeographyMultiPolygon': function (g) { if (g) { return JSON.stringify(g); } return g; },
'$data.GeographyCollection': function (g) { if (g) { return JSON.stringify(g); } return g; },
'$data.GeometryPoint': function (g) { if (g) { return JSON.stringify(g); } return g; },
'$data.GeometryLineString': function (g) { if (g) { return JSON.stringify(g); } return g; },
'$data.GeometryPolygon': function (g) { if (g) { return JSON.stringify(g); } return g; },
'$data.GeometryMultiPoint': function (g) { if (g) { return JSON.stringify(g); } return g; },
'$data.GeometryMultiLineString': function (g) { if (g) { return JSON.stringify(g); } return g; },
'$data.GeometryMultiPolygon': function (g) { if (g) { return JSON.stringify(g); } return g; },
'$data.GeometryCollection': function (g) { if (g) { return JSON.stringify(g); } return g; }
}
};
$data.SqLiteFieldMapping = {
'$data.Byte': "INTEGER",
'$data.SByte': "INTEGER",
'$data.Decimal': "TEXT",
'$data.Float': "REAL",
'$data.Int16': "INTEGER",
'$data.Int64': "TEXT",
"$data.Integer": "INTEGER",
"$data.Int32": "INTEGER",
"$data.Number": "REAL",
"$data.Date": "REAL",
"$data.Time": "TEXT",
"$data.DateTimeOffset": "REAL",
"$data.String": "TEXT",
"$data.Boolean": "INTEGER",
"$data.Blob": "BLOB",
"$data.Array": "TEXT",
"$data.Guid": "TEXT",
"$data.Object": "TEXT",
'$data.GeographyPoint': "TEXT",
'$data.GeographyLineString': "TEXT",
'$data.GeographyPolygon': "TEXT",
'$data.GeographyMultiPoint': "TEXT",
'$data.GeographyMultiLineString': "TEXT",
'$data.GeographyMultiPolygon': "TEXT",
'$data.GeographyCollection': "TEXT",
'$data.GeometryPoint': "TEXT",
'$data.GeometryLineString': "TEXT",
'$data.GeometryPolygon': "TEXT",
'$data.GeometryMultiPoint': "TEXT",
'$data.GeometryMultiLineString': "TEXT",
'$data.GeometryMultiPolygon': "TEXT",
'$data.GeometryCollection': "TEXT"
};