Skip to content

Commit 74cbdce

Browse files
committed
Create new models
1 parent f42b525 commit 74cbdce

File tree

8 files changed

+139
-18
lines changed

8 files changed

+139
-18
lines changed

common/models/review.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
'use strict';
2+
3+
module.exports = function(Review) {
4+
5+
};

common/models/review.json

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"name": "Review",
3+
"base": "PersistedModel",
4+
"idInjection": true,
5+
"forceId": false,
6+
"options": {
7+
"validateUpsert": true
8+
},
9+
"properties": {
10+
"date": {
11+
"type": "date",
12+
"required": true
13+
},
14+
"rating": {
15+
"type": "number"
16+
},
17+
"comments": {
18+
"type": "string",
19+
"required": true
20+
}
21+
},
22+
"validations": [],
23+
"relations": {},
24+
"acls": [],
25+
"methods": {}
26+
}

common/models/reviewer.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
'use strict';
2+
3+
module.exports = function(Reviewer) {
4+
5+
};

common/models/reviewer.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"name": "Reviewer",
3+
"base": "User",
4+
"idInjection": true,
5+
"options": {
6+
"validateUpsert": true
7+
},
8+
"properties": {},
9+
"validations": [],
10+
"relations": {},
11+
"acls": [],
12+
"methods": {}
13+
}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
"posttest": "npm run lint && nsp check"
99
},
1010
"dependencies": {
11+
"async": "^2.1.2",
1112
"compression": "^1.0.3",
1213
"cors": "^2.5.2",
1314
"helmet": "^1.3.0",

server/boot/create-sample-models.js

Lines changed: 78 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,85 @@
11
'use strict';
22

3+
var async = require('async');
34
module.exports = function(app) {
4-
app.dataSources.mysqlDs.automigrate('CoffeeShop', function(err) {
5+
//data sources
6+
var mongoDs = app.dataSources.mongoDs;
7+
var mysqlDs = app.dataSources.mysqlDs;
8+
//create all models
9+
async.parallel({
10+
reviewers: async.apply(createReviewers),
11+
coffeeShops: async.apply(createCoffeeShops),
12+
}, function(err, results) {
513
if (err) throw err;
6-
7-
app.models.CoffeeShop.create([{
8-
name: 'Bel Cafe',
9-
city: 'Vancouver',
10-
}, {
11-
name: 'Three Bees Coffee House',
12-
city: 'San Mateo',
13-
}, {
14-
name: 'Caffe Artigiano',
15-
city: 'Vancouver',
16-
}], function(err, coffeeShops) {
17-
if (err) throw err;
18-
19-
console.log('Models created: \n', coffeeShops);
14+
createReviews(results.reviewers, results.coffeeShops, function(err) {
15+
console.log('> models created sucessfully');
2016
});
2117
});
18+
//create reviewers
19+
function createReviewers(cb) {
20+
mongoDs.automigrate('Reviewer', function(err) {
21+
if (err) return cb(err);
22+
var Reviewer = app.models.Reviewer;
23+
Reviewer.create([{
24+
email: 'foo@bar.com',
25+
password: 'foobar'
26+
}, {
27+
email: 'john@doe.com',
28+
password: 'johndoe'
29+
}, {
30+
email: 'jane@doe.com',
31+
password: 'janedoe'
32+
}], cb);
33+
});
34+
}
35+
//create coffee shops
36+
function createCoffeeShops(cb) {
37+
mysqlDs.automigrate('CoffeeShop', function(err) {
38+
if (err) return cb(err);
39+
var CoffeeShop = app.models.CoffeeShop;
40+
CoffeeShop.create([{
41+
name: 'Bel Cafe',
42+
city: 'Vancouver'
43+
}, {
44+
name: 'Three Bees Coffee House',
45+
city: 'San Mateo'
46+
}, {
47+
name: 'Caffe Artigiano',
48+
city: 'Vancouver'
49+
}, ], cb);
50+
});
51+
}
52+
//create reviews
53+
function createReviews(reviewers, coffeeShops, cb) {
54+
mongoDs.automigrate('Review', function(err) {
55+
if (err) return cb(err);
56+
var Review = app.models.Review;
57+
var DAY_IN_MILLISECONDS = 1000 * 60 * 60 * 24;
58+
Review.create([{
59+
date: Date.now() - (DAY_IN_MILLISECONDS * 4),
60+
rating: 5,
61+
comments: 'A very good coffee shop.',
62+
publisherId: reviewers[0].id,
63+
coffeeShopId: coffeeShops[0].id,
64+
}, {
65+
date: Date.now() - (DAY_IN_MILLISECONDS * 3),
66+
rating: 5,
67+
comments: 'Quite pleasant.',
68+
publisherId: reviewers[1].id,
69+
coffeeShopId: coffeeShops[0].id,
70+
}, {
71+
date: Date.now() - (DAY_IN_MILLISECONDS * 2),
72+
rating: 4,
73+
comments: 'It was ok.',
74+
publisherId: reviewers[1].id,
75+
coffeeShopId: coffeeShops[1].id,
76+
}, {
77+
date: Date.now() - (DAY_IN_MILLISECONDS),
78+
rating: 4,
79+
comments: 'I go here everyday.',
80+
publisherId: reviewers[2].id,
81+
coffeeShopId: coffeeShops[2].id,
82+
}], cb);
83+
});
84+
}
2285
};

server/datasources.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@
1313
"connector": "mysql"
1414
},
1515
"mongoDs": {
16-
"name": "mongoDs",
17-
"connector": "mongodb",
1816
"host": "demo.strongloop.com",
1917
"port": 27017,
2018
"database": "getting_started_intermediate",
2119
"username": "demo",
22-
"password": "L00pBack"
20+
"password": "L00pBack",
21+
"name": "mongoDs",
22+
"connector": "mongodb"
2323
}
2424
}

server/model-config.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,13 @@
3535
"CoffeeShop": {
3636
"dataSource": "mysqlDs",
3737
"public": true
38+
},
39+
"Review": {
40+
"dataSource": "mongoDs",
41+
"public": true
42+
},
43+
"Reviewer": {
44+
"dataSource": "mongoDs",
45+
"public": true
3846
}
3947
}

0 commit comments

Comments
 (0)