schedule delete
This commit is contained in:
@@ -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 }
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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=""
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -12,6 +12,11 @@ export interface ScheduleRequest extends PostRequest {
|
||||
scheduled: string;
|
||||
}
|
||||
|
||||
export interface ScheduleRemoveRequest {
|
||||
date: string;
|
||||
id: string;
|
||||
}
|
||||
|
||||
/*
|
||||
Database types
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user