42 lines
1.4 KiB
JavaScript
42 lines
1.4 KiB
JavaScript
import mongoose from 'mongoose';
|
|
|
|
const commentSchema = new mongoose.Schema({
|
|
user: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
|
|
name: String,
|
|
text: { type: String, required: true },
|
|
createdAt: { type: Date, default: Date.now }
|
|
});
|
|
|
|
const blogSchema = new mongoose.Schema({
|
|
projectId: { type: String, required: true, index: true },
|
|
title: { type: String, required: true },
|
|
slug: { type: String, required: true, unique: false },
|
|
description: { type: String, required: true },
|
|
imageUrl: String,
|
|
bigImageUrl: String, // ✅ New field
|
|
category: { type: mongoose.Schema.Types.ObjectId, ref: 'Category' },
|
|
tags: [String],
|
|
comments: [commentSchema],
|
|
likes: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }],
|
|
author: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }
|
|
}, { timestamps: true });
|
|
|
|
// 👇 projectId + slug combo unique
|
|
blogSchema.index({ projectId: 1, slug: 1 }, { unique: true });
|
|
|
|
// 👇 Add base URL when converting to JSON
|
|
blogSchema.set('toJSON', {
|
|
transform: (doc, ret) => {
|
|
const baseUrl = process.env.BACKEND_URL || 'http://localhost:3010';
|
|
if (ret.imageUrl && !ret.imageUrl.startsWith('http')) {
|
|
ret.imageUrl = `${baseUrl}${ret.imageUrl}`;
|
|
}
|
|
if (ret.bigImageUrl && !ret.bigImageUrl.startsWith('http')) {
|
|
ret.bigImageUrl = `${baseUrl}${ret.bigImageUrl}`;
|
|
}
|
|
return ret;
|
|
}
|
|
});
|
|
|
|
export default mongoose.model('Blog', blogSchema);
|