Skip to content

Instantly share code, notes, and snippets.

View oscaroceguera's full-sized avatar
🏠
Working from home

Oscar E. Oceguera Bibriesca oscaroceguera

🏠
Working from home
View GitHub Profile
module.exports = {
client : 'mysql',
connection : {
host : 'database_host',
user : 'database_user',
password : 'database_password',
database : 'database_name',
charset : 'utf8',
port : database_port
}
var configDB = require('../../knexfile');
var Knex = require('knex')(configDB);
var Bookshelf = require('bookshelf')(Knex);
module.exports = Bookshelf;
var Schema = {
users : {
id : {type : 'increments', nullable: false, primary: true},
email : {type : 'string', maxlength: 254, nullable: false, unique: true},
name : {type : 'string', maxlength: 150, nullable: false},
created_at: {type: 'dateTime', nullable: false},
updated_at: {type: 'dateTime', nullable: true}
},
categories: {
id: {type: 'increments', nullable: false, primary: true},
var Bookshelf = require('../commons/bookshelf');
var Schema = require('../schema/schema');
var sequence = require('when/sequence');
var _ = require('lodash');
function createTable(tableName) {
return knex.schema.createTable(tableName, function (table) {
var column;
@oscaroceguera
oscaroceguera / category.js
Last active November 27, 2015 23:59
category model
var Bookshelf = require('../commons/bookshelf');
Bookshelf.plugin('registry');
var Post = require('./post');
var Category = Bookshelf.Model.extend({
tableName: 'categories',
hasTimestamps: true,
posts : function () {
return this.hasMany('Post');
@oscaroceguera
oscaroceguera / post.js
Last active November 28, 2015 00:01
post model
var Bookshelf = require('../commons/bookshelf');
Bookshelf.plugin('registry')
var Category = require('./category')
var Tag = require('./tag')
var User = require('./user')
var Post = Bookshelf.Model.extend({
tableName: 'posts',
@oscaroceguera
oscaroceguera / tag.js
Created November 27, 2015 23:59
tag model
var Bookshelf = require('../commons/bookshelf');
Bookshelf.plugin('registry');
var Post = require('./post');
var Tag = Bookshelf.Model.extend({
tableName: 'tags',
posts : function(){
return this.belongsToMany('Post')
}
});

Endpoints

Operaciones básicas CRUD en los siguientes recursos: users, categories, y posts.

Users

  • GET /users - fetch all users
  • POST /user - create a new user
  • GET /user/:id - fetch a single user
  • PUT /user/:id - update user
  • DELETE /user/:id - delete user
@oscaroceguera
oscaroceguera / user.js
Created November 28, 2015 00:07
User model
var Bookshelf = require('../commons/bookshelf');
var User = Bookshelf.Model.extend({
tableName: 'users',
hasTimestamps: true
});
module.exports = User;
@oscaroceguera
oscaroceguera / categories-collection.js
Created November 28, 2015 00:10
Categories collections
var Bookshelf = require('../commons/bookshelf');
var Category = require('../models/category');
var Categories = Bookshelf.Collection.extend({
model : Category
});
module.exports = Categories;