import dotenv from "dotenv"; import mongoose from "mongoose"; dotenv.config(); const GoogleProviderSchema = new mongoose.Schema({ id: { type: String, required: true, unique: true, }, profileUrl: { type: String, }, }); const UserSchema = new mongoose.Schema({ user_id: { type: String, required: true, unique: true, }, nickname: { type: String, }, email: { type: String, unique: true, }, google: { type: GoogleProviderSchema, } }); const UserModel = mongoose.model("User", UserSchema); const CommentSchema = new mongoose.Schema({ commentId: { type: String, required: true, unique: true, }, content: { type: String, required: true, }, author: { type: UserSchema, required: true, }, createdAt: { type: Date, default: Date.now, }, }); const ArticleSchema = new mongoose.Schema({ title: { type: String, required: true, }, articleId: { type: String, unique: true, }, content: { type: String, required: true, }, imageUrls: { type: [String], }, author: { type: UserSchema, required: true, }, comments: { type: [CommentSchema], }, likes: { type: [UserSchema], }, createdAt: { type: Date, default: Date.now, }, }); const ArticleModel = mongoose.model("Article", ArticleSchema); const connectDB = async () => { const url = process.env.MONGODB_URI; let db; try { db = await mongoose.connect(url, { useNewUrlParser: true, useUnifiedTopology: true }); } catch (error) { console.error(error); } return db; } export default { connectDB, UserModel, ArticleModel }