const mongoose = require('mongoose'); const mongoosePaginate = require('mongoose-paginate-v2'); const s3Storage = require('../plugins/s3Storage'); function pdfUri(uri) { if (!uri) return null; if (uri.startsWith('http://') || uri.startsWith('https://')) return uri; const fileName = uri.startsWith('/') ? uri.split('/').pop() : uri; return s3Storage.getPublicUrl(`uploads/pdf/${fileName}`); } function slideUrl(slide) { if (!slide) return null; if (slide.startsWith('http://') || slide.startsWith('https://')) return slide; const imageName = slide.startsWith('/') ? slide.split('/').pop() : slide; const key = imageName.endsWith('.jpeg') ? `uploads/books/${imageName}` : `uploads/books/${imageName}.jpeg`; return s3Storage.getPublicUrl(key); } const BookSchema = mongoose.Schema({ title: String, uri: { type: String, get: pdfUri, default: null }, slides: { default: [], type: [String], get: (slides) => (slides || []).map(slideUrl), } }); BookSchema.plugin(mongoosePaginate); module.exports = mongoose.model('Book', BookSchema);