채용공고를 등록합니다.
➡️ 회사는 아래 데이터와 같이 채용공고를 등록합니다.Example)
{
"회사_id":회사_id,
"채용포지션":"",
"채용보상금":,
"채용내용":"",
"사용기술":""
}
async function createPost(
company_id,
employ_position,
recruitment_compensation,
contents,
technology_stack,
) {
return await Post.create({
company_id: company_id,
employ_position: employ_position,
recruitment_compensation: recruitment_compensation,
contents: contents,
technology_stack: technology_stack,
});
}
채용공고를 수정합니다.
➡️ 회사는 아래 데이터와 같이 채용공고를 수정합니다. (회사 id 이외 모두 수정 가능합니다.)Example)
{
"채용포지션":"",
"채용보상금":10000, # 변경됨
"채용내용":"",
"사용기술":"Python"# 변경됨
}
or
{
"채용포지션":"",
"채용보상금":20000,# 변경됨
"채용내용":"",
"사용기술":"Django" # 변경됨
}
async function updatePost(
postId,
employ_position,
recruitment_compensation,
contents,
technology_stack,
) {
return await Post.update(
{
employ_position: employ_position,
recruitment_compensation: recruitment_compensation,
contents: contents,
technology_stack: technology_stack,
},
{
where: {
id: postId,
},
},
);
}
채용공고를 삭제합니다.
➡️ DB에서 삭제됩니다. async function deletePost(postId) {
return await Post.destroy({
where: {
id: postId,
},
});
}
채용공고 목록을 가져옵니다.
➡️ 4-1. 사용자는 채용공고 목록을 아래와 같이 확인할 수 있습니다.Example)
[
{
"채용공고_id": 채용공고_id,
"회사명":"",
"국가":"",
"지역":"",
"채용포지션":"",
"채용보상금":,
"사용기술":""
},
{
"채용공고_id": 채용공고_id,
"회사명":"",
"국가":"",
"지역":"",
"채용포지션":"",
"채용보상금":,
"사용기술":""
},
]
아래의 코드는 검색기능을 활용하지 않았을때 채용 공고 목록을 담당하는 코드입니다.
async function searchViewPost() {
return await Post.findAll({
attributes: [
['id', '채용공고_id'],
[Sequelize.col('company.company_name'), '회사이름'],
[Sequelize.col('company.country'), '국가'],
[Sequelize.col('company.region'), '지역'],
['employ_position', '채용포지션'],
['recruitment_compensation', '채용보상금'],
['technology_stack', '사용기술'],
],
include: {
model: Company,
as: 'company',
attributes: [],
},
});
}
```
- keyword를 이용하여 채용공고목록 검색을 담담하는 부분입니다.
```javascript
try {
const keyword = req.query.keyword;
let PostLists;
if (keyword) {
PostLists = await migrationsPost.searchViewPostByKeyword(keyword);
console.log(keyword);
} else {
PostLists = await migrationsPost.searchViewPost();
}
res.status(200).json(PostLists);
} catch (error) {
console.log(error.message);
res.status(error.statusCode || 500).json({ message: 'FAIL' });
}
where: {
[Op.or]: [
{ employ_position: { [Op.like]: '%' + keyword + '%' } },
{ recruitment_compensation: { [Op.like]: '%' + keyword + '%' } },
{ technology_stack: { [Op.like]: '%' + keyword + '%' } },
],
},
채용 상세 페이지를 가져옵니다.
➡️ 사용자는 채용상세 페이지를 아래와 같이 확인할 수 있습니다.Example)
{
"채용공고_id": 채용공고_id,
"회사명":"",
"국가":"",
"지역":"",
"채용포지션":"",
"채용보상금":,
"사용기술":"",
"채용내용": "",
"회사가올린다른채용공고":[채용공고_id, 채용공고_id, ..] # id List
}
사용자는 채용공고에 지원합니다
➡️ 사용자는 채용공고에 아래와 같이 지원합니다.Example)
{
"채용공고_id": 채용공고_id,
"사용자_id": 사용자_id
}
const createApply = async (req, res) => {
try {
const { postId, userId } = req.body;
const applyList = await migrationsApply.ApplyByUserIdPostId(postId, userId);
if (applyList) {
return res.status(409).json({ message: '이미 지원하셨습니다.' });
} else {
await migrationsApply.createApply(postId, userId);
return res.status(200).json({ message: 'SUCCESS' });
}
} catch (error) {
res.status(error.statusCode || 500).json({ message: 'FAIL' });
}
};