Files
ostandari/server/models/Book.js
T
2026-06-19 15:47:02 +03:30

35 lines
1.1 KiB
JavaScript

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);