cache: 'no-store'

import { tryFetchPosts } from "@/app/api/post/route";
import { constructAPIUrl } from "@/util/Utils";
import { ReactNode, useEffect } from "react";
import EntityManagementTable from "../../../client/EntityManagementTable";
import PostTable, { PostTableActions } from "@/components/client/admin/PostTable";
import { deletePost, getPostsWithBucketsAndProject, GetPostsAttributes, updatePost } from "@/app/lib/actions/entityManagement/postActions";
import { getProjects } from "@/app/lib/actions/entityManagement/projectActions";
import { Bucket, Project, Post, dbSync, Attachment } from "@/models";
import { tryCreateAttachment } from "@/app/api/attachment/route";
import { handleActionResult } from '../../../../app/lib/actions/clientActionHandler';

type Props = {
    children?:ReactNode
}

async function getHeadings(){
    let headings:string[] = ['#', 'Title', 'Content', 'Project', 'CreatedAt', 'UpdatedAt']
    
    return headings
}

export default async function PostView(props:Props){
    const sync = await dbSync;

    const headings = await getHeadings();

    const actions:PostTableActions = {
        deletePost: deletePost, 
        getPosts:getPostsWithBucketsAndProject, 
        getProjects:getProjects, 
        savePost:updatePost,
        // uploadAttachment:tryCreateAttachment
    };

    const posts:GetPostsAttributes[]| undefined = handleActionResult(await getPostsWithBucketsAndProject());
    const projects = await Project.findAll().then(projects=>projects.map((e)=>JSON.parse(JSON.stringify(e))));
    
    return (
        <div className="w-[100%] min-h-fit bg-gray-100 overflow-scroll">
            <div className="w-[100%] m-auto">
                <PostTable  data={posts ? posts : []} 
                projects={projects} 
                headings={headings} 
                actions={actions}>
                </PostTable>
            </div>
        </div>
    );
}