var _ = require('lodash');
var Promise = require('bluebird');
var Sequelize = require('sequelize');
var ResourceNotFound = require('./errors').ResourceNotFound;
var ResourceAccessDenied = require('./errors').ResourceAccessDenied;
var ResourceExpired = require('./errors').ResourceExpired;
var ConferenceState = {
NEW: 'new',
...
};
module.exports.define = function define(options) {
var sequelize = options.sequelize;
return sequelize.define('conference', {
id: {
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV4,
primaryKey: true
},
startDate: {
type: Sequelize.DATE,
},
endDate: {
type: Sequelize.DATE,
},
state: {
type: Sequelize.ENUM(
ConferenceState.NEW,
...
),
defaultValue: ConferenceState.NEW,
required: true,
allowNull: false
}
}, {
classMethods: {
getOrCreateConference: function createConference(data) {
return new Promise(function (resolve, reject) {
var Conference = sequelize.models.conference;
Conference.findOne({
where: data
}).then(function(conference){
if(_.isObject(conference)) {
resolve(conference);
} else {
return Conference.create(data);
}
}).then(function(conference){
resolve(conference);
}).catch(function(err){
reject(err);
});
});
},
scheduleConference: function scheduleConference(start, end) {
// TODO
},
}
});
};
私の質問は今、次のタスクにアプローチする方法についての理論上のいずれかになります。会議モデルは、 - (Sequelize)のスケジュールメソッドを作成
- 会議が
スケジュールでなければならないので、会議は持っています修正開始日と終了日。値を持つフィールドを持つ必要があります。まだ開始されていない、または終了していないときに参加することもできません。それ以外の場合は、エラーが発生します。
私は会議をスケジュールし、開始値と終了値を渡したいというメッセージが必要です。
これは単一の方法で行うことができますか、または分割する必要がありますか?どのような方法が必要であり、彼らは基本的にどのような処置をするのでしょうか?
あなたの方法で何をしたいですか?カンファレンスや他のアクションの 'startDate'と' endDate'を設定するだけです? – piotrbienias
@piotrbieniasはい、それは最小要件です。後で他の方法は、会議に参加し、それがまだ有効か(開始、終了)および他の検証であるかどうかをチェックすることであろう。 – mrks