schedule delete

This commit is contained in:
2025-02-21 14:06:27 +01:00
parent 4291eeacbc
commit 4e62e43f4e
4 changed files with 79 additions and 9 deletions
+59 -8
View File
@@ -3,6 +3,7 @@ import database from '../database';
import { PostRequest, ScheduleRequest } from '@/utils';
import post from './post';
import { ObjectId } from 'mongodb';
import { HttpStatusCode } from 'axios';
export async function POST(req: NextRequest) {
const { sessionId, content, platforms }: PostRequest = await req.json();
@@ -12,7 +13,7 @@ export async function POST(req: NextRequest) {
if (typeof sessionId !== 'string')
return NextResponse.json(
{
message: 'Invalid structure, required param `id=`',
message: 'Invalid structure',
},
{ status: 400 }
);
@@ -47,12 +48,16 @@ export async function PUT(req: NextRequest) {
const { sessionId, scheduled, content, platforms }: ScheduleRequest =
await req.json();
if (typeof sessionId !== 'string')
if (
typeof sessionId !== 'string' ||
typeof scheduled !== 'string' ||
typeof content !== 'string'
)
return NextResponse.json(
{
message: 'Invalid structure, required param `id=`',
message: 'Invalid structure',
},
{ status: 400 }
{ status: HttpStatusCode.BadRequest }
);
const session = await database.sessions.findOne({
@@ -64,7 +69,7 @@ export async function PUT(req: NextRequest) {
{
message: 'Invalid session',
},
{ status: 404 }
{ status: HttpStatusCode.NotFound }
);
database.schedules.insertOne({
@@ -78,7 +83,7 @@ export async function PUT(req: NextRequest) {
{
message: 'ok',
},
{ status: 200 }
{ status: HttpStatusCode.Ok }
);
}
@@ -90,7 +95,7 @@ export async function GET(req: NextRequest) {
{
message: 'Invalid structure, required param `id=`',
},
{ status: 400 }
{ status: HttpStatusCode.BadRequest }
);
const session = await database.sessions.findOne({
@@ -102,7 +107,7 @@ export async function GET(req: NextRequest) {
{
message: 'Invalid session',
},
{ status: 404 }
{ status: HttpStatusCode.NotFound }
);
const schedules = await database.schedules
@@ -116,6 +121,52 @@ export async function GET(req: NextRequest) {
message: 'ok',
schedules,
},
{ status: HttpStatusCode.Ok }
);
}
export async function DELETE(req: NextRequest) {
const url = new URL(req.url);
const sessionId = url.searchParams.get('id');
const date = url.searchParams.get('date');
if (typeof sessionId !== 'string' || typeof date !== 'string')
return NextResponse.json(
{
message: 'Invalid structure, required param `id=` and `date=`',
},
{ status: HttpStatusCode.BadRequest }
);
const session = await database.sessions.findOne({
_id: new ObjectId(sessionId),
});
if (!session)
return NextResponse.json(
{
message: 'Invalid session',
},
{ status: HttpStatusCode.NotFound }
);
const result = await database.schedules.deleteMany({
account: session.user,
scheduled: date,
});
if (result.deletedCount === 0)
return NextResponse.json(
{
message: 'Schedule not found',
},
{ status: HttpStatusCode.NotFound }
);
return NextResponse.json(
{
message: 'ok',
},
{ status: 200 }
);
}
+14 -1
View File
@@ -22,7 +22,7 @@ import { format, parse } from 'date-fns';
import PostDialog, { today } from './postDialog';
import axios from 'axios';
import Cookies from 'js-cookie';
import { ScheduleRequest } from '@/utils';
import { Schedule, ScheduleRemoveRequest, ScheduleRequest } from '@/utils';
function closestChild(children: any, clientX: number, clientY: number) {
let closestElement = null;
@@ -186,6 +186,19 @@ function CalendarApp() {
calendar.events.remove(
parseInt(selected)
);
axios.delete(
`http://localhost:3000/api/posts`,
{
params: {
id: sessionId,
date: format(
date,
'y-MM-dd hh:mm'
),
} satisfies ScheduleRemoveRequest,
}
);
}
}}
className=""
+1
View File
@@ -133,6 +133,7 @@ export default function PostDialog({
start: format(date, 'y-MM-dd hh:mm'),
end: format(end, 'y-MM-dd hh:mm'),
});
axios.put('http://localhost:3000/api/posts', {
scheduled: format(date, 'y-MM-dd hh:mm'),
sessionId,