From 9622ede6e0591597bcf23009fe5036abce9a4688 Mon Sep 17 00:00:00 2001 From: Michael Fatemi Date: Sat, 10 Apr 2021 19:27:08 -0400 Subject: [PATCH] feat: fixed typings and get db methods --- src/api.ts | 151 ++++++++++++++++++-------------------------------- src/data.ts | 63 +++++---------------- src/models.ts | 1 - tsconfig.json | 1 - 4 files changed, 69 insertions(+), 147 deletions(-) diff --git a/src/api.ts b/src/api.ts index 42e406d..50ae54b 100644 --- a/src/api.ts +++ b/src/api.ts @@ -5,9 +5,6 @@ import { getPoolByID, getPoolsWithUser, getUserByID, - groups, - pools, - users, } from './data'; export const router = Router(); @@ -33,21 +30,18 @@ router.get('/user', async (req, res) => { }); router.patch('/user', (req, res) => { - if (!(req.body.userID in users)) { - res.json({ status: 'error', error: 'user not found' }); - } else { - let user = users[req.body.userID]; - user.username = req.body.username; - user.first_name = req.body.first_name; - user.last_name = req.body.last_name; - res.json({ status: 'success' }); - } + // if (!(req.body.userID in users)) { + // res.json({ status: 'error', error: 'user not found' }); + // } else { + // let user = users[req.body.userID]; + // user.username = req.body.username; + // user.first_name = req.body.first_name; + // user.last_name = req.body.last_name; + // res.json({ status: 'success' }); + // } }); -router.delete('/user', (req, res) => { - delete users[req.body.userID]; - res.json({ status: 'success' }); -}); +router.delete('/user', (req, res) => {}); router.get('/pool', (req, res) => { if (typeof req.query.poolID != 'string') { @@ -65,49 +59,46 @@ router.get('/pool', (req, res) => { }); router.post('/pool', (req, res) => { - if (req.body.poolID in pools) { - res.json({ status: 'error', error: 'already_exists' }); - } else { - pools[req.body.poolID] = { - id: req.body.poolID, - title: req.body.title, - description: req.body.description, - participant_ids: [], - driver_id: 'no driver', - create_time: 'create time', - update_time: 'update time', - comments: [], - group_id: 'no group', - status: 'pending', - capacity: 0, - direction: 'pickup', - author_id: 'no author', - type: 'request', - }; - res.json({ status: 'success' }); - } + // if (req.body.poolID in pools) { + // res.json({ status: 'error', error: 'already_exists' }); + // } else { + // pools[req.body.poolID] = { + // id: req.body.poolID, + // title: req.body.title, + // description: req.body.description, + // participant_ids: [], + // driver_id: 'no driver', + // create_time: 'create time', + // update_time: 'update time', + // comments: [], + // group_id: 'no group', + // status: 'pending', + // capacity: 0, + // direction: 'pickup', + // author_id: 'no author', + // type: 'request', + // }; + // res.json({ status: 'success' }); + // } }); router.patch('/pool', (req, res) => { - if (!(req.body.poolID in pools)) { - res.json({ status: 'error', error: 'not_found' }); - } else { - let pool = pools[req.body.poolID]; - pool.title = req.body.title; - pool.description = req.body.description; - pool.driver_id = req.body.driver_id; - pool.update_time = req.body.update_time; - pool.status = req.body.status; - pool.capacity = req.body.capacity; - pool.direction = req.body.direction; - res.json({ status: 'success' }); - } + // if (!(req.body.poolID in pools)) { + // res.json({ status: 'error', error: 'not_found' }); + // } else { + // let pool = pools[req.body.poolID]; + // pool.title = req.body.title; + // pool.description = req.body.description; + // pool.driver_id = req.body.driver_id; + // pool.update_time = req.body.update_time; + // pool.status = req.body.status; + // pool.capacity = req.body.capacity; + // pool.direction = req.body.direction; + // res.json({ status: 'success' }); + // } }); -router.delete('/pool', (req, res) => { - delete pools[req.body.poolID]; - res.json({ status: 'success' }); -}); +router.delete('/pool', (req, res) => {}); router.get('/group', (req, res) => { if (typeof req.query.groupID != 'string') { @@ -125,39 +116,19 @@ router.get('/group', (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' }); - } -}); - -router.patch('/group', (req, res) => { - if (!(req.body.groupID in groups)) { - res.json({ status: 'error', error: 'group not found' }); - } else { - let group = users[req.body.groupID]; - res.json({ status: 'success' }); - } -}); - -router.delete('/group', (req, res) => { - delete groups[req.body.groupID]; - res.json({ status: 'success' }); + // 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' }); + // } }); router.get('/my_pools', (req, res) => { - if (typeof req.query.userID != 'string') { - return; - } - - let userID = req.query.userID; - let groupsWithUser = getPoolsWithUser(userID); - + let groupsWithUser = getPoolsWithUser(req.session.accountID); if (groupsWithUser) { res.json({ status: 'success', data: groupsWithUser }); } else { @@ -165,18 +136,6 @@ router.get('/my_pools', (req, res) => { } }); -router.post('/my_pools', (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' }); - } -}); - router.post('/create_session', (req, res) => { const { code, provider } = req.body; console.log('Creating session: code =', code, 'provider =', provider); diff --git a/src/data.ts b/src/data.ts index 8671e72..8079dba 100644 --- a/src/data.ts +++ b/src/data.ts @@ -1,28 +1,5 @@ import { IonProfile } from './auth_ion'; -import { PoolModel, UserModel } from './models'; - -/** - * Records users by id - */ -export const users: Record = { - myfatemi04: { - id: '3baeaed6-05cb-4c03-9b43-1d74beafdbb7', - email: '2022mfatemi@tjhsst.edu', - username: 'myfatemi04', - first_name: 'Michael', - last_name: 'Fatemi', - }, -}; - -/** - * Records groups by id - */ -export const groups: Record = {}; - -/** - * Records pools by id - */ -export const pools: Record = {}; +import { GroupModel, PoolModel, UserModel } from './models'; /** * @@ -30,14 +7,7 @@ export const pools: Record = {}; * @returns The group IDs with that userID as a member */ export function getGroupsWithUser(userID: string) { - let groupIDs = []; - for (let group of Object.values(groups)) { - if (group.member_ids.includes(userID)) { - groupIDs.push(group.id); - } - } - - return groupIDs; + return undefined; } /** @@ -46,34 +16,29 @@ export function getGroupsWithUser(userID: string) { * @returns The post IDs with that userID as the author */ export function getPoolsWithUser(userID: string) { - let poolIDs: string[] = []; - for (let post of Object.values(pools)) { - if (post.author_id == userID) { - poolIDs.push(post.id); - } - } - - return poolIDs; + return undefined; } export async function getUserByID(userID: string) { - return (await UserModel.findById(userID).exec()).toJSON() as Carpool.User; + if (userID == null) { + return undefined; + } + return (await UserModel.findById(userID).exec()).toJSON(); } export async function getPoolByID(poolID: string) { - return (await PoolModel.findById(poolID).exec()).toJSON() as Carpool.Pool; + let doc = await PoolModel.findById(poolID).exec(); + return doc?.toJSON(); } -export function getGroupByID(groupID: string): Carpool.Group | undefined { - return groups[groupID]; +export async function getGroupByID(groupID: string) { + let doc = await GroupModel.findById(groupID).exec(); + return doc?.toJSON(); } export async function getUserByEmail(email: string) { - return (( - await UserModel.findOne({ - email, - }).exec() - ).toJSON() as unknown) as Carpool.User; + const user = await UserModel.findOne({ email }).exec(); + return user?.toJSON(); } export async function registerUserFromIonProfile( diff --git a/src/models.ts b/src/models.ts index ee3095e..f44aba3 100644 --- a/src/models.ts +++ b/src/models.ts @@ -59,7 +59,6 @@ export interface Pool extends Document { } const PoolSchema: Schema = new Schema({ - id: { type: String, required: true }, title: { type: String, required: true }, description: { type: String, required: true }, participant_ids: { type: [String], required: true }, diff --git a/tsconfig.json b/tsconfig.json index 2a9b7c6..597bad7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,7 +4,6 @@ "esModuleInterop": true, "moduleResolution": "Node" }, - "files": ["src/types.ts", "src/typings/session.d.ts"], "include": ["src/", "session.d.ts"], "exclude": ["node_modules/"] }