Save visit count

master
Ian Mancini 4 years ago
parent 6f739aff50
commit f1aa96dbc8

@ -24,6 +24,8 @@ import passport from 'passport'
import mongoose from 'mongoose' import mongoose from 'mongoose'
import UserModel from './models/user' import UserModel from './models/user'
import { getMuseumDocument } from './museumStats'
import redisClient, { import redisClient, {
asyncHEXISTS, asyncHEXISTS,
asyncHGET, asyncHGET,
@ -151,8 +153,21 @@ io.on('connection', async (socket) => {
await asyncHDEL('socket', String(socket.request.user._id)) await asyncHDEL('socket', String(socket.request.user._id))
}) })
socket.on('register-visit', () => { socket.on('register-visit', async () => {
console.log(`new visit from: ${socket.request.user.name}`) logger.debug(`Registering new new visit from: ${socket.request.user.name}`)
const museumStats = await getMuseumDocument()
museumStats.visitCount = museumStats.visitCount + 1
const socketCount = io.of('/').sockets.size
if (museumStats.maxSimultaneousVisitsCount < socketCount) {
museumStats.maxSimultaneousVisitsCount = socketCount
}
museumStats.save()
const user = await UserModel.findById(socket.request.user._id)
user.visitCount = user.visitCount + 1
user.save()
}) })
const user = await UserModel.findById(socket.request.user._id) const user = await UserModel.findById(socket.request.user._id)

@ -0,0 +1,30 @@
import { model, Schema } from 'mongoose'
const museumModel = new Schema(
{
visitCount: {
type: Number,
default: 0,
required: true,
},
maxSimultaneousVisitsCount: {
type: Number,
default: 0,
required: true,
},
interactionCount: {
type: Number,
default: 0,
required: true,
},
},
{ timestamps: true },
)
/* TODO
* store museum time
* store artwork with more visits
*/
const UserModel = model('Museum', museumModel)
export default UserModel

@ -18,6 +18,10 @@ const userSchema = new Schema(
type: String, type: String,
required: true, required: true,
}, },
visitCount: {
type: Number,
default: 0,
},
photo: String, photo: String,
lastLocation: Object, lastLocation: Object,
}, },

@ -0,0 +1,13 @@
import MuseumModel from './models/museum'
import logger from './logger'
export async function getMuseumDocument() {
const museum = await MuseumModel.findOne()
if (museum) {
return museum
}
logger.info('Creating museum stats document (db)')
const document = await new MuseumModel().save()
return document
}
Loading…
Cancel
Save