From 69f5c8da6864b8f36959cb419fc8b8877287c79c Mon Sep 17 00:00:00 2001 From: OldHawk Date: Tue, 13 Jun 2017 12:06:22 +0800 Subject: [PATCH] feat(invitations): add invitation model --- .../server/models/invitation.server.model.js | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 modules/invitations/server/models/invitation.server.model.js diff --git a/modules/invitations/server/models/invitation.server.model.js b/modules/invitations/server/models/invitation.server.model.js new file mode 100644 index 00000000..e8b3f6c1 --- /dev/null +++ b/modules/invitations/server/models/invitation.server.model.js @@ -0,0 +1,57 @@ +'use strict'; + +/** + * Module dependencies + */ +var mongoose = require('mongoose'), + Schema = mongoose.Schema, + validator = require('validator'); + +/** + * A Validation function for local strategy email + */ +var validateLocalStrategyEmail = function (email) { + return validator.isEmail(email, {require_tld: false}); +}; + +/** + * Peer Schema + */ +var InvitationSchema = new Schema({ + user: { + type: Schema.Types.ObjectId, + ref: 'User' + }, + to_user: { + type: Schema.Types.ObjectId, + ref: 'User' + }, + to_email: { + type: String, + unique: 'email already exists', + required: 'Please fill in a email address', + lowercase: true, + trim: true, + default: '', + validate: [validateLocalStrategyEmail, 'Please fill a valid email address'] + }, + status: { + type: Number, + default: 0 //0 is unregistered invitation, 1 already invite friend, 2 is already registered + }, + token: { + type: String + }, + expiresat: { + type: Date + }, + registeredat: { + type: Date + }, + createdat: { + type: Date, + default: Date.now + } +}); + +mongoose.model('Invitation', InvitationSchema);