import *as dotenv from "dotenv"
import { v2 as cloudinary} from "cloudinary"
import Post from "../models/Post.js";
import {createError} from "../error.js"

dotenv.config();
        
cloudinary.config({ 
  cloud_name: process.env.CLOUD_NAME, 
  api_key: process.env.CLOUD_API_KEY, 
  api_secret: process.env.CLOUD_SECRET 
});

export const getAllPosts = async(req, res, next) => {
    try {
        const posts = await Post.find({});
        return res.status(200).json({success: true, data: posts})
    } catch (error) {
        next(createError(error.status, error?.response?.data?.error?.message || error?.message))
    }
}

export const createPost = async (req, res, next) => {
    try {
        const {name, prompt, photo} = req.body;
        const fixed_photo = photo.replace(/ /g, ""); //because the data that they send back have space so we use following command to remove it
        const photoUrl = await cloudinary.uploader.upload(fixed_photo);
        const newPost = await Post.create(
            {
                name, 
                prompt, 
                photo: photoUrl?.secure_url,
            }
        )
        return res.status(201).json({success: true, data: newPost})

    } catch (error) {
        console.log(error)
        //next(createError(error.status, error?.response?.data?.error?.message || error?.message))
        
    }
}