From a08fb4bbb4477d923044a0c285faf04aad6171ae Mon Sep 17 00:00:00 2001 From: RInRInPark Date: Sun, 13 Aug 2023 21:49:35 +0900 Subject: [PATCH 1/4] =?UTF-8?q?=F0=9F=8F=97=EF=B8=8F=20build:=20addPagingT?= =?UTF-8?q?oRecommend?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/controller/publicCourseController.js | 2 +- src/controller/publicCourseController.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/controller/publicCourseController.js b/dist/controller/publicCourseController.js index ef63d45..05d12ca 100644 --- a/dist/controller/publicCourseController.js +++ b/dist/controller/publicCourseController.js @@ -124,7 +124,7 @@ const recommendPublicCourse = (req, res) => __awaiter(void 0, void 0, void 0, fu } const userId = req.body.userId; // countPerPage -> 페이지 크기(한 페이지에 몇 개의 데이터) - const pageSize = 24; // 24개씩 넘겨줌 + const pageSize = 20; // 20개씩 넘겨줌 // pageNo -> 페이지 번호(몇 번 페이지) let pageNo = parseInt(req.query.pageNo); // 페이지번호가 요청으로 들어오지 않을시 자동으로 1번 req diff --git a/src/controller/publicCourseController.ts b/src/controller/publicCourseController.ts index 4e9ff26..e28ab9c 100644 --- a/src/controller/publicCourseController.ts +++ b/src/controller/publicCourseController.ts @@ -125,7 +125,7 @@ const recommendPublicCourse = async (req: Request, res: Response) => { const userId: number = req.body.userId; // countPerPage -> 페이지 크기(한 페이지에 몇 개의 데이터) - const pageSize = 24; // 24개씩 넘겨줌 + const pageSize = 20; // 20개씩 넘겨줌 // pageNo -> 페이지 번호(몇 번 페이지) let pageNo = parseInt(req.query.pageNo as string); // 페이지번호가 요청으로 들어오지 않을시 자동으로 1번 req From 4a9e97aad2bf500e4008258b7e949de6402c3a73 Mon Sep 17 00:00:00 2001 From: RInRInPark Date: Sun, 13 Aug 2023 21:50:14 +0900 Subject: [PATCH 2/4] =?UTF-8?q?=F0=9F=8F=97=EF=B8=8F=20build:=20addPagingT?= =?UTF-8?q?oRecommend?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/controller/publicCourseController.js | 2 +- src/controller/publicCourseController.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/controller/publicCourseController.js b/dist/controller/publicCourseController.js index 05d12ca..295f122 100644 --- a/dist/controller/publicCourseController.js +++ b/dist/controller/publicCourseController.js @@ -124,7 +124,7 @@ const recommendPublicCourse = (req, res) => __awaiter(void 0, void 0, void 0, fu } const userId = req.body.userId; // countPerPage -> 페이지 크기(한 페이지에 몇 개의 데이터) - const pageSize = 20; // 20개씩 넘겨줌 + const pageSize = 24; // 20개씩 넘겨줌 // pageNo -> 페이지 번호(몇 번 페이지) let pageNo = parseInt(req.query.pageNo); // 페이지번호가 요청으로 들어오지 않을시 자동으로 1번 req diff --git a/src/controller/publicCourseController.ts b/src/controller/publicCourseController.ts index e28ab9c..3e42dcd 100644 --- a/src/controller/publicCourseController.ts +++ b/src/controller/publicCourseController.ts @@ -125,7 +125,7 @@ const recommendPublicCourse = async (req: Request, res: Response) => { const userId: number = req.body.userId; // countPerPage -> 페이지 크기(한 페이지에 몇 개의 데이터) - const pageSize = 20; // 20개씩 넘겨줌 + const pageSize = 24; // 20개씩 넘겨줌 // pageNo -> 페이지 번호(몇 번 페이지) let pageNo = parseInt(req.query.pageNo as string); // 페이지번호가 요청으로 들어오지 않을시 자동으로 1번 req From a704996702b7c0e15bfb0fa1c5e06c1e47d51bf7 Mon Sep 17 00:00:00 2001 From: RInRInPark Date: Sun, 13 Aug 2023 21:57:03 +0900 Subject: [PATCH 3/4] =?UTF-8?q?=F0=9F=8F=97=EF=B8=8F=20build:=20addPagingT?= =?UTF-8?q?oRecommend=20=EC=97=90=EB=9F=AC=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/module/social.js | 74 ----------- dist/service/courseService.js | 243 ---------------------------------- 2 files changed, 317 deletions(-) diff --git a/dist/module/social.js b/dist/module/social.js index e7a9e9d..bb1afd6 100644 --- a/dist/module/social.js +++ b/dist/module/social.js @@ -71,78 +71,4 @@ const social = { kakao, }; exports.default = social; -======= -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const jsonwebtoken_1 = __importDefault(require("jsonwebtoken")); -const google_auth_library_1 = require("google-auth-library"); -const axios_1 = __importDefault(require("axios")); -const google = (idToken) => __awaiter(void 0, void 0, void 0, function* () { - var _a, _b, _c; - try { - const client = new google_auth_library_1.OAuth2Client(process.env.GOOGLE_CLIENT_ID); - const ticket = yield client.verifyIdToken({ - idToken: idToken, - audience: [(_a = process.env.GOOGLE_CLIENT_ID) !== null && _a !== void 0 ? _a : "", (_b = process.env.GOOGLE_CLIENT_ID_2) !== null && _b !== void 0 ? _b : "", (_c = process.env.GOOGLE_CLIENT_ID_3) !== null && _c !== void 0 ? _c : ""], - }); // ' A ?? B : A가 null 또는 undefined일 경우 B를 반환한다 - const payload = ticket.getPayload(); - if (payload) { - return { socialId: payload["sub"], email: payload["email"], provider: "GOOGLE" }; - } - return null; - } - catch (error) { - console.log(error); - if ((error === null || error === void 0 ? void 0 : error.toString().indexOf('Token used too late')) != -1) - return `만료된 소셜 토큰 입니다.`; - } -}); -const apple = (appleToken) => __awaiter(void 0, void 0, void 0, function* () { - try { - const appleUser = jsonwebtoken_1.default.decode(appleToken); - console.log(appleUser); - if (appleUser || appleUser.email_verified == "true") { - return { socialId: appleUser["sub"], email: appleUser["email"], provider: "APPLE" }; - } - //appleUser가 Null인경우 : 토큰자체에러 - //appleUser.email_verified가 false : 이메일이 확인되지 ㅏㅇㄴㅎ았다 - return null; - } - catch (error) { - console.log(error); - } -}); -const kakao = (kakaoAccessToken) => __awaiter(void 0, void 0, void 0, function* () { - try { - const user = yield (0, axios_1.default)({ - method: "get", - url: "https://kapi.kakao.com/v2/user/me", - headers: { - Authorization: `Bearer ${kakaoAccessToken}`, - }, - }); - return { socialId: user.data.id.toString(), email: user.data.kakao_account.email, provider: "KAKAO" }; - } - catch (error) { - console.log(error); - } -}); -const social = { - google, - apple, - kakao, -}; -exports.default = social; //# sourceMappingURL=social.js.map \ No newline at end of file diff --git a/dist/service/courseService.js b/dist/service/courseService.js index 497d5cf..25d7f09 100644 --- a/dist/service/courseService.js +++ b/dist/service/courseService.js @@ -239,247 +239,4 @@ const courseService = { deleteCourse, }; exports.default = courseService; -======= -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const convertTime_1 = require("./../module/convert/convertTime"); -const client_1 = require("@prisma/client"); -const pathConvertCoor_1 = require("../module/convert/pathConvertCoor"); -const service_1 = require("../service"); -const constant_1 = require("../constant"); -const runtime_1 = require("@prisma/client/runtime"); -const prisma = new client_1.PrismaClient(); -//* 코스 그리기 -const createCourse = (courseCreateDTO) => __awaiter(void 0, void 0, void 0, function* () { - try { - if (courseCreateDTO.detail || courseCreateDTO.name) { - //출발지 디테일과 건물이름 둘다 존재시 - const k = yield prisma.$queryRaw `INSERT INTO "Course" (user_id, departure_region, departure_city, departure_town, departure_detail, distance, image, departure_name, path) VALUES(${courseCreateDTO.userId}, ${courseCreateDTO.region}, ${courseCreateDTO.city}, ${courseCreateDTO.town}, ${courseCreateDTO.detail}, ${courseCreateDTO.distance}::real, ${courseCreateDTO.image}, ${courseCreateDTO.name}, ${courseCreateDTO.path}::path)`; - } - else if (courseCreateDTO.detail) { - //출발지 디테일은 존재안하고 건물이름만 존재시 - const k = yield prisma.$queryRaw `INSERT INTO "Course" (user_id, departure_region, departure_city, departure_town, departure_detail, distance, image, path) VALUES(${courseCreateDTO.userId}, ${courseCreateDTO.region}, ${courseCreateDTO.city}, ${courseCreateDTO.town}, ${courseCreateDTO.detail}, ${courseCreateDTO.distance}::real, ${courseCreateDTO.image}, ${courseCreateDTO.path}::path)`; - } - else if (courseCreateDTO.name) { - //출발지 디테일은 존재하고 건물이름만 존재안할때 - const k = yield prisma.$queryRaw `INSERT INTO "Course" (user_id, departure_region, departure_city, departure_town, distance, image, departure_name, path) VALUES(${courseCreateDTO.userId}, ${courseCreateDTO.region}, ${courseCreateDTO.city}, ${courseCreateDTO.town}, ${courseCreateDTO.distance}::real, ${courseCreateDTO.image}, ${courseCreateDTO.name}, ${courseCreateDTO.path}::path)`; - } - else { - //출발지 디테일과 건물이름 둘다 존재안할때 - const k = yield prisma.$queryRaw `INSERT INTO "Course" (user_id, departure_region, departure_city, departure_town, distance, image, path) VALUES(${courseCreateDTO.userId}, ${courseCreateDTO.region}, ${courseCreateDTO.city}, ${courseCreateDTO.town}, ${courseCreateDTO.distance}::real, ${courseCreateDTO.image}, ${courseCreateDTO.path}::path)`; - } - const result = yield prisma.course.findFirst({ - orderBy: { - created_at: "desc", - }, - }); - // User: createdCourse + 1 - yield prisma.user.update({ - where: { - id: courseCreateDTO.userId, - }, - data: { - created_course: { increment: 1 }, - }, - }); - yield service_1.stampService.createStampByUser(courseCreateDTO.userId, "c"); - const createdCourse = { course: { id: result === null || result === void 0 ? void 0 : result.id, createdAt: (0, convertTime_1.dateConvertString)(result === null || result === void 0 ? void 0 : result.created_at) } }; - return createdCourse; - } - catch (error) { - if (error instanceof runtime_1.PrismaClientKnownRequestError && (error.code == "22P03" || error.code === "P2010")) { - console.log(error); - console.log(courseCreateDTO); - } - else { - console.log(error); - } - throw error; - } -}); -const getCourseByUser = (userId) => __awaiter(void 0, void 0, void 0, function* () { - try { - // 현재 유저가 우리 회원인지는 auth 미들웨어에서 검사함 - const result = yield prisma.course.findMany({ - where: { - user_id: userId, - deleted_at: null, - }, - orderBy: { - created_at: "desc", - }, - }); - if (!result) - return null; - const courses = result.map((pc) => { - let course = { - id: pc.id, - image: pc.image, - createdAt: (0, convertTime_1.dateConvertString)(pc.created_at), - departure: { - region: pc.departure_region, - city: pc.departure_city, - }, - }; - return course; - }); - const courseGetDTO = { - user: { - id: userId, - }, - courses: courses, - }; - return courseGetDTO; - } - catch (error) { - console.error(error); - throw error; - } -}); -const getPrivateCourseByUser = (userId) => __awaiter(void 0, void 0, void 0, function* () { - try { - // 현재 유저가 우리 회원인지는 auth 미들웨어에서 검사함 - const result = yield prisma.course.findMany({ - where: { - AND: [{ user_id: userId }, { private: true }, { deleted_at: null }], - }, - orderBy: { - created_at: "desc", - }, - }); - if (!result) - return null; - const privateCourses = result.map((pc) => { - let privateCourse = { - id: pc.id, - image: pc.image, - createdAt: (0, convertTime_1.dateConvertString)(pc.created_at), - distance: pc.distance, - departure: { - region: pc.departure_region, - city: pc.departure_city, - town: pc.departure_town, - name: pc.departure_name, - }, - }; - return privateCourse; - }); - const privateCourseGetDTO = { - user: { - id: userId, - }, - privateCourses: privateCourses, - }; - return privateCourseGetDTO; - } - catch (error) { - console.error(error); - throw error; - } -}); -const getCourseDetail = (userId, courseId) => __awaiter(void 0, void 0, void 0, function* () { - try { - const result = yield prisma.$queryRaw `SELECT id, created_at, path::text, distance::text, departure_region, departure_city, departure_town, departure_name, image FROM "Course" WHERE id=${courseId} AND deleted_at IS NULL`; - if (!result[0]) - return null; - const courseDetailGetDTO = { - user: { - id: userId, - }, - course: { - id: courseId, - createdAt: (0, convertTime_1.dateConvertString)(result[0]["created_at"]), - path: (0, pathConvertCoor_1.pathConvertCoor)(result[0]["path"]), - distance: Number(result[0]["distance"]), - image: result[0]["image"], - departure: { - region: result[0]["departure_region"], - city: result[0]["departure_city"], - town: result[0]["departure_town"], - name: result[0]["departure_name"], - }, - }, - }; - return courseDetailGetDTO; - } - catch (error) { - console.error(error); - throw error; - } -}); -const deleteCourse = (courseIdList) => __awaiter(void 0, void 0, void 0, function* () { - try { - //1. 코스삭제 -> deleteAt 업데이트 - //2. update한 코스들에 연결된 publicCourse 삭제 - const deletedCourse = yield prisma.course.updateMany({ - where: { - id: { - in: courseIdList, - }, - }, - data: { - deleted_at: new Date(), - }, - }); - //! - console.log("업데이트된 코스"); - console.log(deletedCourse); - /** - * const result = await prisma.course.findMany({ - where: { - AND: [{ user_id: userId }, { private: true }, { deleted_at: null }], - }, - orderBy: { - created_at: "desc", - }, - }); - */ - const deletedPublicCourseData = yield prisma.course.findMany({ - where: { - AND: [{ id: { in: courseIdList } }, { private: false }], - }, - include: { - PublicCourse: true, - }, - }); - //! - console.log("삭제할 퍼블릭코스들"); - console.log(deletedPublicCourseData); - const deletedPublicCourseIdList = new Array; - deletedPublicCourseData.forEach((pc) => { - var _a; - deletedPublicCourseIdList.push((_a = pc.PublicCourse) === null || _a === void 0 ? void 0 : _a.id); - }); - //! - console.log("삭제할 퍼블릭코스아이디들"); - console.log(deletedPublicCourseIdList); - const deletedPublicCourse = yield service_1.publicCourseService.deletePublicCourse(deletedPublicCourseIdList); - if (deletedCourse.count === 0 || deletedCourse.count != courseIdList.length) { - return constant_1.rm.NO_DELETED_COURSE; - } - return deletedCourse.count; - } - catch (error) { - //updateMany 메소드는 없는 코스를 삭제할때 count가 0으로만 나오지 에러가 나오지는 않음. - console.log(error); - } -}); -const courseService = { - createCourse, - getCourseByUser, - getPrivateCourseByUser, - getCourseDetail, - deleteCourse, -}; -exports.default = courseService; - //# sourceMappingURL=courseService.js.map \ No newline at end of file From 7b0ca1a474269d988ccbc8f5122a35ce0be9f124 Mon Sep 17 00:00:00 2001 From: Su-hwa Yu <65851554+YuSuhwa-ve@users.noreply.github.com> Date: Fri, 5 Apr 2024 18:30:49 +0900 Subject: [PATCH 4/4] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index b302381..6718b09 100644 --- a/README.md +++ b/README.md @@ -135,7 +135,6 @@ # 📄 API(+ Non - API) Docs -[Runnect Server API(+ Non - API) Docs](https://meowing-orange-9b6.notion.site/Runnect-Server-API-Non-API-Docs-d22169bc1df84bf8871e59781d03be2b) ![image](https://user-images.githubusercontent.com/88873302/212285411-c1f1aae2-78c7-4a92-bd7b-907a9c31ac03.png)