mirror of
https://github.com/arnaucube/socketioMEANseed.git
synced 2026-02-08 12:16:42 +01:00
init
This commit is contained in:
12
server/models/contactModel.js
Normal file
12
server/models/contactModel.js
Normal file
@@ -0,0 +1,12 @@
|
||||
var mongoose = require('mongoose');
|
||||
var mongooseUniqueValidator = require('mongoose-unique-validator');
|
||||
var Schema = mongoose.Schema;
|
||||
|
||||
var contactSchema = new Schema({
|
||||
name: {type: String, required: true,},
|
||||
subject: {type: String, required: true, select: false},
|
||||
email: {type: String, required: true, unique: true},
|
||||
description: {type: String}
|
||||
});
|
||||
contactSchema.plugin(mongooseUniqueValidator);
|
||||
module.exports = mongoose.model('contactModel', contactSchema);
|
||||
27
server/models/conversationModel.js
Normal file
27
server/models/conversationModel.js
Normal file
@@ -0,0 +1,27 @@
|
||||
var mongoose = require('mongoose');
|
||||
var mongooseUniqueValidator = require('mongoose-unique-validator');
|
||||
var Schema = mongoose.Schema;
|
||||
|
||||
var conversationSchema = new Schema({
|
||||
userA: {
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'userModel'
|
||||
},
|
||||
userB: {
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'userModel'
|
||||
},
|
||||
messages: [{
|
||||
user: {
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'userModel'
|
||||
},
|
||||
content: {type: String},
|
||||
date: {type: Date}
|
||||
}],
|
||||
modifiedDate: {type: Date}
|
||||
});
|
||||
|
||||
conversationSchema.plugin(mongooseUniqueValidator);
|
||||
|
||||
module.exports = mongoose.model('conversationModel', conversationSchema);
|
||||
46
server/models/dietModel.js
Normal file
46
server/models/dietModel.js
Normal file
@@ -0,0 +1,46 @@
|
||||
var mongoose = require('mongoose');
|
||||
var mongooseUniqueValidator = require('mongoose-unique-validator');
|
||||
var Schema = mongoose.Schema;
|
||||
|
||||
var dietSchema = new Schema({
|
||||
title: {type: String},
|
||||
description: {type: String},
|
||||
startingDay: {type: Date},
|
||||
price: { type: Number },
|
||||
image: { type: String },
|
||||
clients: [{
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'userModel'
|
||||
}],
|
||||
chef: {
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'userModel'
|
||||
},
|
||||
days: [{
|
||||
date: {type: Date}, //Ha de ser realmente un día que empiezas por ejemplo 12/12/2016 para poder ir completando según la fecha, comer comes cada día
|
||||
title: {type: String},
|
||||
description: {type: String},
|
||||
meals: [{
|
||||
title: {type: String},
|
||||
img: {type: String},
|
||||
submeals: [{
|
||||
title: {type: String},
|
||||
description: {type: String},
|
||||
amount: {
|
||||
unit: {type: String},
|
||||
quantity: {type: Number}
|
||||
},
|
||||
nutritional: {
|
||||
kcal: {type: Number},
|
||||
proteins: {type: Number},
|
||||
carbohidrates: {type: Number},
|
||||
fats: {type: Number},
|
||||
vitamins: {type: Number}
|
||||
}
|
||||
}]
|
||||
}],
|
||||
done: {type: Boolean, default: false}
|
||||
}]
|
||||
});
|
||||
dietSchema.plugin(mongooseUniqueValidator);
|
||||
module.exports = mongoose.model('dietModel', dietSchema);
|
||||
22
server/models/publicationModel.js
Normal file
22
server/models/publicationModel.js
Normal file
@@ -0,0 +1,22 @@
|
||||
var mongoose = require('mongoose');
|
||||
var mongooseUniqueValidator = require('mongoose-unique-validator');
|
||||
var Schema = mongoose.Schema;
|
||||
|
||||
var publicationSchema = new Schema({
|
||||
title: {type: String, required: true},
|
||||
content: {type: String, required: true},
|
||||
user: {
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'userModel'
|
||||
},
|
||||
photo: {type: String},//link a la imatge, en plan, l'user corrent pel carrer tot feliç
|
||||
date: {type: Date},
|
||||
likes: [{
|
||||
type:mongoose.Schema.Types.ObjectId,
|
||||
ref: 'userModel'
|
||||
}]
|
||||
});
|
||||
|
||||
publicationSchema.plugin(mongooseUniqueValidator);
|
||||
|
||||
module.exports = mongoose.model('publicationModel', publicationSchema);
|
||||
37
server/models/routineModel.js
Normal file
37
server/models/routineModel.js
Normal file
@@ -0,0 +1,37 @@
|
||||
var mongoose = require('mongoose');
|
||||
var mongooseUniqueValidator = require('mongoose-unique-validator');
|
||||
var Schema = mongoose.Schema;
|
||||
|
||||
var routineSchema = new Schema({
|
||||
title: {type: String},
|
||||
description: {type: String},
|
||||
startingDay: {type: Date},
|
||||
discipline: {type: String},
|
||||
price: { type: Number },//si és gratis, es posa q val 0, així els users ho veuen amb bons ulls
|
||||
image: { type: String },
|
||||
client: {
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'userModel'
|
||||
},
|
||||
trainer: {
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'userModel'
|
||||
},
|
||||
days: [{
|
||||
title: {type: String},
|
||||
description: {type: String},
|
||||
exercises: [{
|
||||
title: {type: String},
|
||||
description: {type: String},
|
||||
img: {type: String},
|
||||
weight: {type: String},
|
||||
distance: {type: String},
|
||||
reps: {type: String},
|
||||
series: {type: String}
|
||||
}],
|
||||
done: {type: String, default: false}//si ha complert el dia
|
||||
}]
|
||||
})
|
||||
;
|
||||
routineSchema.plugin(mongooseUniqueValidator);
|
||||
module.exports = mongoose.model('routineModel', routineSchema);
|
||||
25
server/models/runModel.js
Normal file
25
server/models/runModel.js
Normal file
@@ -0,0 +1,25 @@
|
||||
var mongoose = require('mongoose');
|
||||
var mongooseUniqueValidator = require('mongoose-unique-validator');
|
||||
var Schema = mongoose.Schema;
|
||||
|
||||
var runSchema = new Schema({
|
||||
title: {type: String},
|
||||
photo: {type: String},
|
||||
user: {
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'userModel'
|
||||
},
|
||||
datestart: {type: Date},
|
||||
datefinish: {type: Date},
|
||||
distance: {type: Number},
|
||||
positions: [{
|
||||
date: {type: Date},
|
||||
lat: {type: Number},
|
||||
long: {type: Number},
|
||||
distance: {type: Number}
|
||||
}]
|
||||
});
|
||||
|
||||
runSchema.plugin(mongooseUniqueValidator);
|
||||
|
||||
module.exports = mongoose.model('runModel', runSchema);
|
||||
140
server/models/userModel.js
Normal file
140
server/models/userModel.js
Normal file
@@ -0,0 +1,140 @@
|
||||
var mongoose = require('mongoose');
|
||||
var mongooseUniqueValidator = require('mongoose-unique-validator');
|
||||
var Schema = mongoose.Schema;
|
||||
var userSchema = new Schema({
|
||||
name: {type: String, required: true, unique: true},
|
||||
role: {type: String, required: true},
|
||||
password: {type: String, select: false},
|
||||
tokens: [{
|
||||
userAgent: {type: String},
|
||||
token: {type: String},
|
||||
os: {type: String},
|
||||
browser: {type: String},
|
||||
device: {type: String},
|
||||
os_version: {type: String},
|
||||
browser_version: {type: String},
|
||||
ip: {type: String},
|
||||
lastLogin: {type: Date},
|
||||
birthdate: {type: Date},
|
||||
}],
|
||||
testimonial: {type :String},//Para la landing page, sera como una review del sitio
|
||||
email: {type: String, required: true, unique: true},
|
||||
description: {type: String},
|
||||
direction: {type: String},
|
||||
city: {type: String},
|
||||
avatar: {type: String},
|
||||
background: {type: String},
|
||||
attributes: {
|
||||
height: {type: Number},
|
||||
weight: {type: Number},
|
||||
gender: {type: String},//Home, Dona, Altres -->com a mínim aquestes 3 opcions, més endavant tenim el debat de com s'enfoca
|
||||
age: {type: Number}
|
||||
},
|
||||
publications: [{
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'publicationModel'
|
||||
}],
|
||||
runs: [{
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'runModel'
|
||||
}],
|
||||
totalkm: {type: Number},
|
||||
conversations: [{
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'conversationModel'
|
||||
}],
|
||||
diets: [{
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'dietModel'
|
||||
}],
|
||||
trainers: [{
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'userModel'
|
||||
}],
|
||||
routines: [{
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'routineModel'
|
||||
}],// trainermodel
|
||||
disciplines : [{
|
||||
name: {type: String}
|
||||
}],
|
||||
specialties : [{
|
||||
name: {type: String}
|
||||
}],
|
||||
clients: [{
|
||||
client: {
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'userModel'
|
||||
},
|
||||
petitionMessage: {type: String},
|
||||
date: {type: Date}
|
||||
}],
|
||||
clientsPetitions: [{
|
||||
clientid: {
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'userModel'
|
||||
},
|
||||
message: {type: String},
|
||||
state: {type: String}//pendent, accepted, declined
|
||||
}],
|
||||
valoration: {type:String}, //La media de todas las valoraciones
|
||||
valorations: [{
|
||||
clientid: {
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'userModel'
|
||||
},
|
||||
date: {type: Date},
|
||||
message: {type: String},//missatge de valoració
|
||||
value: {type: Number}//per exemple sistema d'estrelles sobre 5
|
||||
}],//end of trainermodel
|
||||
points: {
|
||||
total: {type: Number},
|
||||
history: [{
|
||||
concept: {type: String},
|
||||
date: {type: Date},
|
||||
value: {type: Number}
|
||||
}]
|
||||
},
|
||||
marks: [{
|
||||
title: {type: String},
|
||||
unit: {type: String},//si són kg, km
|
||||
best: {
|
||||
date: {type: Date},
|
||||
value: {type: String}
|
||||
},
|
||||
days:[{
|
||||
date: {type: Date},
|
||||
value: {type: String}
|
||||
}]
|
||||
}],
|
||||
notifications: [{
|
||||
state: {type: String},//viewed, pendent
|
||||
message: {type: String},
|
||||
link: {type: String},//aquí oju, a la app i a la web calen links diferents, però ho podem fer posant sempre a la app i a la web el prefix del link (#!/app) o (#/app/), i després afegint-hi la pàgina on volem enviar el routing, per exemple (dashboard)
|
||||
icon: {type: String},
|
||||
date: {type: Date},
|
||||
dateviewed: {type: Date}
|
||||
}],
|
||||
followers: [{
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'userModel'
|
||||
}],
|
||||
following: [{
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'userModel'
|
||||
}],
|
||||
google: {
|
||||
id: {type: String},
|
||||
token: {type: String},
|
||||
email: {type: String},
|
||||
name: {type: String},
|
||||
},
|
||||
twitter: {
|
||||
id: {type: String},
|
||||
token: {type: String},
|
||||
email: {type: String},
|
||||
name: {type: String},
|
||||
}
|
||||
});
|
||||
userSchema.plugin(mongooseUniqueValidator);
|
||||
module.exports = mongoose.model('userModel', userSchema);
|
||||
Reference in New Issue
Block a user