Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions src/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,9 @@ import {authRouter} from './routers/auth.routers.js';
import {userRouter} from './routers/user.router.js';
import {tagRouter} from './routers/tag.router.js';
import {myPageRouter} from './routers/mypage.routers.js';
import {imageUploader} from './s3/image.uploader.js';
import {trustRouter} from './routers/trust.router.js';

dotenv.config();

const app = express();
Expand Down Expand Up @@ -113,12 +115,12 @@ app.use(sessionAuthMiddleware);
app.use('/onboarding', userRouter);
app.use('/memo', memoFolderRouter);
app.use('/challenge', challengeRouter);
app.use('/user/mypage',myPageRouter);
app.use('/user/mypage', myPageRouter);
app.use('/tag', tagRouter);
app.use('/trust',trustRouter);
app.post('/image/ai', labelDetectionController);

RegisterRoutes(app);
RegisterRoutes(app, {multer: imageUploader});

app.get('/', (req: Request, res: Response) => {
res.send('Sweepic');
Expand Down
211 changes: 123 additions & 88 deletions src/controllers/memo-folder.controller.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,21 @@
import { Response, Request, NextFunction } from 'express';
import { StatusCodes } from 'http-status-codes';
import { bodyToMemoFolder, bodyToMemoTextToUpdate } from '../dtos/memo-folder.dto.js';
import { listMemoFolder, listMemoTextImage, memoFolderCreate, memoFolderImageCreate, memoFolderUpdate, memoSearch, memoTextUpdate } from '../services/memo-folder.service.js';
import { memoImageDelete } from '../services/memo-image.service.js';
import { bodyToMemoImagesToDelete } from '../dtos/memo-image.dto.js';
import { DataValidationError, PhotoValidationError } from '../errors.js';
import {Response, Request, NextFunction, Express} from 'express';
import {StatusCodes} from 'http-status-codes';
import {
bodyToMemoFolder,
bodyToMemoTextToUpdate,
} from '../dtos/memo-folder.dto.js';
import {
listMemoFolder,
listMemoTextImage,
memoFolderCreate,
memoFolderImageCreate,
memoFolderUpdate,
memoSearch,
memoTextUpdate,
} from '../services/memo-folder.service.js';
import {memoImageDelete} from '../services/memo-image.service.js';
import {bodyToMemoImagesToDelete} from '../dtos/memo-image.dto.js';
import {DataValidationError, PhotoValidationError} from '../errors.js';

export const handlerMemoFolderImageCreate = async (
req: Request,
Expand Down Expand Up @@ -171,19 +182,23 @@ export const handlerMemoFolderImageCreate = async (
}
};
*/
try{
const userId = BigInt(req.user!.id);
if (!req.file) {
throw new PhotoValidationError({reason: '저장할 사진이 없습니다.'});
}
const imageUrl = (req.file as Express.MulterS3File).key;
const folderId = req.uploadDirectory;
const memoFolderImage = await memoFolderImageCreate(userId, folderId, imageUrl, req.body);
res.status(StatusCodes.OK).success(memoFolderImage);
}
catch(error){
next(error);
try {
const userId = BigInt(req.user!.id);
if (!req.file) {
throw new PhotoValidationError({reason: '저장할 사진이 없습니다.'});
}
const imageUrl = (req.file as Express.MulterS3File).key;
const folderId = req.uploadDirectory;
const memoFolderImage = await memoFolderImageCreate(
userId,
folderId,
imageUrl,
req.body,
);
res.status(StatusCodes.OK).success(memoFolderImage);
} catch (error) {
next(error);
}
};
export const handlerMemoFolderAdd = async (
req: Request,
Expand Down Expand Up @@ -285,14 +300,16 @@ export const handlerMemoFolderAdd = async (
}
};
*/
try{
const userId = BigInt(req.user!.id);
const memoFolder = await memoFolderCreate(userId, bodyToMemoFolder(req.body));
res.status(StatusCodes.OK).success(memoFolder);
}
catch(error) {
next (error);
}
try {
const userId = BigInt(req.user!.id);
const memoFolder = await memoFolderCreate(
userId,
bodyToMemoFolder(req.body),
);
res.status(StatusCodes.OK).success(memoFolder);
} catch (error) {
next(error);
}
};

export const handlerMemoFolderList = async (
Expand Down Expand Up @@ -339,14 +356,13 @@ export const handlerMemoFolderList = async (
}
};
*/
try{
const userId = BigInt(req.user!.id);
const memoList = await listMemoFolder(userId);
res.status(StatusCodes.OK).success(memoList);
}
catch(error) {
next (error);
}
try {
const userId = BigInt(req.user!.id);
const memoList = await listMemoFolder(userId);
res.status(StatusCodes.OK).success(memoList);
} catch (error) {
next(error);
}
};

export const handlerMemoSearch = async (
Expand Down Expand Up @@ -428,22 +444,25 @@ export const handlerMemoSearch = async (
}
};
*/
try{
const userId = BigInt(req.user!.id);
const searchKeyword = req.query.keyword?.toString();
if (searchKeyword === null || searchKeyword === undefined) {
throw new DataValidationError({reason: '검색어를 1자 이상 입력하세요.'});
}
const searchMemoList = await memoSearch(userId, searchKeyword);
res.status(StatusCodes.OK).success(searchMemoList);
}
catch(error) {
next (error);
try {
const userId = BigInt(req.user!.id);
const searchKeyword = req.query.keyword?.toString();
if (searchKeyword === null || searchKeyword === undefined) {
throw new DataValidationError({reason: '검색어를 1자 이상 입력하세요.'});
}
const searchMemoList = await memoSearch(userId, searchKeyword);
res.status(StatusCodes.OK).success(searchMemoList);
} catch (error) {
next(error);
}
};

export const handlerMemoImageDelete = async (req: Request, res: Response, next: NextFunction): Promise<void> => {
/*
export const handlerMemoImageDelete = async (
req: Request,
res: Response,
next: NextFunction,
): Promise<void> => {
/*
#swagger.tags = ['memo-image-controller']
#swagger.summary = '사진 삭제 API';
#swagger.description = '특정 폴더의 사진을 삭제하는 API입니다.'
Expand Down Expand Up @@ -557,15 +576,18 @@ export const handlerMemoImageDelete = async (req: Request, res: Response, next:
}
};
*/
try{
const userId = BigInt(req.user!.id);
const folderId = BigInt(req.params.folderId);
const memoImagesToMove = await memoImageDelete(userId, folderId, bodyToMemoImagesToDelete(req.body));
res.status(StatusCodes.OK).success(memoImagesToMove);
}
catch(error) {
next (error);
}
try {
const userId = BigInt(req.user!.id);
const folderId = BigInt(req.params.folderId);
const memoImagesToMove = await memoImageDelete(
userId,
folderId,
bodyToMemoImagesToDelete(req.body),
);
res.status(StatusCodes.OK).success(memoImagesToMove);
} catch (error) {
next(error);
}
};
export const handlerMemoTextImageList = async (
req: Request,
Expand Down Expand Up @@ -645,19 +667,22 @@ export const handlerMemoTextImageList = async (
}
};
*/
try{
const userId = BigInt(req.user!.id);
const folderId = BigInt(req.params.folderId);
const memoTextImageList = await listMemoTextImage(userId, folderId);
res.status(StatusCodes.OK).success(memoTextImageList);
}
catch(error) {
next (error);
}
try {
const userId = BigInt(req.user!.id);
const folderId = BigInt(req.params.folderId);
const memoTextImageList = await listMemoTextImage(userId, folderId);
res.status(StatusCodes.OK).success(memoTextImageList);
} catch (error) {
next(error);
}
};

export const handlerMemoFolderUpdate = async (req: Request, res: Response, next: NextFunction) :Promise<void> => {
/*
export const handlerMemoFolderUpdate = async (
req: Request,
res: Response,
next: NextFunction,
): Promise<void> => {
/*
#swagger.tags = ['memo-folder-controller']
#swagger.summary = '메모 폴더 이름 수정 API';
#swagger.description = '특정 폴더의 이름을 수정하는 API입니다.'
Expand Down Expand Up @@ -825,19 +850,26 @@ export const handlerMemoFolderUpdate = async (req: Request, res: Response, next:
}
};
*/
try{
const userId = BigInt(req.user!.id);
const folderId = BigInt(req.params.folderId);
const updatedMemoFolder = await memoFolderUpdate(userId, folderId, bodyToMemoFolder(req.body));
res.status(StatusCodes.OK).success(updatedMemoFolder);
}
catch(error) {
next (error);
}
try {
const userId = BigInt(req.user!.id);
const folderId = BigInt(req.params.folderId);
const updatedMemoFolder = await memoFolderUpdate(
userId,
folderId,
bodyToMemoFolder(req.body),
);
res.status(StatusCodes.OK).success(updatedMemoFolder);
} catch (error) {
next(error);
}
};

export const handlerMemoTextUpdate = async (req: Request, res: Response, next: NextFunction): Promise<void> =>{
/*
export const handlerMemoTextUpdate = async (
req: Request,
res: Response,
next: NextFunction,
): Promise<void> => {
/*
#swagger.tags = ['memo-folder-controller']
#swagger.summary = '특정 폴더의 메모 텍스트 수정 API';
#swagger.description = '특정 폴더의 메모 텍스트를 수정하는 API입니다.'
Expand Down Expand Up @@ -924,13 +956,16 @@ export const handlerMemoTextUpdate = async (req: Request, res: Response, next: N
}
};
*/
try{
const userId = BigInt(req.user!.id);
const folderId = BigInt(req.params.folderId);
const memoTextImageList = await memoTextUpdate(userId, folderId, bodyToMemoTextToUpdate(req.body));
res.status(StatusCodes.OK).success(memoTextImageList);
}
catch(error) {
next (error);
}
try {
const userId = BigInt(req.user!.id);
const folderId = BigInt(req.params.folderId);
const memoTextImageList = await memoTextUpdate(
userId,
folderId,
bodyToMemoTextToUpdate(req.body),
);
res.status(StatusCodes.OK).success(memoTextImageList);
} catch (error) {
next(error);
}
};
Loading