1
1
import { Request , Response } from 'express' ;
2
2
import axios , { AxiosError } from 'axios' ;
3
- import { BadRequestError , CurrentUserRequest , Events } from '@chronosrx/common' ;
3
+ import { BadRequestError , CurrentUserRequest , EventTypes , NotAuthorizedError } from '@chronosrx/common' ;
4
4
import { Item } from '../models/items' ;
5
5
import { User } from '../models/users' ;
6
6
import { RemoveUserOptions } from 'mongodb' ;
7
7
8
8
// current users can create items to sell
9
9
export const createItem = async ( req : CurrentUserRequest , res : Response ) => {
10
+
10
11
// req.body consists of itemName and unitPrice
11
12
const { itemName, unitPrice } = req . body ;
12
13
// sellerId will come from cookie assigned to authorized users
@@ -38,7 +39,7 @@ export const createItem = async (req: CurrentUserRequest, res: Response) => {
38
39
try {
39
40
await axios . post ( 'http://localhost:3005/' , {
40
41
event : {
41
- type : Events . ITEM_CREATED ,
42
+ type : EventTypes . ITEM_CREATED ,
42
43
payload : newItem ,
43
44
} ,
44
45
} ) ;
@@ -58,12 +59,12 @@ export const deleteItem = async (req: CurrentUserRequest, res: Response) => {
58
59
const sellerId = req . currentUser ! ;
59
60
// if sellerId doesn't exist, throw error as only authorized users can delete items
60
61
if ( ! sellerId ) {
61
- throw new BadRequestError ( 'Only registered users can delete items' ) ;
62
+ throw new NotAuthorizedError ( ) ;
62
63
}
63
64
// if only item "owner" can delete item so sellerId must match
64
65
const seller = User . findById ( sellerId ) ;
65
66
if ( ! seller ) {
66
- throw new BadRequestError ( 'Only registered users can delete items' ) ;
67
+ throw new NotAuthorizedError ( ) ;
67
68
}
68
69
// search for itemName given by user
69
70
const findItem = await Item . findOne ( { itemName } ) ;
@@ -76,20 +77,20 @@ export const deleteItem = async (req: CurrentUserRequest, res: Response) => {
76
77
Item . deleteOne ( { itemName } ) ;
77
78
}
78
79
// posting event to event bus
79
- // try {
80
- // await axios.post('http://localhost:3005/', {
81
- // event: {
82
- // type: Events .ITEM_DELETED,
83
- // payload: findItem,
84
- // },
85
- // });
86
- // } catch (err) {
87
- // console.log(
88
- // `❌ itemController.deleteItem: Failed to emit ITEM_DELETED to event-bus: ${
89
- // (err as AxiosError).message || 'unknown error'
90
- // }`
91
- // );
92
- // }
80
+ try {
81
+ await axios . post ( 'http://localhost:3005/' , {
82
+ event : {
83
+ type : EventTypes . ITEM_DELETED ,
84
+ payload : findItem ,
85
+ } ,
86
+ } ) ;
87
+ } catch ( err ) {
88
+ console . log (
89
+ `❌ itemController.deleteItem: Failed to emit ITEM_DELETED to event-bus: ${
90
+ ( err as AxiosError ) . message || 'unknown error'
91
+ } `
92
+ ) ;
93
+ }
93
94
console . log ( `${ itemName } has been deleted` ) ;
94
95
res . status ( 201 ) ;
95
96
} ;
0 commit comments