visit.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import { Document, model, Schema, Types } from 'mongoose';
  2. export interface IVisit extends Document {
  3. browser: {
  4. chrome: number;
  5. edge: number;
  6. firefox: number;
  7. ie: number;
  8. opera: number;
  9. other: number;
  10. safari: number;
  11. };
  12. country: Record<string, number>;
  13. date: Date;
  14. link: Types.ObjectId;
  15. os: {
  16. android: number;
  17. ios: number;
  18. linux: number;
  19. macos: number;
  20. other: number;
  21. windows: number;
  22. };
  23. referrer: Record<string, number>;
  24. total: number;
  25. }
  26. const VisitSchema: Schema = new Schema({
  27. browser: {
  28. chrome: { type: Number, default: 0 },
  29. edge: { type: Number, default: 0 },
  30. firefox: { type: Number, default: 0 },
  31. ie: { type: Number, default: 0 },
  32. opera: { type: Number, default: 0 },
  33. other: { type: Number, default: 0 },
  34. safari: { type: Number, default: 0 },
  35. },
  36. country: Schema.Types.Mixed,
  37. date: { type: Date },
  38. link: { type: Schema.Types.ObjectId, ref: 'link' },
  39. os: {
  40. android: { type: Number, default: 0 },
  41. ios: { type: Number, default: 0 },
  42. linux: { type: Number, default: 0 },
  43. macos: { type: Number, default: 0 },
  44. other: { type: Number, default: 0 },
  45. windows: { type: Number, default: 0 },
  46. },
  47. referrer: Schema.Types.Mixed,
  48. total: { type: Number, default: 0 },
  49. });
  50. const Visit = model<IVisit>('visit', VisitSchema);
  51. export default Visit;