flexmonster-mongo-connector
Advanced tools
Comparing version 0.0.1-beta to 0.0.2-beta
@@ -72,6 +72,6 @@ "use strict"; | ||
return new Promise((resolve, reject) => { | ||
const fieldName = fieldObject.field; | ||
const fieldQniqueName = fieldObject.uniqueName; | ||
cursor.then((documents) => { | ||
let result = []; | ||
let keyWithoutDots = fieldName.replace(/\./g, Delimeters_1.Delimeter.DOTS_DELIMETER); | ||
let keyWithoutDots = fieldQniqueName.replace(/\./g, Delimeters_1.Delimeter.DOTS_DELIMETER); | ||
documents.forEach((data) => { | ||
@@ -126,3 +126,3 @@ let value = data["_id"][keyWithoutDots]; | ||
fields.push({ | ||
"field": fieldsFromQuery[i].field | ||
"uniqueName": fieldsFromQuery[i].uniqueName | ||
}); | ||
@@ -135,3 +135,3 @@ } | ||
for (let i = 0; i < fieldsFromQuery.length; i++) { | ||
const fieldKey = fieldsFromQuery[i].field; | ||
const fieldKey = fieldsFromQuery[i].uniqueName; | ||
hit.push(this._getNestedObjectValue(fieldKey, document)); | ||
@@ -138,0 +138,0 @@ } |
@@ -91,3 +91,3 @@ "use strict"; | ||
} | ||
stringFieldFilterQuery[fieldName.field] = fieldFilterObject; | ||
stringFieldFilterQuery[fieldName.uniqueName] = fieldFilterObject; | ||
} | ||
@@ -140,3 +140,3 @@ _filterDateField(query, fieldName, dateFieldFilterQuery) { | ||
} | ||
dateFieldFilterQuery[dateFieldFilterUniquName.field] = mongoFilterQuery; | ||
dateFieldFilterQuery[dateFieldFilterUniquName.uniqueName] = mongoFilterQuery; | ||
} | ||
@@ -143,0 +143,0 @@ } |
@@ -6,3 +6,2 @@ "use strict"; | ||
const MongoPipelineStages_1 = require("../../utils/consts/MongoPipelineStages"); | ||
const ClientSideFieldType_1 = require("../../utils/consts/ClientSideFieldType"); | ||
class GroupingQueryBuilder { | ||
@@ -22,8 +21,6 @@ constructor() { | ||
fieldValueObject = value.field; | ||
if (fieldValueObject.type != ClientSideFieldType_1.ClientSideFieldType.NUMBER) | ||
continue; | ||
key = SupportedAggregations_1.SupportedAggregations.aggregations[value.func]; | ||
keyValueField = fieldValueObject.field.replace(/\./g, Delimeters_1.Delimeter.DOTS_DELIMETER); | ||
key = SupportedAggregations_1.SupportedAggregations.numericFieldAggregations[value.func]; | ||
keyValueField = fieldValueObject.uniqueName.replace(/\./g, Delimeters_1.Delimeter.DOTS_DELIMETER); | ||
groupStage[keyValueField + Delimeters_1.Delimeter.FIELD_DELIMETER + value.func] = {}; | ||
groupStage[keyValueField + Delimeters_1.Delimeter.FIELD_DELIMETER + value.func][key] = value.func == "count" ? 1 : "$" + fieldValueObject.field; | ||
groupStage[keyValueField + Delimeters_1.Delimeter.FIELD_DELIMETER + value.func][key] = value.func == "count" ? 1 : "$" + fieldValueObject.uniqueName; | ||
} | ||
@@ -47,4 +44,4 @@ } | ||
fieldValueObject = query[i]; | ||
key = fieldValueObject.field.replace(/\./g, Delimeters_1.Delimeter.DOTS_DELIMETER); | ||
rowColumnsGroupQuery[key] = "$" + fieldValueObject.field; | ||
key = fieldValueObject.uniqueName.replace(/\./g, Delimeters_1.Delimeter.DOTS_DELIMETER); | ||
rowColumnsGroupQuery[key] = "$" + fieldValueObject.uniqueName; | ||
} | ||
@@ -51,0 +48,0 @@ return rowColumnsGroupQuery; |
@@ -16,3 +16,8 @@ "use strict"; | ||
fieldValueObject = aggregationQuery["values"][i]["field"]; | ||
projection[fieldValueObject.field] = "$" + fieldValueObject.field; | ||
if (fieldValueObject.type == ClientSideFieldType_1.ClientSideFieldType.DATE) { | ||
this._buildProjectionForDateField(fieldValueObject, projection); | ||
} | ||
else { | ||
projection[fieldValueObject.uniqueName] = "$" + fieldValueObject.uniqueName; | ||
} | ||
} | ||
@@ -37,7 +42,7 @@ } | ||
else { | ||
projectionQuery[filterObject.field] = "$" + filterObject.field; | ||
projectionQuery[filterObject.uniqueName] = "$" + filterObject.uniqueName; | ||
} | ||
if (filterObject.hasOwnProperty("value")) { | ||
const fieldValueObject = filterObject.value.field; | ||
projectionQuery[fieldValueObject.field] = "$" + fieldValueObject.field; | ||
projectionQuery[fieldValueObject.uniqueName] = "$" + fieldValueObject.uniqueName; | ||
} | ||
@@ -53,3 +58,3 @@ } | ||
fieldObject = rowsColumns[i]; | ||
fieldReference = "$" + fieldObject.field; | ||
fieldReference = "$" + fieldObject.uniqueName; | ||
if (fieldObject.type == ClientSideFieldType_1.ClientSideFieldType.DATE) { | ||
@@ -59,3 +64,3 @@ this._buildProjectionForDateField(rowsColumns[i], projectionQuery); | ||
else { | ||
projectionQuery[fieldObject.field] = fieldReference; | ||
projectionQuery[fieldObject.uniqueName] = fieldReference; | ||
} | ||
@@ -66,3 +71,3 @@ } | ||
let timestampObject = {}; | ||
const fieldUniquename = fieldValueObject.field; | ||
const fieldUniquename = fieldValueObject.uniqueName; | ||
if (fieldValueObject.interval == null) { | ||
@@ -69,0 +74,0 @@ projectionQuery[fieldUniquename] = { "$toLong": "$" + fieldUniquename }; |
@@ -7,5 +7,5 @@ export interface IRequestArgument { | ||
export interface IRequestField { | ||
field: string; | ||
uniqueName: string; | ||
type: string; | ||
interval?: string; | ||
} |
@@ -60,9 +60,15 @@ "use strict"; | ||
if (ClientSideFieldType_1.ClientSideFieldType.NUMBER == type) { | ||
shemaObject.aggregations = this._getAggregationList(); | ||
shemaObject.aggregations = this._getAggregationList(SupportedAggregations_1.SupportedAggregations.numericFieldAggregations); | ||
} | ||
else if (ClientSideFieldType_1.ClientSideFieldType.DATE == type) { | ||
shemaObject.aggregations = this._getAggregationList(SupportedAggregations_1.SupportedAggregations.dateFieldAggregations); | ||
} | ||
else { | ||
shemaObject.aggregations = this._getAggregationList(SupportedAggregations_1.SupportedAggregations.nonNumericFieldAggregations); | ||
} | ||
return shemaObject; | ||
} | ||
_getAggregationList() { | ||
_getAggregationList(supportedAggregations) { | ||
let aggregations = []; | ||
for (let keys in SupportedAggregations_1.SupportedAggregations.aggregations) { | ||
for (let keys in supportedAggregations) { | ||
aggregations.push(keys.toString()); | ||
@@ -69,0 +75,0 @@ } |
export declare class SchemaValueObject { | ||
field: string; | ||
uniqueName: string; | ||
type: string; | ||
@@ -8,5 +8,5 @@ caption: string; | ||
aggregations: string[]; | ||
constructor(field: string, type: string, caption: string, folder?: string, aggregations?: string[]); | ||
constructor(uniqueName: string, type: string, caption: string, folder?: string, aggregations?: string[]); | ||
static fromObject(obj: any): SchemaValueObject; | ||
toObject(): any; | ||
} |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
class SchemaValueObject { | ||
constructor(field, type, caption, folder = "", aggregations = []) { | ||
this.field = ""; | ||
constructor(uniqueName, type, caption, folder = "", aggregations = []) { | ||
this.uniqueName = ""; | ||
this.type = ""; | ||
this.caption = ""; | ||
this.interval = null; | ||
this.field = field; | ||
this.uniqueName = uniqueName; | ||
this.type = type; | ||
@@ -16,3 +16,3 @@ this.caption = caption; | ||
static fromObject(obj) { | ||
let field = ""; | ||
let uniqueName = ""; | ||
let type = ""; | ||
@@ -22,4 +22,4 @@ let caption = ""; | ||
let aggregations = []; | ||
if (obj.hasOwnProject("field")) { | ||
field = obj["field"]; | ||
if (obj.hasOwnProject("uniqueName")) { | ||
uniqueName = obj["uniqueName"]; | ||
} | ||
@@ -38,7 +38,7 @@ if (obj.hasOwnProject("type")) { | ||
} | ||
return new SchemaValueObject(field, type, caption, folder, aggregations); | ||
return new SchemaValueObject(uniqueName, type, caption, folder, aggregations); | ||
} | ||
toObject() { | ||
let resultObject = { | ||
"field": this.field, | ||
"uniqueName": this.uniqueName, | ||
"type": this.type, | ||
@@ -50,5 +50,2 @@ "caption": this.caption | ||
} | ||
if (this.interval != null) { | ||
resultObject["interval"] = this.interval; | ||
} | ||
if (this.aggregations.length > 0) { | ||
@@ -55,0 +52,0 @@ resultObject["aggregations"] = this.aggregations; |
export declare class SupportedAggregations { | ||
static aggregations: any; | ||
static numericFieldAggregations: any; | ||
static dateFieldAggregations: any; | ||
static nonNumericFieldAggregations: any; | ||
} |
@@ -6,3 +6,3 @@ "use strict"; | ||
exports.SupportedAggregations = SupportedAggregations; | ||
SupportedAggregations.aggregations = { | ||
SupportedAggregations.numericFieldAggregations = { | ||
"sum": "$sum", | ||
@@ -16,2 +16,10 @@ "average": "$avg", | ||
}; | ||
SupportedAggregations.dateFieldAggregations = { | ||
"count": "$sum", | ||
"min": "$min", | ||
"max": "$max" | ||
}; | ||
SupportedAggregations.nonNumericFieldAggregations = { | ||
"count": "$sum" | ||
}; | ||
//# sourceMappingURL=SupportedAggregations.js.map |
{ | ||
"name": "flexmonster-mongo-connector", | ||
"version": "0.0.1-beta", | ||
"version": "0.0.2-beta", | ||
"description": "Custom data source API implementation for MongoDB", | ||
@@ -5,0 +5,0 @@ "main": "build/index.js", |
@@ -70,6 +70,6 @@ import {SchemaBuilder} from '../schema/SchemaBuilder'; | ||
return new Promise((resolve, reject) => { | ||
const fieldName: string = fieldObject.field; | ||
const fieldQniqueName: string = fieldObject.uniqueName; | ||
cursor.then((documents: any) => { | ||
let result: any[] = []; | ||
let keyWithoutDots: string = fieldName.replace(/\./g, Delimeter.DOTS_DELIMETER); | ||
let keyWithoutDots: string = fieldQniqueName.replace(/\./g, Delimeter.DOTS_DELIMETER); | ||
documents.forEach((data: any) => { | ||
@@ -125,3 +125,3 @@ let value = data["_id"][keyWithoutDots]; | ||
fields.push({ | ||
"field": fieldsFromQuery[i].field | ||
"uniqueName": fieldsFromQuery[i].uniqueName | ||
}); | ||
@@ -135,3 +135,3 @@ } | ||
for (let i = 0; i < fieldsFromQuery.length; i++) { | ||
const fieldKey: string = fieldsFromQuery[i].field; | ||
const fieldKey: string = fieldsFromQuery[i].uniqueName; | ||
hit.push(this._getNestedObjectValue(fieldKey, document)); | ||
@@ -138,0 +138,0 @@ } |
@@ -84,3 +84,3 @@ import {ClientSideFieldType} from '../../utils/consts/ClientSideFieldType'; | ||
stringFieldFilterQuery[fieldName.field] = fieldFilterObject; | ||
stringFieldFilterQuery[fieldName.uniqueName] = fieldFilterObject; | ||
} | ||
@@ -129,5 +129,5 @@ | ||
dateFieldFilterQuery[dateFieldFilterUniquName.field] = mongoFilterQuery; | ||
dateFieldFilterQuery[dateFieldFilterUniquName.uniqueName] = mongoFilterQuery; | ||
} | ||
} |
@@ -24,7 +24,6 @@ import {SupportedAggregations} from '../../utils/consts/SupportedAggregations'; | ||
fieldValueObject = value.field; | ||
if (fieldValueObject.type != ClientSideFieldType.NUMBER) continue; | ||
key = SupportedAggregations.aggregations[value.func]; | ||
keyValueField = fieldValueObject.field.replace(/\./g, Delimeter.DOTS_DELIMETER); | ||
key = SupportedAggregations.numericFieldAggregations[value.func]; | ||
keyValueField = fieldValueObject.uniqueName.replace(/\./g, Delimeter.DOTS_DELIMETER); | ||
groupStage[keyValueField + Delimeter.FIELD_DELIMETER + value.func] = {}; | ||
groupStage[keyValueField + Delimeter.FIELD_DELIMETER + value.func][key] = value.func == "count" ? 1 : "$" + fieldValueObject.field; | ||
groupStage[keyValueField + Delimeter.FIELD_DELIMETER + value.func][key] = value.func == "count" ? 1 : "$" + fieldValueObject.uniqueName; | ||
} | ||
@@ -49,4 +48,4 @@ } | ||
fieldValueObject = query[i]; | ||
key = fieldValueObject.field.replace(/\./g, Delimeter.DOTS_DELIMETER); | ||
rowColumnsGroupQuery[key] = "$" + fieldValueObject.field; | ||
key = fieldValueObject.uniqueName.replace(/\./g, Delimeter.DOTS_DELIMETER); | ||
rowColumnsGroupQuery[key] = "$" + fieldValueObject.uniqueName; | ||
} | ||
@@ -53,0 +52,0 @@ return rowColumnsGroupQuery; |
@@ -19,3 +19,7 @@ import {ClientSideFieldType} from '../../utils/consts/ClientSideFieldType'; | ||
fieldValueObject = aggregationQuery["values"][i]["field"]; | ||
projection[fieldValueObject.field] = "$" + fieldValueObject.field; | ||
if (fieldValueObject.type == ClientSideFieldType.DATE) { | ||
this._buildProjectionForDateField(fieldValueObject, projection); | ||
} else { | ||
projection[fieldValueObject.uniqueName] = "$" + fieldValueObject.uniqueName; | ||
} | ||
} | ||
@@ -39,3 +43,3 @@ } | ||
} else { | ||
projectionQuery[filterObject.field] = "$" + filterObject.field; | ||
projectionQuery[filterObject.uniqueName] = "$" + filterObject.uniqueName; | ||
} | ||
@@ -45,3 +49,3 @@ | ||
const fieldValueObject: IRequestField = filterObject.value.field; | ||
projectionQuery[fieldValueObject.field] = "$" + fieldValueObject.field; | ||
projectionQuery[fieldValueObject.uniqueName] = "$" + fieldValueObject.uniqueName; | ||
} | ||
@@ -57,7 +61,7 @@ } | ||
fieldObject = rowsColumns[i] | ||
fieldReference = "$" + fieldObject.field; | ||
fieldReference = "$" + fieldObject.uniqueName; | ||
if (fieldObject.type == ClientSideFieldType.DATE) { | ||
this._buildProjectionForDateField(rowsColumns[i], projectionQuery); | ||
} else { | ||
projectionQuery[fieldObject.field] = fieldReference; | ||
projectionQuery[fieldObject.uniqueName] = fieldReference; | ||
} | ||
@@ -69,3 +73,3 @@ } | ||
let timestampObject: any = {}; | ||
const fieldUniquename: string = fieldValueObject.field; | ||
const fieldUniquename: string = fieldValueObject.uniqueName; | ||
if (fieldValueObject.interval == null) { | ||
@@ -72,0 +76,0 @@ projectionQuery[fieldUniquename] = {"$toLong": "$" + fieldUniquename}; |
@@ -11,5 +11,5 @@ export interface IRequestArgument { | ||
export interface IRequestField { | ||
field: string, | ||
uniqueName: string, | ||
type: string, | ||
interval?: string | ||
} |
@@ -62,3 +62,7 @@ import {APISchema} from './APISchema'; | ||
if (ClientSideFieldType.NUMBER == type) { | ||
shemaObject.aggregations = this._getAggregationList(); | ||
shemaObject.aggregations = this._getAggregationList(SupportedAggregations.numericFieldAggregations); | ||
} else if (ClientSideFieldType.DATE == type) { | ||
shemaObject.aggregations = this._getAggregationList(SupportedAggregations.dateFieldAggregations); | ||
} else { | ||
shemaObject.aggregations = this._getAggregationList(SupportedAggregations.nonNumericFieldAggregations); | ||
} | ||
@@ -68,5 +72,5 @@ return shemaObject; | ||
private _getAggregationList() { | ||
private _getAggregationList(supportedAggregations: any) { | ||
let aggregations = []; | ||
for (let keys in SupportedAggregations.aggregations) { | ||
for (let keys in supportedAggregations) { | ||
aggregations.push(keys.toString()); | ||
@@ -73,0 +77,0 @@ } |
/** | ||
* @class | ||
* @property {string} field The uniquename of the field | ||
* @property {string} uniqueName The uniquename of the field | ||
* @property {string} type The type of the field | ||
@@ -12,3 +12,3 @@ * @property {string} caption The caption of the field | ||
public field = ""; | ||
public uniqueName = ""; | ||
public type = ""; | ||
@@ -20,4 +20,4 @@ public caption = ""; | ||
constructor(field: string, type: string, caption: string, folder: string = "", aggregations: string[] = []) { | ||
this.field = field; | ||
constructor(uniqueName: string, type: string, caption: string, folder: string = "", aggregations: string[] = []) { | ||
this.uniqueName = uniqueName; | ||
this.type = type; | ||
@@ -30,3 +30,3 @@ this.caption = caption; | ||
public static fromObject(obj: any) { | ||
let field = ""; | ||
let uniqueName = ""; | ||
let type = ""; | ||
@@ -36,4 +36,4 @@ let caption = ""; | ||
let aggregations = []; | ||
if (obj.hasOwnProject("field")) { | ||
field = obj["field"]; | ||
if (obj.hasOwnProject("uniqueName")) { | ||
uniqueName = obj["uniqueName"]; | ||
} | ||
@@ -52,3 +52,3 @@ if (obj.hasOwnProject("type")) { | ||
} | ||
return new SchemaValueObject(field, type, caption, folder, aggregations); | ||
return new SchemaValueObject(uniqueName, type, caption, folder, aggregations); | ||
} | ||
@@ -58,3 +58,3 @@ | ||
let resultObject: any = { | ||
"field": this.field, | ||
"uniqueName": this.uniqueName, | ||
"type": this.type, | ||
@@ -66,5 +66,5 @@ "caption": this.caption | ||
} | ||
if (this.interval != null) { | ||
resultObject["interval"] = this.interval; | ||
} | ||
// if (this.interval != null) { | ||
// resultObject["interval"] = this.interval; | ||
// } | ||
if (this.aggregations.length > 0) { | ||
@@ -71,0 +71,0 @@ resultObject["aggregations"] = this.aggregations; |
export class SupportedAggregations { | ||
static aggregations: any = { | ||
static numericFieldAggregations: any = { | ||
"sum": "$sum", | ||
@@ -12,2 +12,12 @@ "average": "$avg", | ||
} | ||
static dateFieldAggregations: any = { | ||
"count": "$sum", | ||
"min": "$min", | ||
"max": "$max" | ||
} | ||
static nonNumericFieldAggregations: any = { | ||
"count": "$sum" | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
193736
3069