diff --git a/exercise/index.html b/exercise/index.html
new file mode 100644
index 0000000000..781bf8b31f
--- /dev/null
+++ b/exercise/index.html
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+ JS Bin
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/exercise/queries.js b/exercise/queries.js
new file mode 100644
index 0000000000..9d546108c4
--- /dev/null
+++ b/exercise/queries.js
@@ -0,0 +1,87 @@
+var Player = Parse.Object.extend('Player');
+var Team = Parse.Object.extend('Team');
+
+var q = new Parse.Query('Player');
+q.limit(1000);
+q.descending('dateOfBirth');
+q.first()
+ .then(function(player){
+ console.log('The youngest player is ' + player.get('name'));
+ });
+
+
+var q = new Parse.Query('Player');
+q.limit(1000);
+q.descending('jerseyNumber');
+q.first()
+ .then(function(player){
+ console.log('Player with the highest jersey number is ' +
+ player.get('jerseyNumber') + ' and his name is ' + player.get('name'));
+ });
+
+var q = new Parse.Query('Player');
+q.equalTo('position', 'Keeper');
+q.equalTo('nationality', 'Wales');
+q.find()
+ .then(function(players) {
+ console.log('There are ' + players.length + ' Welsh keepers');
+});
+
+var q = new Parse.Query('Player');
+q.descending('marketValue');
+q.skip(10);
+q.limit(3);
+q.find()
+ .then(function(players){
+ console.log('The 11th, 12th and 13th most expensive players are:');
+ for(var i = 0;i < players.length; i++) {
+ console.log(players[i].get('name') + ' who cost ' + players[i].get('marketValue'));
+ }
+ });
+
+var q = new Parse.Query("Player");
+q.notContainedIn("teamCode", ["MCFC", "SCFC", "LFC"]);
+q.count()
+ .then(function(count){
+ console.log(count + " players are not playing for MCFC, SCFC or LFC");
+ });
+
+var q1 = new Parse.Query('Player');
+q1.lessThan('jerseyNumber', 10);
+
+var q2 = new Parse.Query('Player');
+q2.greaterThan('jerseyNumber', 50);
+
+var queriedPlayers = [];
+
+var compoudQuery = Parse.Query.or(q1, q2);
+compoudQuery.find()
+ .then(function(players){
+ console.log('Players whose number is less than 10 or more than 50 are:');
+ for(var i = 0; i < players.length; i++){
+ console.log(players[i].get('name') + ' ('+ players[i].get('jerseyNumber')+ ')');
+ queriedPlayers.push(players);
+ }
+ });
+
+console.log(queriedPlayers);
+
+
+var teamQ = new Parse.Query('Team');
+teamQ.startsWith('name', 'Man');
+teamQ.find()
+ .then(function(teams){
+ console.log(teams.length);
+ });
+
+var playerQ = new Parse.Query('Player');
+playerQ.equalTo('position', 'Keeper');
+playerQ.matchesQuery('team', teamQ);
+playerQ.limit(1000);
+playerQ.find()
+ .then(function(players){
+ for(var i = 0; i < players.length; i++){
+ console.log(players[i].get('name') + ' (' + players[i].get('teamCode') + '), ' + players[i].get('position'));
+ }
+ });
+
diff --git a/exercise/run.js b/exercise/run.js
new file mode 100644
index 0000000000..55712e6d50
--- /dev/null
+++ b/exercise/run.js
@@ -0,0 +1,161 @@
+
+
+Parse.initialize("fo234155135dgwefb");
+Parse.serverURL = "https://parse-server-exmpl.herokuapp.com/parse";
+
+
+// var Customer = Parse.Object.extend("Customer");
+// var customer = new Customer();
+//
+// var data = {
+//
+// 'name': 'Primoz',
+// 'surname': 'Cvenkelj',
+// 'profession': 'js guru'
+//
+// };
+//
+// customer.save(data, {
+//
+// success: function(user){
+//
+// console.log("A new user with the id " + user.id + " was saved!");
+//
+// var q = new Parse.Query("Customer");
+// q.get(user.id, {
+//
+// success: function(user) {
+//
+// console.log("A user with the id " + user.id + " was retrieved!");
+//
+// user.set('name', 'Cecko');
+// user.set('age', 30);
+//
+// user.save(null, {
+//
+// success: function(user) {
+//
+// console.log("A user with the id " + user.id + " was updated!");
+//
+// user.destroy({
+//
+// success: function(user) {
+//
+// console.log('User ' +user.id +'was deleted');
+//
+// },
+// error: function(err) {
+//
+//
+// }
+// });
+//
+// },
+//
+// error: function(user, err) {
+//
+// console.log(err);
+//
+// }
+//
+// });
+//
+// },
+//
+// error: function(user, err) {
+//
+// console.log(err);
+// }
+//
+// });
+//
+// },
+// error: function(user, err){
+//
+// console.log(err);
+//
+// }
+//
+// });
+
+/*var Order = Parse.Object.extend('Order');
+var order = new Order();
+
+var orderData = {
+
+ order_id: 'OI_1234',
+ amount: 112.3,
+ date: Date.now()
+
+};
+
+order.save(orderData)
+ .then(function success(obj){
+ console.log('You created the order' + obj.id+ '!');
+ }, function error(obj, err){
+ console.log(err);
+});
+
+
+var Item = Parse.Object.extend('Item');
+var items = [
+
+ {
+ item_id: 1,
+ name: 'hat',
+ cost: 12.3,
+ order: order
+
+ },
+ {
+ item_id: 2,
+ name: 'shoes',
+ cost: 50,
+ order: order
+
+ },
+ {
+ item_id: 3,
+ name: 'glove',
+ cost: 50,
+ order: order
+
+ }
+
+
+];
+
+for(var i = 0; i < items.length; i++) {
+ var item = new Item();
+ item.save(items[i])
+ .then(function success(item) {
+ console.log('Item created with id' + item.id);
+ }, function error(item, err) {
+ console.log(err);
+ });
+}*/
+
+
+function onComplete(){
+
+ var promise = new Parse.Promise();
+
+ setTimeout(function(){
+
+ console.log('Timeout set');
+ promise.resolve('Promise resolved');
+
+ }, 2000);
+
+ return promise;
+};
+
+onComplete()
+ .then(function success(message){
+
+ console.log(message);
+ console.log('Now its time to go to work');
+
+ });
+
+
diff --git a/package.json b/package.json
index a736d61500..0bcbe6af85 100644
--- a/package.json
+++ b/package.json
@@ -1,4 +1,4 @@
-{
+ {
"name": "parse-server-codecraft",
"version": "1.4.0",
"description": "An example Parse API server using the parse-server module",