Skip to content

Instantly share code, notes, and snippets.

@59naga
Last active August 29, 2015 14:20
Show Gist options
  • Save 59naga/eea461712ad20a5c54e6 to your computer and use it in GitHub Desktop.
Save 59naga/eea461712ad20a5c54e6 to your computer and use it in GitHub Desktop.
Implement the REST by https://github.com/dchester/epilogue

Setup

$ boot2docker
$ docker run --name sandbox -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql
# sandbox

$ docker exec -it sandbox mysql -u root -p
# Type: root

mysql $ create database test;
# Query OK, 1 row affected (0.00 sec)

mysql $ exit
# Bye

$ boot2docker ip
# 192.168.59.103

$ npm install # Use package.json
$ npm install coffee-script --global

Start

$ coffee app.coffee
# listening at http://localhost:59798

References

# Dependencies
Sequelize= require 'sequelize'
express= require 'express'
bodyParser= require 'body-parser'
epilogue= require 'epilogue'
# Environment
port= 59798
# Setup sequelize
sequelize= new Sequelize 'test','root','root',
host: '192.168.59.103'
port: '3306'
define:
charset:'utf8'
collate:'utf8_general_ci'
logging: off
User= sequelize.define 'User',
name: Sequelize.STRING
birthday: Sequelize.DATE
sequelize
.sync force: on
.then -> appBoot()
# Setup express
app= express()
app.use bodyParser.json()
app.use express.static './'
appBoot= ->
app.listen port,->
console.log 'listening at http://localhost:%s',port
# Setup epilogue
epilogue.initialize {sequelize,app}
users= epilogue.resource
model: User
endpoints: [
'/users'
'/users/:id'
]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>public/index.html</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.15/angular.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.15/angular-resource.js"></script>
<script>
angular.module('myApp',['ngResource'])
.run(function($rootScope,$resource){
var User= $resource('users/:id',null,{
update:{
method:'PUT',params:{id:'@id'}
},
});
$rootScope.i= 1;
$rootScope.query= function(){
$rootScope.result= User.query();
}
$rootScope.get= function(){
$rootScope.result= User.get({id:$rootScope.i});
}
$rootScope.update= function(){
$rootScope.result= User.get({id:$rootScope.i},function(user){
user.name= $rootScope.name;
return user.$update();
});
}
$rootScope.remove= function(){
$rootScope.result= User.remove({id:$rootScope.i});
$rootScope.i--;
}
$rootScope.save= function(){
var user= new User({name:$rootScope.name});
user.$save()
.then(function(result){
$rootScope.result= result;
$rootScope.i= parseInt(result.id);
})
}
});
</script>
</head>
<body ng-app="myApp">
<nav>
<a href="#" ng-click="query()">List</a>
<a href="#" ng-click="get()">Read /{{i}}</a>
<a href="#" ng-click="remove()">Delete /{{i}}</a>
</nav>
<form>
<input ng-model="name" placeholder="Type who name" autofocus>
<button ng-click="save()">Create</button>
<button ng-click="update()">Update /{{i}}</button>
</form>
<h2>result</h2>
<pre>{{result | json:2}}</pre>
</body>
</html>
{
"name": "epilogue-sandbox",
"private": true,
"dependencies": {
"body-parser": "^1.12.3",
"epilogue": "^0.5.1",
"express": "^4.12.3",
"mysql": "^2.6.2",
"sequelize": "^2.1.0"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment