schedule delete
This commit is contained in:
@@ -3,6 +3,7 @@ import database from '../database';
|
|||||||
import { PostRequest, ScheduleRequest } from '@/utils';
|
import { PostRequest, ScheduleRequest } from '@/utils';
|
||||||
import post from './post';
|
import post from './post';
|
||||||
import { ObjectId } from 'mongodb';
|
import { ObjectId } from 'mongodb';
|
||||||
|
import { HttpStatusCode } from 'axios';
|
||||||
|
|
||||||
export async function POST(req: NextRequest) {
|
export async function POST(req: NextRequest) {
|
||||||
const { sessionId, content, platforms }: PostRequest = await req.json();
|
const { sessionId, content, platforms }: PostRequest = await req.json();
|
||||||
@@ -12,7 +13,7 @@ export async function POST(req: NextRequest) {
|
|||||||
if (typeof sessionId !== 'string')
|
if (typeof sessionId !== 'string')
|
||||||
return NextResponse.json(
|
return NextResponse.json(
|
||||||
{
|
{
|
||||||
message: 'Invalid structure, required param `id=`',
|
message: 'Invalid structure',
|
||||||
},
|
},
|
||||||
{ status: 400 }
|
{ status: 400 }
|
||||||
);
|
);
|
||||||
@@ -47,12 +48,16 @@ export async function PUT(req: NextRequest) {
|
|||||||
const { sessionId, scheduled, content, platforms }: ScheduleRequest =
|
const { sessionId, scheduled, content, platforms }: ScheduleRequest =
|
||||||
await req.json();
|
await req.json();
|
||||||
|
|
||||||
if (typeof sessionId !== 'string')
|
if (
|
||||||
|
typeof sessionId !== 'string' ||
|
||||||
|
typeof scheduled !== 'string' ||
|
||||||
|
typeof content !== 'string'
|
||||||
|
)
|
||||||
return NextResponse.json(
|
return NextResponse.json(
|
||||||
{
|
{
|
||||||
message: 'Invalid structure, required param `id=`',
|
message: 'Invalid structure',
|
||||||
},
|
},
|
||||||
{ status: 400 }
|
{ status: HttpStatusCode.BadRequest }
|
||||||
);
|
);
|
||||||
|
|
||||||
const session = await database.sessions.findOne({
|
const session = await database.sessions.findOne({
|
||||||
@@ -64,7 +69,7 @@ export async function PUT(req: NextRequest) {
|
|||||||
{
|
{
|
||||||
message: 'Invalid session',
|
message: 'Invalid session',
|
||||||
},
|
},
|
||||||
{ status: 404 }
|
{ status: HttpStatusCode.NotFound }
|
||||||
);
|
);
|
||||||
|
|
||||||
database.schedules.insertOne({
|
database.schedules.insertOne({
|
||||||
@@ -78,7 +83,7 @@ export async function PUT(req: NextRequest) {
|
|||||||
{
|
{
|
||||||
message: 'ok',
|
message: 'ok',
|
||||||
},
|
},
|
||||||
{ status: 200 }
|
{ status: HttpStatusCode.Ok }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,7 +95,7 @@ export async function GET(req: NextRequest) {
|
|||||||
{
|
{
|
||||||
message: 'Invalid structure, required param `id=`',
|
message: 'Invalid structure, required param `id=`',
|
||||||
},
|
},
|
||||||
{ status: 400 }
|
{ status: HttpStatusCode.BadRequest }
|
||||||
);
|
);
|
||||||
|
|
||||||
const session = await database.sessions.findOne({
|
const session = await database.sessions.findOne({
|
||||||
@@ -102,7 +107,7 @@ export async function GET(req: NextRequest) {
|
|||||||
{
|
{
|
||||||
message: 'Invalid session',
|
message: 'Invalid session',
|
||||||
},
|
},
|
||||||
{ status: 404 }
|
{ status: HttpStatusCode.NotFound }
|
||||||
);
|
);
|
||||||
|
|
||||||
const schedules = await database.schedules
|
const schedules = await database.schedules
|
||||||
@@ -116,6 +121,52 @@ export async function GET(req: NextRequest) {
|
|||||||
message: 'ok',
|
message: 'ok',
|
||||||
schedules,
|
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 }
|
{ status: 200 }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import { format, parse } from 'date-fns';
|
|||||||
import PostDialog, { today } from './postDialog';
|
import PostDialog, { today } from './postDialog';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import Cookies from 'js-cookie';
|
import Cookies from 'js-cookie';
|
||||||
import { ScheduleRequest } from '@/utils';
|
import { Schedule, ScheduleRemoveRequest, ScheduleRequest } from '@/utils';
|
||||||
|
|
||||||
function closestChild(children: any, clientX: number, clientY: number) {
|
function closestChild(children: any, clientX: number, clientY: number) {
|
||||||
let closestElement = null;
|
let closestElement = null;
|
||||||
@@ -186,6 +186,19 @@ function CalendarApp() {
|
|||||||
calendar.events.remove(
|
calendar.events.remove(
|
||||||
parseInt(selected)
|
parseInt(selected)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
axios.delete(
|
||||||
|
`http://localhost:3000/api/posts`,
|
||||||
|
{
|
||||||
|
params: {
|
||||||
|
id: sessionId,
|
||||||
|
date: format(
|
||||||
|
date,
|
||||||
|
'y-MM-dd hh:mm'
|
||||||
|
),
|
||||||
|
} satisfies ScheduleRemoveRequest,
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
className=""
|
className=""
|
||||||
|
|||||||
@@ -133,6 +133,7 @@ export default function PostDialog({
|
|||||||
start: format(date, 'y-MM-dd hh:mm'),
|
start: format(date, 'y-MM-dd hh:mm'),
|
||||||
end: format(end, 'y-MM-dd hh:mm'),
|
end: format(end, 'y-MM-dd hh:mm'),
|
||||||
});
|
});
|
||||||
|
|
||||||
axios.put('http://localhost:3000/api/posts', {
|
axios.put('http://localhost:3000/api/posts', {
|
||||||
scheduled: format(date, 'y-MM-dd hh:mm'),
|
scheduled: format(date, 'y-MM-dd hh:mm'),
|
||||||
sessionId,
|
sessionId,
|
||||||
|
|||||||
@@ -12,6 +12,11 @@ export interface ScheduleRequest extends PostRequest {
|
|||||||
scheduled: string;
|
scheduled: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface ScheduleRemoveRequest {
|
||||||
|
date: string;
|
||||||
|
id: string;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Database types
|
Database types
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user