diff --git a/app/(content)/(thread)/threads/page.tsx b/app/(content)/(thread)/threads/page.tsx index d9a8ea4a16e1c6a9350f98d09cd0ca09e9501661..f206b35f87c5ba9136ceda4acd17462babf2e54d 100644 --- a/app/(content)/(thread)/threads/page.tsx +++ b/app/(content)/(thread)/threads/page.tsx @@ -1,7 +1,28 @@ -export default function ThreadsPage() { +import PostMessageForm from "@/components/PostMessageForm"; +import { prisma } from "@/prisma/db"; + +export default async function ThreadsPage() { + let messages = null + try { + messages = await prisma.message.findMany() + } catch (error) { + console.log("the database is not running, try: 'npx prisma migrate dev --name init' if you want to use the database") + } + return ( <div> <h1>Threads WIP</h1> + <p>Needs a reload after posting!!</p> + + {messages ? + <> + {messages.map((msg) => ( + <li key={msg.id}> author: {msg.author} message: {msg.content} sentAt: {msg.sentAt?.toString()} </li> + ))} + <PostMessageForm data={messages}></PostMessageForm> + </> + : + <p>no messages / no database</p>} </div> ) } \ No newline at end of file diff --git a/app/api/messages/route.ts b/app/api/messages/route.ts deleted file mode 100644 index e051b55ecc48f76cddfc9f5b1fd62483f6d56fa7..0000000000000000000000000000000000000000 --- a/app/api/messages/route.ts +++ /dev/null @@ -1,56 +0,0 @@ -import {PrismaClient} from "@prisma/client" -import { NextApiRequest, NextApiResponse } from "next" -import { NextRequest, NextResponse } from "next/server" -import { prisma } from './../../../prisma/db' - -export async function GET(req: NextRequest){ - return NextResponse.json("") -} - -export async function POST(req: NextRequest, res: NextResponse){ - const data = await req.json() - console.log("router data: " + data, "status:") - - console.log(data) - try { - await prisma.message.create({ - data: data - }) - - return NextResponse.json({status: 201, message: 'Message Created'}) - //res.status(200).json({message: 'Message Created'}) - //res.status(200).json({message: 'Message Created'}) - } catch (error) { - console.log("Failure" + error); - // res.status(400) - } - console.log("post") - - -} - -/* -export default async function handler(req: NextApiRequest, res: NextApiResponse){ - const data = (req.body) - - try { - await prisma.message.create({ - data - }) - res.status(200).json({message: 'Note Created'}) - } catch (error) { - console.log("Failure"); - } -} */ - -/* export const postMessage = async(req: NextApiRequest , res: NextApiResponse) => { -const data = (req.body) - -console.log("router data: " + data) - -const createdMessage = await prisma.message.create({ - data -}) - -res.status(201) -} */ \ No newline at end of file diff --git a/app/api/threads/route.ts b/app/api/threads/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..aa12a6ff6e7c4ef2dd0aabe6d1ed86b2cac33f3d --- /dev/null +++ b/app/api/threads/route.ts @@ -0,0 +1,22 @@ +import { prisma } from "@/prisma/db" +import { NextRequest, NextResponse } from "next/server" + +export async function POST(req: NextRequest) { + const data = await req.json() + console.log("router data: " + data, "status:") + + console.log(data) + try { + await prisma.message.create({ + data: data + }) + + return NextResponse.json({ status: 201, message: 'Message Created' }) + // res.status(200).json({message: 'Message Created'}) + // res.status(200).json({message: 'Message Created'}) + } catch (error) { + console.log("fail" + error); + // res.status(400) + } + console.log("post") +} \ No newline at end of file diff --git a/app/messages/PostMessageForm.tsx b/app/messages/PostMessageForm.tsx deleted file mode 100644 index 3a10ea81f4fd8f3e851f7a1f436eb1c019764822..0000000000000000000000000000000000000000 --- a/app/messages/PostMessageForm.tsx +++ /dev/null @@ -1,29 +0,0 @@ -"use client" - -import { useState } from "react" -import { PrismaClient, Message } from "@prisma/client" - -export default function PostMessageForm(props: {data: Message[]}){ - const [formData, setFormData] = useState({}) - const [messagesState, setMessages] = useState(props.data) - - async function postMessage(e:any) { - e.preventDefault() - /* setMessages([...messagesState, formData]) */ - console.log(formData) - const response = await fetch('http://localhost:3000/api/messages', { - method: 'POST', - body: JSON.stringify(formData) - }) - return await response.json() - } - - return (<div> - <form onSubmit={postMessage}> - <input type="text" placeholder="content" name="content" onChange={e => setFormData({ ...formData, content : e.target.value })}/> - <textarea name="content" id="" cols={30} rows={10} placeholder="content" onChange={e => setFormData({ ...formData, content: e.target.value })} /> - <button type="submit">Post Message</button> - </form> - - </div>) -} \ No newline at end of file diff --git a/app/messages/page.tsx b/app/messages/page.tsx deleted file mode 100644 index f8ad89acdba6a504e91ff9b768a77b41db5b2053..0000000000000000000000000000000000000000 --- a/app/messages/page.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import { Message } from "@prisma/client" -import React from "react" -import PostMessageForm from "./PostMessageForm"; -import { prisma } from "@/prisma/db"; - -// Define a type for our props -interface MessageProps { - data: Message[]; -} - -export default async function MessageList({data}:MessageProps) { - - const messages = await prisma.message.findMany() - - return ( - <div> - Message List Page - {messages.map((msg) => ( - <li key = {msg.id}> author: {msg.author} message: {msg.content} sentAt: {msg.sentAt?.toString()} </li> - ))} - - <PostMessageForm data={messages}></PostMessageForm> - </div> - ) -} - -export async function getServerSideProps() { - const formData = {description: 'sdfsdf', content: 'sdfsdf'} - const response = await fetch('/api/messages', { - method: 'POST', - body: JSON.stringify(formData) -}) - console.log("answer:" + await response.json()) - - const messages = await prisma.message.findMany() - - return { - props: { - data: messages - } - } -} \ No newline at end of file diff --git a/components/PostMessageForm.tsx b/components/PostMessageForm.tsx new file mode 100644 index 0000000000000000000000000000000000000000..7c5032602f7f8e38c31a75744432b50e9ae623b3 --- /dev/null +++ b/components/PostMessageForm.tsx @@ -0,0 +1,29 @@ +"use client" + +import { Message } from "@prisma/client" +import { useState } from "react" + +export default function PostMessageForm(props: { data: Message[] | null }) { + const [formData, setFormData] = useState({}) + // const [messagesState, setMessages] = useState(props.data) + + async function postMessage(e: any) { + e.preventDefault() + // setMessages([...messagesState, formData]) + console.log(formData) + const response = await fetch('http://localhost:3000/api/threads', { + method: 'POST', + body: JSON.stringify(formData) + }) + return await response.json() + } + + return ( + <div> + <form onSubmit={postMessage}> + <input type="text" placeholder="content" name="content" onChange={e => setFormData({ ...formData, content: e.target.value })} /> + <button type="submit">Post Message</button> + </form> + </div> + ) +} \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma index ba5b3522bffb80144e6db7595ac1d287277ec829..deac6a96cc0413b47f3591405382410518e70887 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -10,12 +10,12 @@ datasource db { url = env("DATABASE_URL") } -model Message{ - id Int @id @default(autoincrement()) - author String? - gameId String? - title String? - content String - sentAt DateTime? @default(now()) +model Message { + id Int @id @default(autoincrement()) + author String? + gameId String? + title String? + content String + sentAt DateTime? @default(now()) updatedAt DateTime? @updatedAt -} \ No newline at end of file +}