UNPKG

@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.

33 lines (30 loc) 1.05 kB
import mongoose from 'mongoose'; const gallerySchema = new mongoose.Schema({ title: { type: String, required: [true, 'Gallery title is required'] }, description: String, category: { type: String, enum: ['portrait', 'wedding', 'event', 'commercial', 'fashion', 'landscape', 'product'], required: [true, 'Category is required'] }, images: [{ url: { type: String, required: true }, caption: String, alt: String, order: { type: Number, default: 0 } }], coverImage: String, isPublished: { type: Boolean, default: false }, featured: { type: Boolean, default: false }, tags: [String], createdBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true } }, { timestamps: true }); // Add indexes gallerySchema.index({ category: 1, isPublished: 1 }); gallerySchema.index({ featured: 1 }); gallerySchema.index({ createdAt: -1 }); export default mongoose.model('Gallery', gallerySchema);