Files
keppler/site/models/projects.class.js
T

77 lines
1.2 KiB
JavaScript

'use strict'
let Project = require( './project.class.js' )
class Projects
{
constructor( options )
{
this.all = {}
this.set_socket( options.socket )
}
set_socket( socket )
{
// Set up
this.original_socket = socket
this.socket = this.original_socket.of( '/projects' )
// Connection event
this.socket.on( 'connection', ( socket ) =>
{
console.log( 'socket projects'.green.bold + ' - ' + 'connect'.cyan + ' - ' + socket.id.cyan )
this.socket.emit( 'update_projects', this.describe() )
} );
}
create_project( _name )
{
// Create project
let project = new Project( { name: _name, socket: this.original_socket } )
// Save
this.all[ project.slug ] = project
// Emit
this.socket.emit( 'update_projects', this.describe() )
// Return
return project
}
get_project_by_slug( _slug )
{
// Find project
let project = this.all[ _slug ]
// Found
if( project )
return project
// Not found
return false
}
describe()
{
let result = {}
result.all = {}
for( let _slug in this.all )
{
let _project = this.all[ _slug ]
result.all[ _slug ] = {
slug: _project.slug,
name: _project.name
}
}
return result
}
}
module.exports = Projects