Skip to content
Snippets Groups Projects
Verified Commit bf7d3007 authored by Eunhak Lee's avatar Eunhak Lee
Browse files

feat: 내 PC의 공유 uuid 만들기

parent b7f7c909
Branches
No related tags found
1 merge request!20내 PC를 인증된 조합으로 공유하기 기능
import pool from '../db.js';
const ShareRepository = {
async createCombinationUuid(combinationId) {
const resp = await pool.query(
`INSERT INTO shares (combination_id)
VALUES ($1)
RETURNING uuid;`,
[combinationId]
);
const [uuid] = resp.rows;
return uuid;
},
async getCombinationByUuid(uniqueId) {
const resp = await pool.query(
`SELECT
shares.combination_id,
array(SELECT relations.part_id FROM relations WHERE relations.combination_id = shares.combination_id) as parts,
shares.created_at,
(SELECT created_at FROM combinations WHERE combinations.id = shares.combination_id) as updated_at
FROM shares
WHERE uuid=$1;`,
[uniqueId]
);
const [row] = resp.rows;
return row;
},
};
export default ShareRepository;
...@@ -43,6 +43,18 @@ myRouter.patch( ...@@ -43,6 +43,18 @@ myRouter.patch(
}) })
); );
myRouter.post(
'/combination/:combinationId/uuid',
authMiddleware,
wrapAsync(async (req, res) => {
const { combinationId } = req.params;
const userId = req.user?.userId;
const uuid = await myService.createCombinationUuid(userId, combinationId);
res.sendResponse('', 200, { uuid });
})
);
myRouter.get( myRouter.get(
'/registration-code', '/registration-code',
authMiddleware, authMiddleware,
......
import { Redis } from '../redis.js'; import { Redis } from '../redis.js';
import { ReportableError } from '../errors.js'; import { ReportableError } from '../errors.js';
import myRepository from '../repositories/myRepository.js'; import myRepository from '../repositories/myRepository.js';
import ShareRepository from '../repositories/shareRepository.js';
import crypto from 'crypto'; import crypto from 'crypto';
const myService = { const myService = {
...@@ -163,6 +164,20 @@ const myService = { ...@@ -163,6 +164,20 @@ const myService = {
message: '조합 이름이 성공적으로 변경되었습니다.', message: '조합 이름이 성공적으로 변경되었습니다.',
}; };
}, },
async createCombinationUuid(userId, combinationId) {
if (!userId || !combinationId)
throw new ReportableError(400, '올바르지 않은 요청입니다.');
const combination = await myRepository.getCombinationById(combinationId);
if (!combination)
throw new ReportableError(404, '조합을 찾을 수 없습니다.');
if (combination.userId !== userId)
throw new ReportableError(403, '해당 조합에 대한 권한이 없습니다.');
return await ShareRepository.createCombinationUuid(combinationId);
},
}; };
export default myService; export default myService;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment