Skip to content

Commit 21a2914

Browse files
Merge pull request #145 from ritishgumber/master
_Event added
2 parents 4a089d5 + 961f7b8 commit 21a2914

File tree

3 files changed

+173
-12
lines changed

3 files changed

+173
-12
lines changed

services/app.js

+60-11
Original file line numberDiff line numberDiff line change
@@ -331,8 +331,8 @@ module.exports = function() {
331331
}
332332
if (tables.length > 0) {
333333
// filtering out private '_Tables'
334-
tables = tables.filter(function(table){
335-
return table.name[0] !== '_' ;
334+
tables = tables.filter(function(table) {
335+
return table.name[0] !== '_';
336336
});
337337
console.log("Tables found...");
338338
deferred.resolve(tables);
@@ -525,11 +525,13 @@ module.exports = function() {
525525
tableType = "device";
526526
} else if (tableName === "_File") {
527527
tableType = "file";
528+
} else if (tableName === "_Event") {
529+
tableType = "event";
528530
} else {
529531
tableType = "custom";
530532
}
531533

532-
if (tableType === 'user' || tableType === 'role' || tableType === 'device' || tableType === 'file') {
534+
if (tableType === 'user' || tableType === 'role' || tableType === 'device' || tableType === 'file' || tableType === 'event') {
533535
maxCount = 1;
534536
} else {
535537
maxCount = 99999;
@@ -543,7 +545,7 @@ module.exports = function() {
543545

544546
//dataType check.
545547
var defaultDataType = _getDefaultColumnWithDataType(tableType);
546-
var valid = _checkValidDataType(schema, defaultDataType);
548+
var valid = _checkValidDataType(schema, defaultDataType, tableType);
547549
if (!valid) {
548550
deferred.reject("Error : Invalid DataType Found.");
549551
return deferred.promise;
@@ -731,7 +733,8 @@ module.exports = function() {
731733
global.appService.upsertTable(appId, 'Role', tablesData.Role),
732734
global.appService.upsertTable(appId, 'Device', tablesData.Device),
733735
global.appService.upsertTable(appId, 'User', tablesData.User),
734-
global.appService.upsertTable(appId, '_File', tablesData._File)
736+
global.appService.upsertTable(appId, '_File', tablesData._File),
737+
global.appService.upsertTable(appId, '_Event', tablesData._Event)
735738
]);
736739
},
737740

@@ -880,7 +883,7 @@ module.exports = function() {
880883
var validated = false;
881884

882885
try {
883-
fileData = JSON.parse(file.toString());
886+
fileData = JSON.parse(file.toString());
884887
for (var k in fileData) {
885888
if (fileData[k].name == '_Schema') {
886889
validated = true;
@@ -916,9 +919,11 @@ module.exports = function() {
916919
for (var i in fileData) {
917920
(function(i) {
918921
global.mongoClient.db(appId).createCollection(fileData[i].name, function(err, col) {
919-
if(err) deferred.reject('Error creating Collections/Tables');
922+
if (err)
923+
deferred.reject('Error creating Collections/Tables');
920924
global.mongoClient.db(appId).collection(fileData[i].name, function(err, col) {
921-
if(err) deferred.reject('Error getting Collections/Tables');
925+
if (err)
926+
deferred.reject('Error getting Collections/Tables');
922927
for (var j in fileData[i].documents[0]) {
923928
(function(j) {
924929
col.insert(fileData[i].documents[0][j], function(err) {
@@ -957,7 +962,8 @@ module.exports = function() {
957962
deferred.reject(err);
958963
else
959964
deferred.resolve({username: username, password: password});
960-
});
965+
}
966+
);
961967
return deferred.promise;
962968
}
963969

@@ -1033,6 +1039,8 @@ function _getDefaultColumnList(type) {
10331039
defaultColumn.concat(['channels', 'deviceToken', 'deviceOS', 'timezone', 'metadata']);
10341040
} else if (type == 'file') {
10351041
defaultColumn.concat(['name', 'contentType', 'path', 'url', 'size']);
1042+
} else if (type == 'event') {
1043+
defaultColumn.concat(['user', 'type', 'name', 'data']);
10361044
}
10371045
return defaultColumn;
10381046

@@ -1045,7 +1053,7 @@ function _getDefaultColumnList(type) {
10451053
}
10461054
}
10471055

1048-
function _checkValidDataType(columns, deafultDataType) {
1056+
function _checkValidDataType(columns, deafultDataType, tableType) {
10491057

10501058
try {
10511059
var index;
@@ -1128,11 +1136,22 @@ function _checkValidDataType(columns, deafultDataType) {
11281136
}
11291137

11301138
//name for role table
1131-
if (key === 'name') {
1139+
if (key === 'name' && tableType === 'role') {
11321140
if (columns[index].relationType != null || columns[index].required != true || columns[index].unique != true || columns[index].dataType != 'Text')
11331141
return false;
11341142
}
11351143

1144+
//name for file table
1145+
if (key === 'name' && tableType === 'file') {
1146+
if (columns[index].relationType != null || columns[index].required != true || columns[index].unique != false || columns[index].dataType != 'Text')
1147+
return false;
1148+
}
1149+
//name for event table
1150+
if (key === 'name' && tableType === 'event') {
1151+
if (columns[index].relationType != null || columns[index].required != true || columns[index].unique != false || columns[index].dataType != 'Text')
1152+
return false;
1153+
}
1154+
11361155
//channels for device table
11371156
if (key === 'channels') {
11381157
if (columns[index].relationType != null || columns[index].required != false || columns[index].unique != false || columns[index].dataType != 'List')
@@ -1184,9 +1203,34 @@ function _checkValidDataType(columns, deafultDataType) {
11841203
return false;
11851204
}
11861205

1206+
//user for event table
1207+
if (key === 'user') {
1208+
if (columns[index].relationType != null || columns[index].required != true || columns[index].unique != false || columns[index].dataType != 'Relation')
1209+
return false;
1210+
}
1211+
1212+
//type for event table
1213+
if (key === 'type') {
1214+
if (columns[index].relationType != null || columns[index].required != true || columns[index].unique != false || columns[index].dataType != 'Text')
1215+
return false;
1216+
}
1217+
1218+
//type for event table
1219+
if (key === 'type') {
1220+
if (columns[index].relationType != null || columns[index].required != true || columns[index].unique != false || columns[index].dataType != 'Text')
1221+
return false;
1222+
}
1223+
1224+
//data for event table
1225+
if (key === 'data') {
1226+
if (columns[index].relationType != null || columns[index].required != true || columns[index].unique != false || columns[index].dataType != 'Object')
1227+
return false;
1228+
}
1229+
11871230
if (columns[index].isRenamable !== false || columns[index].isEditable !== false || columns[index].isDeletable !== false) {
11881231
return false;
11891232
}
1233+
11901234
defaultColumns.push(key);
11911235

11921236
} //end of for-loop
@@ -1332,6 +1376,11 @@ function _getDefaultColumnWithDataType(type) {
13321376
defaultColumn['url'] = 'URL';
13331377
defaultColumn['path'] = 'Text';
13341378
defaultColumn['contentType'] = 'Text';
1379+
} else if (type == 'event') {
1380+
defaultColumn['user'] = 'Relation';
1381+
defaultColumn['type'] = 'Text';
1382+
defaultColumn['name'] = 'Text';
1383+
defaultColumn['data'] = 'Object';
13351384
}
13361385
return defaultColumn;
13371386

services/tablesData.js

+113-1
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,7 @@ module.exports = {
411411
"_type": "column",
412412
"dataType": "Text",
413413
"required": true,
414-
"unique": true,
414+
"unique": false,
415415
"relatedTo": null,
416416
"relationType": null,
417417
"isDeletable": false,
@@ -467,5 +467,117 @@ module.exports = {
467467
"isRenamable": false,
468468
"editableByMasterKey": false
469469
}
470+
],
471+
_Event: [
472+
{
473+
"name": "id",
474+
"_type": "column",
475+
"dataType": "Id",
476+
"required": true,
477+
"unique": true,
478+
"relatedTo": null,
479+
"relationType": null,
480+
"isDeletable": false,
481+
"isEditable": false,
482+
"isRenamable": false,
483+
"editableByMasterKey": false,
484+
"defaultValue": null
485+
}, {
486+
"name": "updatedAt",
487+
"_type": "column",
488+
"dataType": "DateTime",
489+
"required": true,
490+
"unique": false,
491+
"relatedTo": null,
492+
"relationType": null,
493+
"isDeletable": false,
494+
"isEditable": false,
495+
"isRenamable": false,
496+
"editableByMasterKey": false
497+
}, {
498+
"name": "createdAt",
499+
"_type": "column",
500+
"dataType": "DateTime",
501+
"required": true,
502+
"unique": false,
503+
"relatedTo": null,
504+
"relationType": null,
505+
"isDeletable": false,
506+
"isEditable": false,
507+
"isRenamable": false,
508+
"editableByMasterKey": false
509+
}, {
510+
"name": "expires",
511+
"_type": "column",
512+
"dataType": "DateTime",
513+
"required": false,
514+
"unique": false,
515+
"relatedTo": null,
516+
"relationType": null,
517+
"isDeletable": false,
518+
"isEditable": false,
519+
"isRenamable": false,
520+
"editableByMasterKey": false
521+
}, {
522+
"name": "ACL",
523+
"_type": "column",
524+
"dataType": "ACL",
525+
"required": true,
526+
"unique": false,
527+
"relatedTo": null,
528+
"relationType": null,
529+
"isDeletable": false,
530+
"isEditable": false,
531+
"isRenamable": false,
532+
"editableByMasterKey": false
533+
}, {
534+
"name": "user",
535+
"_type": "column",
536+
"dataType": "Relation",
537+
"required": true,
538+
"unique": false,
539+
"relatedTo": "User",
540+
"relationType": null,
541+
"isDeletable": false,
542+
"isEditable": false,
543+
"isRenamable": false,
544+
"editableByMasterKey": false
545+
}, {
546+
"name": "type",
547+
"_type": "column",
548+
"dataType": "Text",
549+
"required": true,
550+
"unique": false,
551+
"relatedTo": null,
552+
"relationType": null,
553+
"isDeletable": false,
554+
"isEditable": false,
555+
"isRenamable": false,
556+
"editableByMasterKey": false
557+
}, {
558+
"name": "name",
559+
"_type": "column",
560+
"dataType": "Text",
561+
"required": true,
562+
"unique": false,
563+
"relatedTo": null,
564+
"relationType": null,
565+
"isDeletable": false,
566+
"isEditable": false,
567+
"isRenamable": false,
568+
"editableByMasterKey": false
569+
}, {
570+
"name": "data",
571+
"_type": "column",
572+
"dataType": "Object",
573+
"required": true,
574+
"unique": false,
575+
"relatedTo": null,
576+
"relationType": null,
577+
"isDeletable": false,
578+
"isEditable": false,
579+
"isRenamable": false,
580+
"editableByMasterKey": false
581+
}
470582
]
471583
};

test.html

Whitespace-only changes.

0 commit comments

Comments
 (0)