@ideal-photography/shared
Version:
Shared GraphQL (Apollo Server v5) and Mongoose logic for Ideal Photography PWAs: users, products, services, bookings, orders/cart, galleries, reviews, notifications, campaigns, settings, and audit logs.
28 lines (21 loc) • 876 B
JavaScript
import mongoose from 'mongoose';
const pushSubscriptionSchema = new mongoose.Schema({
user: { type: mongoose.Schema.Types.ObjectId, ref: 'User', index: true },
endpoint: { type: String, required: true, unique: true },
keys: {
p256dh: { type: String, required: true },
auth: { type: String, required: true }
},
subscription: { type: Object, required: true },
userAgent: { type: String },
isActive: { type: Boolean, default: true },
lastSentAt: { type: Date },
createdAt: { type: Date, default: Date.now },
updatedAt: { type: Date, default: Date.now }
});
pushSubscriptionSchema.index({ user: 1, isActive: 1 });
pushSubscriptionSchema.pre('save', function (next) {
this.updatedAt = new Date();
next();
});
export default mongoose.model('PushSubscription', pushSubscriptionSchema);