'use strict';
/**
* Проект
*
* Базовая схема для всех элементов системы
* Изменение данной схемы влияет на все элементы системы
*
*/
var mongoose = require('mongoose');
var extend = require('mongoose-schema-extend');
var Schema = mongoose.Schema;
var parentModel = require('./thing');
var Model = function () {
var Parent = mongoose.model('Thing').schema;
/**
*
* @class Project
* @extends Thing
* @version 0.0.1
*/
var _Schema = Parent.extend(
/** @lends Project.prototype */
{
/**
* Группы
* @type {Array.<mongoose.Schema.Types.ObjectId>}
* @see {Group}
*
*/
groups: [],
/**
* Отношения с проектами
* каким проектам принадлежит
* @type {Array.<mongoose.Schema.Types.ObjectId>}
* @see {Project}
*
*/
projects: [],
/**
* Владелец проекта
*/
owner: { type: Schema.Types.ObjectId, required: true },
/**
* Администраторы
*/
admins: [],
/**
* Менеджеры
*/
managers: [],
/**
* Ползователи
*/
users: [],
/**
* Разработчики
*/
developers: [],
/**
* Домены проекта
*/
domains: [],
/**
* Настройки проекта
*/
settings: [],
/**
* blacklist
*/
blacklist: [],
/**
* ups - settings
* настройки синхронизации для `ups`
* { rdomain: '', ldomain:'', ... }
*/
uconfigs: [],
/**
* Хранилище рег. информации по проекту
* { type: 'ssh', [{ key: value } ] }
* { type: 'cp', [{ key: value } ] }
*
* @example
*
* { type: 'ssh', [ { host: 'ssh.myhost.com', username: 'user', password: 'secret', active: true } ] }
* { type: 'cp', [ { host: 'cp.myhost.com', username: 'user', password: 'secret', active: true } ] }
* { type: 'ftp, [ { host: 'cp.myhost.com', username: 'user', password: 'secret', active: true } ] }
* { type: 'mysql, [ { host: 'cp.myhost.com', username: 'user', password: 'secret', dbname: 'db', active: true } ] }
*
*/
regdata: [],
/**
* Документы связанные с проектом
*/
docs: []
},
{
/**
* Коллекция MongoDB
*/
collection: 'projects'
});
return mongoose.model('Project', _Schema);
};
module.exports = new Model();