// link-visit.js // Copyright (C) 2021 Digital Telepresence, LLC // License: Apache-2.0 'use strict'; const mongoose = require('mongoose'); const Schema = mongoose.Schema; const { GeoPoint } = require('./lib/geo-types'); const LinkVisitSchema = new Schema({ created: { type: Date, required: true, default: Date.now, index: -1, expires: '7d' }, link: { type: Schema.ObjectId, required: true, index: 1, ref: 'Link' }, user: { type: Schema.ObjectId, index: 1, ref: 'User' }, geoip: { country: { type: String }, region: { type: String }, eu: { type: String }, timezone: { type: String }, city: { type: String }, location: { type: GeoPoint }, }, }); LinkVisitSchema.index({ user: 1, }, { partialFilterExpression: { user: { $exists: true }, }, name: 'link_visits_for_user', }); module.exports = mongoose.model('LinkVisit', LinkVisitSchema);