Skip to content

Instantly share code, notes, and snippets.

@chilts
Last active December 11, 2015 23:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chilts/4677818 to your computer and use it in GitHub Desktop.
Save chilts/4677818 to your computer and use it in GitHub Desktop.
models = require './'
sql = require 'sql'
crypto = require 'crypto'
Downstairs = require('downstairs').Downstairs
Table = require('downstairs').Table
env = require './../config/env'
uuid = require 'node-uuid'
logging = require './../lib/logging'
moment = require 'moment'
userRoleMapping = sql.Table.define(
name: 'user_roles'
quote: true
columns: ['id'
'user_id'
'role_id'
'created_at'
'updated_at'
]
)
validations =
userRoleExists: (cb) ->
models.UserRole.find( { user_id : @user_id, role_id : @role_id }, (err, role) ->
if role
cb(null, 'This user/role has already been added')
else
cb(null, null)
)
UserRole = Table.model('UserRole', userRoleMapping, validations)
UserRole.findOrCreate = (userRole, cb) ->
UserRole.find({ user_id : userRole.user_id, role_id : userRole.role_id }, (err, dbRole) ->
unless dbRole
UserRole.create(userRole, (err, dbRole) ->
cb(err, dbRole)
)
else
cb(null, dbRole)
)
UserRole.createUsingRoleName = (user_id, roleName, cb) ->
models.Role.find({ name : roleName }, (err, dbRole) ->
if dbRole
UserRole.create({ user_id : user_id, role_id : dbRole.id}, (err, userRole) ->
cb(err, userRole)
)
else
cb('Role not found (' + roleName + ')')
)
module.exports = UserRole
User = require './user'
UserToken = require './user_token'
Role = require './role'
UserRole = require './user_role'
FacebookUID = require './facebook_uid'
exports.User = User
exports.UserToken = UserToken
exports.Role = Role
exports.UserRole = UserRole
exports.FacebookUID = FacebookUID
User.hasMany(UserRole)
UserRole.belongsTo(User)
UserRole.belongsTo(Role)
console.log(User)
withRoles = (user, cb) ->
console.log('withRoles() entry')
UserRole.findAll(
user_id: user.id
(err, userRoles) ->
user.user_roles = userRoles
withUsers(userRoles, cb)
)
withUsers = (userRoles, cb) ->
async.forEach(userRoles, withUser, cb)
withUser = (record, cb) ->
record.get('user', cb)
console.log toString.call(User)
User.when('withRoles', withRoles)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment