hulawho
Version:
hulawho api
97 lines (87 loc) • 4.24 kB
JavaScript
var mongoose = require('mongoose')
var Schema = mongoose.Schema
var gameSchema = new mongoose.Schema({
home_team: {type: String, required: true},
away_team: {type: String, required: true},
date: {type: Date, required: true},
tournament: {type: String, required: false},
round: {type: String, required: false},
cluster: {type: String, required: false},
leg: {type: String, required: false},
predictions: [{type: Schema.Types.ObjectId, ref: 'Prediction'}],
result: {type: Schema.Types.ObjectId, required: false, ref: 'Result'},
date_created: {type: Date, required: true, default: new Date()},
date_updated: {type: Date, required: true, default: new Date()}
})
var leagueSchema = new mongoose.Schema({
name: {type: String, required: true},
admin: {type: Schema.Types.ObjectId, required: true, ref: 'User'},
code: {type: String, required: true},
kdf: {type: String, required: true},
members: [{type: Schema.Types.ObjectId, ref: 'User'}],
date_created: {type: Date, required: true, default: new Date()},
date_updated: {type: Date, required: true, default: new Date()}
})
var userSchema = new mongoose.Schema({
auth: {type: String, required: true},
name: {type: String, required: true},
nick: {type: String, required: true},
email: {type: String, required: true},
kdf: {type: String, required: false},
international: {type: String, required: false},
club: {type: String, required: false},
leagues: [{type: Schema.Types.ObjectId, ref: 'League'}],
verified: {type: Boolean, required: true, default: false},
date_created: {type: Date, required: true, default: new Date()},
date_updated: {type: Date, required: true, default: new Date()}
})
var resultSchema = new mongoose.Schema({
game: {type: Schema.Types.ObjectId, required: true, ref: 'Game'},
home_score: {type: Number, required: true},
away_score: {type: Number, required: true},
date_created: {type: Date, required: true, default: new Date()},
date_updated: {type: Date, required: true, default: new Date()}
})
var predictionSchema = new mongoose.Schema({
user: {type: Schema.Types.ObjectId, required: true, ref: 'User'},
game: {type: Schema.Types.ObjectId, required: true, ref: 'Game'},
home_score: {type: Number, required: true},
away_score: {type: Number, required: true},
analysis: {type: Schema.Types.ObjectId, required: false, ref: 'PredictionAnalysis'},
date_created: {type: Date, required: true, default: new Date()},
date_updated: {type: Date, required: true, default: new Date()}
})
var predictionAnalysisSchema = new mongoose.Schema({
prediction: {type: Schema.Types.ObjectId, required: true, ref: 'Prediction'},
user: {type: Schema.Types.ObjectId, required: true, ref: 'User'},
correct_score: {type: Boolean, required: true},
correct_winner: {type: Boolean, required: true},
score_distance: {type: Number, required: true},
points: {type: Number, required: true},
date_created: {type: Date, required: true, default: new Date()},
date_updated: {type: Date, required: true, default: new Date()}
})
var leaderboardSchema = new mongoose.Schema({
user: {type: Schema.Types.ObjectId, required: true, ref: 'User'},
total_predictions: {type: Number, required: true, default: 0},
total_correct_scores: {type: Number, required: true, default: 0},
total_correct_winners: {type: Number, required: true, default: 0},
mean_score_distance: {type: Number, required: false},
points: {type: Number, required: true, default: 0},
date_created: {type: Date, required: true, default: new Date()},
date_updated: {type: Date, required: true, default: new Date()}
})
var Game = mongoose.model('Game', gameSchema)
var League = mongoose.model('League', leagueSchema)
var User = mongoose.model('User', userSchema)
var Result = mongoose.model('Result', resultSchema)
var Prediction = mongoose.model('Prediction', predictionSchema)
var PredictionAnalysis = mongoose.model('PredictionAnalysis', predictionAnalysisSchema)
var Leaderboard = mongoose.model('Leaderboard', leaderboardSchema)
exports.Game = Game
exports.League = League
exports.User = User
exports.Result = Result
exports.Prediction = Prediction
exports.PredictionAnalysis = PredictionAnalysis
exports.Leaderboard = Leaderboard