-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #4 from blazyy/server-components
Server components
- Loading branch information
Showing
186 changed files
with
796 additions
and
1,752 deletions.
There are no files selected for viewing
File renamed without changes.
29 changes: 29 additions & 0 deletions
29
app/api/planner/boards/[boardId]/categories/[categoryId]/route.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
// pages/api/planner/boards/[boardId]/categories/[categoryId]/route.ts | ||
import { ExtendedNextRequest, Params, withMiddleware } from '@/lib/middleware' | ||
import Planner from '@/models/Planner' | ||
import { NextResponse } from 'next/server' | ||
|
||
export const DELETE = withMiddleware( | ||
async (req: ExtendedNextRequest, { params }: { params: Params }): Promise<NextResponse> => { | ||
const { userId } = req | ||
const { boardId, categoryId } = params | ||
|
||
const docs = await Planner.findOne({ clerkUserId: userId }) | ||
const updateObject: any = {} | ||
|
||
for (const [key, value] of Object.entries(docs.taskCards)) { | ||
if ((value as any).category === categoryId) { | ||
updateObject[`taskCards.${key}.category`] = 'unassigned' | ||
} | ||
} | ||
|
||
if (Object.keys(updateObject).length > 0) { | ||
await Planner.updateOne({ clerkUserId: userId }, { $set: updateObject }) | ||
} | ||
|
||
await Planner.updateOne({ clerkUserId: userId }, { $unset: { [`categories.${categoryId}`]: '' } }) | ||
await Planner.updateOne({ clerkUserId: userId }, { $pull: { [`boards.${boardId}.categories`]: categoryId } }) | ||
|
||
return NextResponse.json({ status: 204 }) | ||
} | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
// pages/api/planner/boards/[boardId]/categories/route.ts | ||
import { ExtendedNextRequest, Params, withMiddleware } from '@/lib/middleware' | ||
import Planner from '@/models/Planner' | ||
import { NextResponse } from 'next/server' | ||
|
||
interface AddNewCategoryRequestBody { | ||
newCategoryDetails: { id: string; [key: string]: any } | ||
} | ||
|
||
export const POST = withMiddleware( | ||
async (req: ExtendedNextRequest, { params }: { params: Params }): Promise<NextResponse> => { | ||
const { userId } = req | ||
const { boardId } = params | ||
const { newCategoryDetails }: AddNewCategoryRequestBody = await req.json() | ||
|
||
await Planner.updateOne( | ||
{ clerkUserId: userId }, | ||
{ | ||
$set: { | ||
[`categories.${newCategoryDetails.id}`]: newCategoryDetails, | ||
}, | ||
} | ||
) | ||
|
||
await Planner.updateOne( | ||
{ clerkUserId: userId }, | ||
{ $push: { [`boards.${boardId}.categories`]: newCategoryDetails.id } } | ||
) | ||
|
||
return NextResponse.json({ status: 201 }) | ||
} | ||
) |
25 changes: 25 additions & 0 deletions
25
app/api/planner/boards/[boardId]/columns/[columnId]/route.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
// pages/api/planner/boards/[boardId]/columns/[columnId]/route.ts | ||
import { ExtendedNextRequest, Params, withMiddleware } from '@/lib/middleware' | ||
import Planner from '@/models/Planner' | ||
import { NextResponse } from 'next/server' | ||
|
||
export const DELETE = withMiddleware( | ||
async (req: ExtendedNextRequest, { params }: { params: Params }): Promise<NextResponse> => { | ||
const { userId } = req | ||
const { boardId, columnId } = params | ||
|
||
await Planner.updateOne( | ||
{ clerkUserId: userId }, | ||
{ | ||
$pull: { | ||
[`boards.${boardId}.columns`]: columnId, | ||
}, | ||
$unset: { | ||
[`columns.${columnId}`]: 1, | ||
}, | ||
} | ||
) | ||
|
||
return NextResponse.json({ status: 204 }) | ||
} | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
import { ExtendedNextRequest, Params, withMiddleware } from '@/lib/middleware' | ||
import Planner from '@/models/Planner' | ||
import { NextResponse } from 'next/server' | ||
|
||
interface ChangeColumnOrderRequestBody { | ||
newColumnOrder: string[] | ||
} | ||
|
||
export const PATCH = withMiddleware( | ||
async (req: ExtendedNextRequest, { params }: { params: Params }): Promise<NextResponse> => { | ||
const { userId } = req | ||
const { boardId } = params | ||
const { newColumnOrder }: ChangeColumnOrderRequestBody = await req.json() | ||
|
||
await Planner.updateOne( | ||
{ clerkUserId: userId, [`boards.${boardId}.id`]: boardId }, | ||
{ $set: { [`boards.${boardId}.columns`]: newColumnOrder } } | ||
) | ||
|
||
return NextResponse.json({ status: 204 }) | ||
} | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
// pages/api/planner/boards/[boardId]/columns/route.ts | ||
import { ExtendedNextRequest, Params, withMiddleware } from '@/lib/middleware' | ||
import Planner from '@/models/Planner' | ||
import { NextResponse } from 'next/server' | ||
|
||
interface AddNewColumnRequestBody { | ||
newColumnDetails: { id: string; [key: string]: any } | ||
updatedColumns: string[] | ||
} | ||
|
||
export const POST = withMiddleware( | ||
async (req: ExtendedNextRequest, { params }: { params: Params }): Promise<NextResponse> => { | ||
const { userId } = req | ||
const { boardId } = params | ||
const { newColumnDetails, updatedColumns }: AddNewColumnRequestBody = await req.json() | ||
|
||
await Planner.updateOne( | ||
{ clerkUserId: userId }, | ||
{ | ||
$set: { | ||
[`boards.${boardId}.columns`]: updatedColumns, | ||
[`columns.${newColumnDetails.id}`]: newColumnDetails, | ||
}, | ||
} | ||
) | ||
|
||
return NextResponse.json({ status: 201 }) | ||
} | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
import { ExtendedNextRequest, Params, withMiddleware } from '@/lib/middleware' | ||
import Planner from '@/models/Planner' | ||
import { NextResponse } from 'next/server' | ||
|
||
export const PATCH = withMiddleware(async (req: ExtendedNextRequest, { params }: { params: Params }) => { | ||
const { userId } = req | ||
const { boardId } = params | ||
const { newName } = await req.json() | ||
await Planner.updateOne( | ||
{ clerkUserId: userId }, | ||
{ | ||
$set: { | ||
[`boards.${boardId}.name`]: newName, | ||
}, | ||
} | ||
) | ||
return NextResponse.json({ status: 200 }) | ||
}) | ||
|
||
export const DELETE = withMiddleware(async (req: ExtendedNextRequest, { params }: { params: Params }) => { | ||
const { userId } = req | ||
const { boardId } = params | ||
await Planner.updateOne( | ||
{ clerkUserId: userId }, | ||
{ | ||
$pull: { | ||
boardOrder: boardId, | ||
}, | ||
$unset: { | ||
[`boards.${boardId}`]: '', | ||
}, | ||
} | ||
) | ||
return NextResponse.json({ status: 204 }) | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
import { ExtendedNextRequest, withMiddleware } from '@/lib/middleware' | ||
import Planner from '@/models/Planner' | ||
import { NextResponse } from 'next/server' | ||
|
||
export const POST = withMiddleware(async (req: ExtendedNextRequest) => { | ||
const { userId } = req | ||
const { boardId, boardName, unassignedCategoryDetails } = await req.json() | ||
await Planner.updateMany( | ||
{ clerkUserId: userId }, | ||
{ | ||
$push: { | ||
boardOrder: boardId, | ||
}, | ||
$set: { | ||
[`boards.${boardId}`]: { | ||
id: boardId, | ||
name: boardName, | ||
columns: [], | ||
categories: [unassignedCategoryDetails.id], | ||
}, | ||
[`categories.${unassignedCategoryDetails.id}`]: unassignedCategoryDetails, | ||
}, | ||
} | ||
) | ||
return NextResponse.json({ status: 201 }) | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
import { ExtendedNextRequest, withMiddleware } from '@/lib/middleware' | ||
import Planner from '@/models/Planner' | ||
import { NextResponse } from 'next/server' | ||
|
||
interface MoveCardRequestBody { | ||
sourceColumnId: string | ||
destColumnId: string | ||
sourceColumnTaskCardIds: string[] | ||
destColumnTaskCardIds: string[] | ||
} | ||
|
||
export const PATCH = withMiddleware(async (req: ExtendedNextRequest): Promise<NextResponse> => { | ||
const { userId } = req | ||
const { sourceColumnId, destColumnId, sourceColumnTaskCardIds, destColumnTaskCardIds }: MoveCardRequestBody = | ||
await req.json() | ||
|
||
await Planner.updateMany( | ||
{ | ||
clerkUserId: userId, | ||
$or: [{ [`columns.${sourceColumnId}.id`]: sourceColumnId }, { [`columns.${destColumnId}.id`]: destColumnId }], | ||
}, | ||
{ | ||
$set: { | ||
[`columns.${sourceColumnId}.taskCards`]: sourceColumnTaskCardIds, | ||
[`columns.${destColumnId}.taskCards`]: destColumnTaskCardIds, | ||
}, | ||
} | ||
) | ||
|
||
return NextResponse.json({ status: 204 }) | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
import { ExtendedNextRequest, Params, withMiddleware } from '@/lib/middleware' | ||
import Planner from '@/models/Planner' | ||
import { NextResponse } from 'next/server' | ||
|
||
interface CardModificationRequestBody { | ||
title?: string | ||
content?: string | ||
checked?: boolean | ||
category?: string | ||
} | ||
|
||
export const PATCH = withMiddleware( | ||
async (req: ExtendedNextRequest, { params }: { params: Params }): Promise<NextResponse> => { | ||
const { userId } = req | ||
const { cardId } = params | ||
const body: CardModificationRequestBody = await req.json() | ||
|
||
const [key, value] = Object.entries(body)[0] | ||
const updateField = { [`taskCards.${cardId}.${key}`]: value } | ||
|
||
await Planner.updateOne( | ||
{ clerkUserId: userId }, | ||
{ | ||
$set: updateField, | ||
} | ||
) | ||
|
||
return NextResponse.json({ status: 204 }) | ||
} | ||
) |
21 changes: 21 additions & 0 deletions
21
app/api/planner/cards/[cardId]/subtasks/[subTaskId]/route.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
import { ExtendedNextRequest, Params, withMiddleware } from '@/lib/middleware' | ||
import Planner from '@/models/Planner' | ||
import { NextResponse } from 'next/server' | ||
|
||
export const DELETE = withMiddleware( | ||
async (req: ExtendedNextRequest, { params }: { params: Params }): Promise<NextResponse> => { | ||
const { userId } = req | ||
const { cardId, subTaskId } = params | ||
|
||
// Remove the subtask from the subtask object using $unset | ||
await Planner.updateOne({ clerkUserId: userId }, { $unset: { [`subTasks.${subTaskId}`]: '' } }) | ||
|
||
// Remove the subtask from the subtask list within the specified taskcard using $pull | ||
await Planner.updateOne( | ||
{ clerkUserId: userId, [`taskCards.${cardId}.id`]: cardId }, | ||
{ $pull: { [`taskCards.${cardId}.subTasks`]: subTaskId } } | ||
) | ||
|
||
return NextResponse.json({ status: 204 }) | ||
} | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
// pages/api/planner/cards/[taskCardId]/subtasks/move/route.ts | ||
import { ExtendedNextRequest, Params, withMiddleware } from '@/lib/middleware' | ||
import Planner from '@/models/Planner' | ||
import { NextResponse } from 'next/server' | ||
|
||
interface MoveSubtaskRequestBody { | ||
reorderedSubTasks: string[] | ||
} | ||
|
||
export const PATCH = withMiddleware( | ||
async (req: ExtendedNextRequest, { params }: { params: Params }): Promise<NextResponse> => { | ||
const { userId } = req | ||
const { cardId } = params | ||
const { reorderedSubTasks }: MoveSubtaskRequestBody = await req.json() | ||
|
||
await Planner.updateOne( | ||
{ clerkUserId: userId, [`taskCards.${cardId}.id`]: cardId }, | ||
{ $set: { [`taskCards.${cardId}.subTasks`]: reorderedSubTasks } } | ||
) | ||
|
||
return NextResponse.json({ status: 204 }) | ||
} | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
// pages/api/planner/cards/[taskCardId]/subtasks/route.ts | ||
import { ExtendedNextRequest, Params, withMiddleware } from '@/lib/middleware' | ||
import Planner from '@/models/Planner' | ||
import { NextResponse } from 'next/server' | ||
|
||
interface AddNewSubTaskRequestBody { | ||
newSubTaskDetails: { id: string; [key: string]: any } | ||
newSubTasksOrder: string[] | ||
} | ||
|
||
export const POST = withMiddleware( | ||
async (req: ExtendedNextRequest, { params }: { params: Params }): Promise<NextResponse> => { | ||
const { userId } = req | ||
const { cardId } = params | ||
const { newSubTaskDetails, newSubTasksOrder }: AddNewSubTaskRequestBody = await req.json() | ||
|
||
await Planner.updateOne( | ||
{ clerkUserId: userId }, | ||
{ | ||
$set: { | ||
[`taskCards.${cardId}.subTasks`]: newSubTasksOrder, | ||
[`subTasks.${newSubTaskDetails.id}`]: newSubTaskDetails, | ||
}, | ||
} | ||
) | ||
|
||
return NextResponse.json({ status: 201 }) | ||
} | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
// pages/api/planner/categories/[categoryId]/route.ts | ||
import { ExtendedNextRequest, Params, withMiddleware } from '@/lib/middleware' | ||
import Planner from '@/models/Planner' | ||
import { NextResponse } from 'next/server' | ||
|
||
interface ChangeCategoryInfoRequestBody { | ||
newName: string | ||
newColor: string | ||
} | ||
|
||
export const PATCH = withMiddleware( | ||
async (req: ExtendedNextRequest, { params }: { params: Params }): Promise<NextResponse> => { | ||
const { userId } = req | ||
const { categoryId } = params | ||
const { newName, newColor }: ChangeCategoryInfoRequestBody = await req.json() | ||
|
||
await Planner.updateOne( | ||
{ clerkUserId: userId }, | ||
{ | ||
$set: { | ||
[`categories.${categoryId}.name`]: newName, | ||
[`categories.${categoryId}.color`]: newColor, | ||
}, | ||
} | ||
) | ||
|
||
return NextResponse.json({ status: 201 }) | ||
} | ||
) |
19 changes: 19 additions & 0 deletions
19
app/api/planner/columns/[columnId]/cards/[cardId]/route.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
import { ExtendedNextRequest, Params, withMiddleware } from '@/lib/middleware' | ||
import Planner from '@/models/Planner' | ||
import { NextResponse } from 'next/server' | ||
|
||
export const DELETE = withMiddleware( | ||
async (req: ExtendedNextRequest, { params }: { params: Params }): Promise<NextResponse> => { | ||
const { userId } = req | ||
const { columnId, cardId } = params | ||
|
||
await Planner.updateOne({ clerkUserId: userId }, { $unset: { [`taskCards.${cardId}`]: '' } }) | ||
|
||
await Planner.updateOne( | ||
{ clerkUserId: userId, [`columns.${columnId}.id`]: columnId }, | ||
{ $pull: { [`columns.${columnId}.taskCards`]: cardId } } | ||
) | ||
|
||
return NextResponse.json({ status: 204 }) | ||
} | ||
) |
Oops, something went wrong.