Skip to content

Commit ea2380c

Browse files
committed
adds record model, pushes and retrieves records from MongoLab
1 parent 0c1749c commit ea2380c

File tree

6 files changed

+127
-5
lines changed

6 files changed

+127
-5
lines changed

client/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,5 +68,6 @@
6868

6969
<!-- Angular Services -->
7070
<script src="scripts/services/APIService.js"></script>
71+
<script src="scripts/services/LocalService.js"></script>
7172
</body>
7273
</html>

client/scripts/controllers/AdminCtrl.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
// 'save-complete' notifies that we have persisted the data to our own local storage
88

99
angular.module('frontendEngineeringChallengeApp')
10-
.controller('AdminCtrl', function ($scope, $rootScope, $timeout, $interval, APIService) {
10+
.controller('AdminCtrl', function ($scope, $rootScope, $timeout, $interval, APIService, LocalService) {
1111

1212
// After a successful API call, we will replace our API objects
1313
var receivedPostsData = false;
@@ -16,7 +16,8 @@
1616
var receivedLikesData = false;
1717
$scope.APIlikesData = undefined;
1818

19-
$scope.spreadsheet = [];
19+
// Attempt to get past records
20+
LocalService.getRecords();
2021

2122
// Persist the data received from API to our own storage
2223
function persistData(data){
@@ -26,8 +27,12 @@
2627
$timeout(function(){
2728
// Persist record and push record onto our spreadsheet
2829
var record = constructRecordObj();
30+
// Get it to show locally
2931
$scope.spreadsheet.push(record);
3032

33+
// Persist it to our Mongo Database
34+
LocalService.postRecord(record);
35+
3136
$scope.lastTimestamp = record.time;
3237
$scope.$broadcast('save-complete');
3338
}, 2000);
@@ -92,6 +97,13 @@
9297

9398
});
9499

100+
// When we receive our spreadsheet object
101+
$rootScope.$on('spreadsheet-data', function(){
102+
console.log('this is our spreadsheet object');
103+
$scope.spreadsheet = LocalService.spreadsheet().records;
104+
console.log($scope.spreadsheet);
105+
})
106+
95107

96108
/***** Helper Functions *****/
97109

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
// This service allows us to persist information to our own MongoDB
2+
3+
(function(angular){
4+
5+
angular.module('frontendEngineeringChallengeApp')
6+
.service('LocalService', function($http, $q, $rootScope){
7+
8+
// Initializations
9+
var spreadsheetObj = [];
10+
11+
12+
function handleError(response) {
13+
// todo: Handle Errors
14+
console.log('handling error for our own data persistance');
15+
}
16+
17+
function handleSuccess(response) {
18+
console.log('successly received spreadsheet object');
19+
20+
// Return spreadsheet array for our admin view
21+
spreadsheetObj = response.data;
22+
23+
// Finally, broadcast a singular data-received event
24+
$rootScope.$broadcast('spreadsheet-data');
25+
}
26+
27+
// Expose Local Methods for our own Data Peristence
28+
return {
29+
spreadsheet: function spreadsheet(){
30+
return spreadsheetObj;
31+
},
32+
// Pulls Data For Posts and Likes
33+
getRecords: function getRecords(getRecords){
34+
var request = $http({
35+
method: "get",
36+
url: '/records',
37+
params: {
38+
action: "get"
39+
}
40+
});
41+
42+
return( request.then(handleSuccess, handleError) )
43+
},
44+
postRecord: function postRecord(recordObj){
45+
var request = $http({
46+
method: "post",
47+
url: '/record',
48+
params: {
49+
action: "post"
50+
},
51+
// attach the data name so we know which data object the response belongs to
52+
data: recordObj
53+
});
54+
}
55+
}
56+
});
57+
}(window.angular));

server/app.js

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,24 @@ var express = require('express');
1111
var mongoose = require('mongoose');
1212
var config = require('./config/environment');
1313

14-
// Connect to database
15-
mongoose.connect(config.mongo.uri, config.mongo.options);
16-
1714
// Setup server
1815
var app = express();
1916
var server = require('http').createServer(app);
2017
require('./config/express')(app);
2118
require('./routes')(app);
19+
app.set('env', 'development');
20+
21+
// Models
22+
var Record = require('../server/models/record.js');
23+
24+
// Connect to database
25+
var options = {
26+
server: {
27+
socketOptions: { keepAlive: 1 }
28+
}
29+
};
30+
mongoose.connect('mongodb://narwhaldo:[email protected]:47950/impressions', options);
31+
2232

2333
// Start server
2434
server.listen(config.port, config.ip, function () {

server/models/record.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
var mongoose = require('mongoose');
2+
3+
var recordSchema = mongoose.Schema({
4+
date: String,
5+
time: String,
6+
id: String
7+
});
8+
9+
var Record = mongoose.model('Record', recordSchema);
10+
module.exports = Record;

server/routes.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
'use strict';
66

77
var errors = require('./components/errors');
8+
var Record = require('./models/record.js');
89

910
module.exports = function(app) {
1011

@@ -17,6 +18,37 @@ module.exports = function(app) {
1718
res.render('partials/' + name);
1819
});
1920

21+
app.get('/records', function(req, res){
22+
var records = Record.find()
23+
.limit(20)
24+
.exec(function(err, records){
25+
// create the json data for our API endpoint
26+
res.json({
27+
records: records
28+
});
29+
});
30+
31+
});
32+
33+
app.post('/record', function(req, res){
34+
var id = req.body.id;
35+
var time = req.body.time;
36+
var datetime = req.body.date;
37+
38+
// Create Blazon object
39+
var recordObj = new Record({
40+
id: id,
41+
time: time,
42+
date: datetime
43+
});
44+
45+
console.log(recordObj);
46+
47+
// Save the Blazon
48+
recordObj.save();
49+
50+
});
51+
2052
// All other routes should redirect to the index.html
2153
app.route('/*')
2254
.get(function(req, res) {

0 commit comments

Comments
 (0)