import { HydratedDocument, ObjectId } from "mongoose"; import { FileInfo, IFileInfo, Mainimg, MainimgType } from "../models"; import fs from "fs/promises"; import { fileInfoCtrl } from "../controllers"; import formidable from "formidable"; export const createMainimg = async (mainimg: MainimgType, pic: IFileInfo) => { const newPic = await FileInfo.create({ originalfilename: pic.originalfilename, newfilename: pic.newfilename, picturepath: pic.picturepath, }); const newMainimg = await Mainimg.create({ theme: mainimg.theme, city: mainimg.city, fileInfo: newPic._id, title: mainimg.title, }); return newMainimg.populate("fileInfo"); }; export const getMainimg = async () => { const img = await Mainimg.find({}).populate("fileInfo"); return img; }; export const deleteOneMainimg = async (_id: string) => { const main = await Mainimg.findById(_id); if (!(main?.fileInfo === undefined)) { const ref = await FileInfo.findById(main.fileInfo._id); if (!(ref?.newfilename === undefined)) { await fs.unlink("../travel/uploads/" + ref?.newfilename); } await FileInfo.deleteOne({ _id: main.fileInfo._id }); const res = await Mainimg.deleteOne({ _id: _id }); return res; } }; export const updateOneMainimg = async ( _Id: string, theme: string, city: string, title: string, fileInfo: formidable.File // originalfilename?: string | null, // newfilename?: string ) => { // const newMainimg = await Mainimg.findById(_Id) const newMainimg = await Mainimg.findById(_Id).populate<{ fileInfo: IFileInfo }>( "fileInfo" ); console.log("error2", newMainimg); if (!newMainimg) { throw new Error("mainimg가 존재하지 않습니다") } if ( fileInfo.originalFilename && newMainimg?.fileInfo.originalfilename !== fileInfo.originalFilename ) { // 같지 않으면 기존의 파일을 디스크에서 삭제한 후 try { console.log("picturepath", newMainimg.fileInfo.picturepath) await fs.unlink(newMainimg.fileInfo.picturepath); } catch (error) { console.log("error", error); } const mainimgAvatar = newMainimg.fileInfo as HydratedDocument; // 기존 fileinfo의 파일이름과 경로 변경 설정 mainimgAvatar.originalfilename = fileInfo.originalFilename; mainimgAvatar.newfilename = fileInfo.newFilename; mainimgAvatar.picturepath = fileInfo.filepath; await mainimgAvatar.save(); } newMainimg.theme = theme; newMainimg.city = city; newMainimg.title = title; await newMainimg.save(); console.log("mainimg updated", newMainimg); return newMainimg; } // if (!(newMainimg?.fileInfo === undefined)) { // if (originalfilename === undefined) { // await Mainimg.findByIdAndUpdate(newMainimg._id, { // theme: theme, // city: city, // title: title, // }); // console.log("errrror4"); // } else if ( // !(originalfilename === undefined) && // (!(theme === undefined) || // !(city === undefined) || // !(title === undefined)) // ) { // await Mainimg.findByIdAndUpdate(newMainimg._id, { // theme: theme, // city: city, // title: title, // }); // await FileInfo.findByIdAndUpdate(newMainimg.fileInfo._id, { // originalfilename: originalfilename, // newfilename: newfilename, // }); // console.log("error6"); // } else { // await FileInfo.findByIdAndUpdate(newMainimg.fileInfo._id, { // originalfilename: originalfilename, // newfilename: newfilename, // }); // console.log("error5", newfilename, originalfilename, theme, city, title); // } // } else console.log("error3", newMainimg); // };