Skip to content

Commit dcab1d1

Browse files
committed
orders
1 parent 5dd2319 commit dcab1d1

File tree

2 files changed

+86
-4
lines changed

2 files changed

+86
-4
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
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 numberDiff line numberDiff line change
@@ -1,12 +1,22 @@
11
import express from 'express';
2+
import { Events } from '@chronosrx/common';
3+
import { Order } from '../models/Order';
24

35
const 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;

0 commit comments

Comments
 (0)