:sparkles:🎨 Add project zip download and remove lib/app folder

This commit is contained in:
brunosimon
2017-07-30 16:53:55 +02:00
parent 55c6204188
commit 46b9dac6f0
14 changed files with 1496 additions and 513 deletions
+123
View File
@@ -0,0 +1,123 @@
'use strict'
const Project = require('./project.js')
class Projects
{
constructor(_config)
{
this.config = _config
this.all = {}
this.setSocket()
}
setSocket()
{
// Save original socket and create a channel for projects
this.projectsSocket = this.config.socket.of('/projects')
// Connection event
this.projectsSocket.on('connection', (socket) =>
{
this.projectsSocket.emit('update_projects', this.describe())
if(this.config.debug >= 1)
{
console.log('projects > socket'.green.bold + ' - ' + 'connection'.cyan + ' - ' + socket.id.cyan)
}
})
}
createProject(_options)
{
// Create project
const project = new Project(this.config, _options)
let sameNameProject = this.all[project.slug]
// Try to found same name project
while(typeof sameNameProject !== 'undefined')
{
// Found new number
let lastNumber = sameNameProject.name.match(/\d+$/)
let newNumber = 2
if(lastNumber && lastNumber.length)
{
lastNumber = ~~lastNumber[0]
newNumber = lastNumber + 1
}
// Update project name
project.set_name(_name + ' ' + newNumber)
// Try to found
sameNameProject = this.all[project.slug]
}
// Save
this.all[project.slug] = project
// Emit
this.projectsSocket.emit('update_projects', this.describe())
// Return
return project
}
deleteProject(_slug)
{
// Set up
const project = this.all[_slug]
// Project found
if(typeof project !== 'undefined')
{
// Delete
delete this.all[_slug]
project.destructor()
// Emit
this.projectsSocket.emit('update_projects', this.describe())
}
}
getProjectBySlug(_slug)
{
// Find project
const project = this.all[_slug]
// Found
if(project)
{
return project
}
// Not found
return false
}
describe()
{
const result = {}
result.all = {}
for(const _slug in this.all)
{
const _project = this.all[_slug]
result.all[_slug] = {
slug: _project.slug,
name: _project.name,
filesCount: _project.files.count,
date: _project.date,
lastUpdateDate: _project.files.last_version_date
}
}
return result
}
}
module.exports = Projects