0.4.3 • Published 9 years ago
gozy v0.4.3
gozy
Go crazy
Install
npm install -g gozy
cd NewProject
gozy init
node .
Main Usge
var http = require('http').createServer().listen(80),
gozy = require('gozy');
gozy.bindModels('application/model/')
.bindControllers('application/controller')
.bindMongo('MyMongoDB', {
'host': 'localhost',
'port': 27017,
"username": "username",
"password": "password",
"database": "database"
})
.bindRedis('MyRedis', {
'host': 'localhost',
'port': 6379,
"password": "password"
})
.bindMySQL('MyMySQL', {
'host': 'localhost',
'port': 3306,
"username": "username",
"password": "password",
"database": "database"
})
.bindMailer('MyMailer', { /* this option is used for nodemailer package option */
'host': 'smtp.host.com',
secureConnection: false,
port: 587,
auth: {
user: 'sender@mail.me',
pass: 'password!!'
}
})
.enableWebSocket()
.listen(http);
View Usage
require('gozy').View(this, {
'accept-url': /^\/path\/to\/resource$/,
'accept-method': 'GET'
});
this.on('initialize', function () {
});
this.on('prerequest', function (request, response, done) {
return done({ authentication: true });
});
this.on('*/*', function (request, response, preq_args) {
if(preq_args.authentication)
return response.OK().commit();
else
return response.Forbidden().commit();
});
MongoDB Model Usage
require('gozy').Model(this, 'MyMongoDB', {
defaults: {
Name: null,
Mode: 0
}
});
this.on('initialize', function (model) {
model.prototype.setName = setName;
});
MySQL Model Usage
require('gozy').Model(this, 'MyMySQL', {
schema: {
id: { Id: true, type: 'INTEGER' },
Name: { type: 'STRING' },
Password: { type: 'BINARY' },
DateLastUpdated: { type: 'TIMESTAMP' }
}
});
this.on('initialize', function (model) {
model.prototype.setName = setName;
});
Redis Model Usage
MyStringModel.js
require('gozy').Model(this, 'MyRedis', {
type: 'STRING',
defaults: {
Name: { type: 'OBJECT' }
}
});
this.on('initialize', function (model) {
});
exports.createNew = function (cb) {
var model = exports.MyStringModel({ name: { prop1: 'value1 will be converted to JSON', prop2: 'value2 will be converted to JSON' });
model.key('this_is_Redis_key');
model.setnx(function (err, saved) {
if(err) return cb(err);
if(saved > 0) return cb(null, model);
else return cb(null, null);
});
};
MyHashModel.js
require('gozy').Model(this, 'MyRedis', {
type: 'HASH',
defaults: {
Name: { type: 'STRING' }
Value: { type: 'INTEGER' }
}
});
this.on('initialize', function (model) {
});
exports.createNew = function (cb) {
var model = exports.MyHashModel({
Name: 'value1',
Value: 11
});
model.key('this_is_the_key');
/* will store on redis as a key, "MyHashModel.this_is_the_key" */
model.hmset(function (err) {
if(err) return cb(err);
console.log(model);
return cb(null, model);
});
};
exports.findModel = function (key, cb) {
exports.hgetall(key, cb);
};
Mailer Usage
require('gozy').Mailer(this, 'MyMailer', {
template: 'application/server/mailer/templates/MailTemplate.html', /* used for underscore's template function */
from: 'sender@mail.me'
});
this.on('initialize', function () {
});
this.on('mail', function (body, template_params, send) {
console.log(body, template_params);
send(template_params.ReceiverMail, template_params.SenderMail + ' welcomes you', body);
});
Template View Usage
require('gozy').View(this, {
template: {
'ko-kr': 'application/view/templates/TemplateA.ko-kr.html',
'en-us': 'application/view/templates/TemplateB.en-us.html'
},
default_template: 'ko-kr'
});
this.on('initialize', function () {
});
Content View Usage
require('gozy').View(this, {
content: content,
mime: 'application/json'
});
function content(args) {
return JSON.stringify(args);
}
Content View with Backbone Model provider
require('gozy').View(this, {
'accept-url': /^\/path$/,
'accept-method': 'GET',
'content': content,
'mime': 'application/json',
'backbone': {
Type: 'model',
RequireJS: true,
ModelOptions: {
idAttribute: 'id'
}
}
});
function content(args) {
return JSON.stringify(args);
}
Content View with Backbone Collection provider
Note, you can override Backbone Collection's parse function
require('gozy').View(this, {
'accept-url': /^\/path$/,
'accept-method': 'GET',
'content': content,
'mime': 'application/json',
'backbone': {
parse: function (response) {
this.next_search_url = response.next_search_url;
return response.data;
},
Type: 'collection',
RequireJS: true,
ModelOptions: {
idAttribute: 'id'
}
}
});
function content(args) {
return JSON.stringify(args);
}
Usage of Gozy RMI through Backbone Collection
require('gozy').View(this, {
'accept-url': /^\/path\/f$/,
'accept-method': 'GET',
'content': content,
'mime': 'application/json',
'backbone': {
Type: 'collection',
RequireJS: true,
ModelOptions: {
idAttribute: 'id'
},
CollectionOptions: {
parse: function (response) {
this.NextSearchUrl = response.next_search_url;
return response.data;
},
AcceptRMI: ['rmi_test']
}
}
});
this.on('rmi_test', function (request, response) {
return response('My Request is successfully completed');
});
function content(args) {
return JSON.stringify(args);
}
License
MIT License
0.4.3
9 years ago
0.4.1
9 years ago
0.4.0
9 years ago
0.3.2
9 years ago
0.3.1
9 years ago
0.3.0
9 years ago
0.2.5
9 years ago
0.2.4
10 years ago
0.2.3
10 years ago
0.2.2
10 years ago
0.2.1
10 years ago
0.2.0
10 years ago
0.1.6
10 years ago
0.1.5
10 years ago
0.1.3
10 years ago
0.1.2
10 years ago
0.1.1
10 years ago
0.1.0
10 years ago
0.0.9
10 years ago
0.0.7
10 years ago
0.0.6
10 years ago
0.0.5
10 years ago
0.0.4
10 years ago
0.0.3
10 years ago
0.0.2
10 years ago
0.0.0
11 years ago