diff --git a/src/api.ts b/src/api.ts index e196a49..2f2e8e5 100644 --- a/src/api.ts +++ b/src/api.ts @@ -6,7 +6,7 @@ import { getPoolsWithUser, getUserByID, } from './data'; -import { PoolModel } from './models'; +import { GroupModel, PoolModel } from './models'; export const router = Router(); @@ -143,15 +143,26 @@ router.post('/join_pool', async (req, res) => { }); router.post('/group', (req, res) => { - // if (req.body.groupID in groups) { - // res.json({ status: 'error', error: 'already_exists' }); - // } else { - // groups[req.body.groupID] = { - // id: req.body.groupID, - // member_ids: [], - // }; - // res.json({ status: 'success' }); - // } + if (req.session.accountID == null) { + res.status(401); + return res.json({ status: 'error', error: 'need_login' }); + } + + const userID = req.session.accountID; + const name = req.body.name; + + const group = new GroupModel(); + group.set('name', name); + group.set('creator_id', userID); + group + .save() + .then((group) => { + res.json({ status: 'success', id: group._id }); + }) + .catch((err) => { + console.error('Error when creating a group:', err); + res.json({ status: 'error' }); + }); }); router.get('/my_pools', async (req, res) => { diff --git a/src/models.ts b/src/models.ts index a63f30c..39e9ec7 100644 --- a/src/models.ts +++ b/src/models.ts @@ -33,9 +33,10 @@ const UserModel: Model = model('User', UserSchema); const GroupSchema: Schema = new Schema({ name: { type: String, required: true }, member_ids: { type: [String], required: true }, + creator_id: { type: String, required: true }, }); -const GroupModel = model('Group', GroupSchema); +const GroupModel: Model = model('Group', GroupSchema); const CommentSchema: Schema = new Schema({ text: { type: String, required: true },