File tree 2 files changed +86
-4
lines changed
examples_new/microservices/orders/src
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 1
1
import express from 'express' ;
2
+ import { Events } from '@chronosrx/common' ;
3
+ import { Order } from '../models/Order' ;
2
4
3
5
const router = express . Router ( ) ;
4
6
5
- router . post ( '/' , ( req , res ) => {
7
+ router . post ( '/' , async ( req , res ) => {
6
8
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
+ }
8
18
9
- res . send ( { message : 'Event received' } ) ;
19
+ res . send ( { message : '🎃 Event received' } ) ;
10
20
} ) ;
11
21
12
- export default router ;
22
+ export default router ;
You can’t perform that action at this time.
0 commit comments