File tree Expand file tree Collapse file tree 2 files changed +86
-4
lines changed
examples_new/microservices/orders/src Expand file tree Collapse file tree 2 files changed +86
-4
lines changed Original file line number Diff line number Diff line change 1+ import mongoose from 'mongoose' ;
2+ //define type of objects that is being passed into build method
3+ interface OrderAttrs {
4+ itemId : string ;
5+ amount : number ;
6+ totalPrice : number ;
7+ buyerId : string ;
8+ sellerId : string ;
9+ }
10+
11+ interface OrderModel extends mongoose . Model < OrderDoc > {
12+ build ( attrs : OrderAttrs ) : OrderDoc ;
13+ }
14+ //create inventory data in the database in this shape
15+ interface OrderDoc extends mongoose . Document {
16+ itemId : string ;
17+ amount : number ;
18+ totalPrice : number ;
19+ buyerId : string ;
20+ sellerId : string ;
21+ }
22+
23+ //create the Schema in mongoose with defined requirements
24+ const OrderSchema = new mongoose . Schema (
25+ {
26+ itemId : {
27+ type : String ,
28+ required : true ,
29+ unique : true ,
30+ } ,
31+ amount : {
32+ type : Number ,
33+ required : true ,
34+ } ,
35+ totalPrice : {
36+ type : Number ,
37+ required : true ,
38+ } ,
39+ buyerId : {
40+ type : String ,
41+ require : true ,
42+ } ,
43+ sellerId : {
44+ type : String ,
45+ require : true ,
46+ } ,
47+ } ,
48+ {
49+ //anytime we create Json formatted data, transform the user document as following
50+ toJSON : {
51+ transform ( doc , ret ) {
52+ ret . id = ret . _id ;
53+ delete ret . _id ;
54+ delete ret . __v ;
55+ } ,
56+ } ,
57+ }
58+ ) ;
59+
60+ OrderSchema . statics . build = ( attrs : OrderAttrs ) => {
61+ return new Order ( {
62+ itemId : attrs . itemId ,
63+ amount : attrs . amount ,
64+ totalPrice : attrs . totalPrice ,
65+ buyerId : attrs . buyerId ,
66+ sellerId : attrs . sellerId ,
67+ } ) ;
68+ } ;
69+
70+ const Order = mongoose . model < OrderDoc , OrderModel > ( 'Order' , OrderSchema ) ;
71+
72+ export { Order } ;
Original file line number Diff line number Diff line change 11import express from 'express' ;
2+ import { Events } from '@chronosrx/common' ;
3+ import { Order } from '../models/Order' ;
24
35const router = express . Router ( ) ;
46
5- router . post ( '/' , ( req , res ) => {
7+ router . post ( '/' , async ( req , res ) => {
68 const { event } = req . body ;
7- // console.log('Event received:', event);
9+ console . log ( event ) ;
10+ switch ( event . type ) {
11+ case Events . ITEM_CREATED :
12+ const newOrder = Order . build ( event . payload ) ;
13+ await newOrder . save ( ) ;
14+ break ;
15+ default :
16+ res . send ( { } ) ;
17+ }
818
9- res . send ( { message : 'Event received' } ) ;
19+ res . send ( { message : '🎃 Event received' } ) ;
1020} ) ;
1121
12- export default router ;
22+ export default router ;
You can’t perform that action at this time.
0 commit comments