mirror of
https://github.com/myfatemi04/wheelshare-old-backend.git
synced 2025-04-20 11:40:16 -04:00
79 lines
1.7 KiB
TypeScript
79 lines
1.7 KiB
TypeScript
import { Router } from 'express';
|
|
import { PoolModel } from '../models';
|
|
import { ObjectID } from 'mongodb';
|
|
import requireApiAuth from '../requireApiAuth';
|
|
|
|
export const router = Router();
|
|
|
|
router.post('/:poolID/join', async (req, res) => {
|
|
const userID = req.session.accountID;
|
|
const poolID = req.params.poolID;
|
|
|
|
await PoolModel.findByIdAndUpdate(poolID, {
|
|
$addToSet: { participant_ids: userID },
|
|
}).exec();
|
|
|
|
res.json({ status: 'success' });
|
|
});
|
|
|
|
router.post('/:poolID/leave', async (req, res) => {
|
|
const userID = req.session.accountID;
|
|
const poolID = req.params.poolID;
|
|
|
|
await PoolModel.findByIdAndUpdate(poolID, {
|
|
$pull: { participant_ids: userID },
|
|
}).exec();
|
|
|
|
res.json({ status: 'success' });
|
|
});
|
|
|
|
router.get('/:poolID', async (req, res) => {
|
|
const pool = await PoolModel.findById(new ObjectID(req.params.poolID)).exec();
|
|
|
|
if (pool) {
|
|
res.json({ status: 'success', data: pool.toJSON() });
|
|
} else {
|
|
res.json({ status: 'error', error: 'not_found' });
|
|
}
|
|
});
|
|
|
|
router.post('/', requireApiAuth, async (req, res) => {
|
|
const userID = req.session.accountID;
|
|
const {
|
|
capacity,
|
|
description,
|
|
direction,
|
|
end_time,
|
|
group_id,
|
|
start_time,
|
|
title,
|
|
type,
|
|
} = req.body;
|
|
|
|
const pool = new PoolModel();
|
|
Object.assign(pool, {
|
|
author_id: userID,
|
|
capacity,
|
|
description,
|
|
direction,
|
|
status: 'pending',
|
|
title,
|
|
type,
|
|
participant_ids: [userID],
|
|
comments: [],
|
|
create_time: new Date().toISOString(),
|
|
update_time: new Date().toISOString(),
|
|
group_id,
|
|
});
|
|
|
|
pool
|
|
.save()
|
|
.then((pool) => {
|
|
res.json({ status: 'success', id: pool._id });
|
|
})
|
|
.catch((err) => {
|
|
console.error('Error when creating a pool:', err);
|
|
res.json({ status: 'error' });
|
|
});
|
|
});
|