-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodels.js
77 lines (58 loc) · 2.27 KB
/
models.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
'use strict';
const mongoose = require('mongoose');
const idValidator = require('mongoose-id-validator');
const Schema = mongoose.Schema;
/* ------------------------------------------------------------------------- */
const BillSchema = new Schema({
chemist: { type: Schema.Types.ObjectId, ref: 'Users', required: true },
patient: { type: Schema.Types.ObjectId, ref: 'Users' },
totalPrice: Number,
rebooked: { type: Boolean, default: false },
createdAt: { type: Date, default: Date.now }
});
BillSchema.plugin(idValidator);
const billModel = mongoose.model('Bills', BillSchema);
/* ------------------------------------------------------------------------- */
const MedicineSchema = new Schema({
name: { type: String, required: true, unique: true, lowercase: true, trim: true },
rate: { type: Number },
type: {
type: String,
enum: ['tablet', 'capsule', 'syrup', 'injection'],
required: true
}
});
const medicineModel = mongoose.model('Medicines', MedicineSchema);
/* ------------------------------------------------------------------------- */
const OrderSchema = new Schema(
{
medicine: { type: Schema.Types.ObjectId, ref: 'Medicines', required: true },
bill: { type: Schema.Types.ObjectId, ref: 'Bills', required: false },
dosage: { type: Number, min: 1, required: true },
quantity: { type: Number, required: true, min: 1 },
available: { type: Number, required: true, min: 1 },
lastConsumed: { type: Date }
},
{
timestamps: {
createdAt: 'createdAt',
updatedAt: 'updatedAt'
}
}
);
OrderSchema.plugin(idValidator);
const orderModel = mongoose.model('Orders', OrderSchema);
/* ------------------------------------------------------------------------- */
const UserSchema = new Schema({
username : { type: String, unique: true, trim: true, required: true },
firstName: { type: String, trim: true },
lastName: { type: String, trim: true },
address: { type: String, trim: true},
role: {
type: String,
enum: ['patient', 'chemist', 'admin'],
required: true
}
});
const userSchema = mongoose.model('Users', UserSchema);
/* ------------------------------------------------------------------------- */