payservedb 6.0.0 → 6.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js CHANGED
@@ -4,9 +4,6 @@ require("dotenv").config();
4
4
  // Maintain a record of open connections for each database
5
5
  const connections = {};
6
6
 
7
- // Model registry to track loaded models
8
- const modelRegistry = {};
9
-
10
7
  // Utility function to connect to MongoDB
11
8
  async function connectToMongoDB(
12
9
  dbName,
@@ -60,149 +57,147 @@ async function switchDB(dbName) {
60
57
  });
61
58
 
62
59
  connections[dbName] = dbConnection; // Store the connection for reuse
63
- // console.log(Switched to database: ${dbName});
60
+ console.log(`Switched to database: ${dbName}`);
64
61
  return dbConnection;
65
62
  } catch (err) {
66
- // console.error(Error switching to database: ${dbName}, err);
63
+ console.error(`Error switching to database: ${dbName}`, err);
67
64
  throw err;
68
65
  }
69
66
  }
70
67
 
71
- // Model path registry - maps model names to their file paths
72
- const modelPaths = {
73
- User: "./src/models/user",
74
- AuditLog: "./src/models/auditlog",
75
- Company: "./src/models/company",
76
- Customer: "./src/models/customer",
77
- FacilityEmailDetails: "./src/models/email",
78
- Module: "./src/models/module",
79
- Facility: "./src/models/facility",
80
- RefreshToken: "./src/models/refresh_token",
81
- ApiLog: "./src/models/apilog",
82
- ArchivedApiLog: "./src/models/archivedapilog",
83
- ArchivedAuditLog: "./src/models/archivedauditlog",
84
- FacilityAsset: "./src/models/facilityasset",
85
- Unit: "./src/models/units",
86
- FAQ: "./src/models/faq",
87
- UnitAsset: "./src/models/unitasset",
88
- CombinedUnit: "./src/models/combinedUnits",
89
- Message: "./src/models/message",
90
- SMSAfricastalking: "./src/models/sms_africastalking",
91
- SMSMeliora: "./src/models/sms_meliora",
92
- EntryExit: "./src/models/entry_exit",
93
- Guard: "./src/models/guard",
94
- Visitor: "./src/models/visitor",
95
- VisitLog: "./src/models/visitLog",
96
- Settings: "./src/models/settings",
97
- Levy: "./src/models/levy",
98
- LevyType: "./src/models/levytype",
99
- LevyContract: "./src/models/levycontract",
100
- Invoice: "./src/models/invoice",
101
- Reminder: "./src/models/reminder",
102
- Penalty: "./src/models/penalty",
103
- Notification: "./src/models/notification",
104
- Resident: "./src/models/resident",
105
- Asset: "./src/models/asset",
106
- DutyRoster: "./src/models/dutyroster",
107
- LeaseTemplate: "./src/models/leasetemplate",
108
- Report: "./src/models/report",
109
- Ticket: "./src/models/tickets",
110
- Stocksandspare: "./src/models/stocksandspare",
111
- ServiceVendor: "./src/models/maintenance_service_vendor",
112
- MaintenanceServices: "./src/models/maintenance_services",
113
- StockRequisition: "./src/models/maintenancerequisition",
114
- LeaseAgreement: "./src/models/leaseagreement",
115
- WorkOrder: "./src/models/workorder",
116
- ValueAddedService: "./src/models/valueaddedservices",
117
- VasInvoice: "./src/models/vasinvoice",
118
- VasVendor: "./src/models/vasvendor",
119
- Staff: "./src/models/staff",
120
- ServiceRequest: "./src/models/servicerequest",
121
- CountryTaxRate: "./src/models/country_tax",
122
- WaterMeter: "./src/models/water_meters",
123
- DailyConsumption: "./src/models/smart_meter_daily_consumption",
124
- WaterMeterSettings: "./src/models/water_meter_settings",
125
- AnalogBilling: "./src/models/water_meter_billing",
126
- MeterSize: "./src/models/water_meter_size",
127
- WaterInvoice: "./src/models/water_invoice",
128
- MeterProtocol: "./src/models/water_meter_communication",
129
- MeterManufacturer: "./src/models/water_meter_manufacturer",
130
- MeterIotCard: "./src/models/water_meter_iot_cards",
131
- MetersDelivery: "./src/models/water_meters_delivery",
132
- Concentrator: "./src/models/water_meter_concentrator",
133
- Handover: "./src/models/handover",
134
- Budget: "./src/models/budget",
135
- BudgetCategory: "./src/models/budgetCategory",
136
- Expense: "./src/models/expense",
137
- ExpenseCategory: "./src/models/expense_category",
138
- InvoiceSettings: "./src/models/levy_invoice_settings",
139
- Account: "./src/models/account",
140
- FacilityPaymentDetails: "./src/models/facility_payment_details",
141
- DefaultPaymentDetails: "./src/models/default_payment_details",
142
- Currency: "./src/models/currency_settings",
143
- WaterMeterAccount: "./src/models/water_meter_account",
144
- SingleDayWaterMeterHistory: "./src/models/water_meter_single_day_history",
145
- DailyWaterMeterHistory: "./src/models/water_meter_daily_history",
146
- MonthlyWaterMeterHistory: "./src/models/water_meter_monthly_history",
147
- WaterPrepaidCredit: "./src/models/water_prepaid_credit",
148
- WaterPrepaidDebit: "./src/models/water_prepaid_debit",
149
- MeterLog: "./src/models/water_meter_communication_logs",
150
- CashPayment: "./src/models/cashpayment",
151
- VasPayment: "./src/models/vas_payments",
152
- VasInvoicesQuickBooks: "./src/models/vas_invoices_upload",
153
- ServiceChargePayment: "./src/models/service_charge_payments",
154
- ServiceChargeInvoiceUpload: "./src/models/service_charge_invoice_upload",
155
- Campaign: "./src/models/campaigns",
156
- InspectionItem: "./src/models/item_inspection",
157
- Supplier: "./src/models/suppliers",
158
- PurchaseRequest: "./src/models/purchase_request",
159
- PurchaseOrder: "./src/models/purchase_order",
160
- PaymentTermMark: "./src/models/paymentTermsMarks",
161
- DeliveryTimeMark: "./src/models/deliveryTimeMarks",
162
- RFQDetails: "./src/models/rfq_details",
163
- RFQResponse: "./src/models/rfq_response",
164
- ApprovalWorkflow: "./src/models/approvalsWorkflows",
165
- CommonAreaElectricityReading: "./src/models/common_area_electricity",
166
- CommonAreaWaterReading: "./src/models/common_area_water",
167
- CommonAreaGeneratorReading: "./src/models/common_area_generator",
168
- CommonAreaUtilityAlert: "./src/models/common_area_utility_alert",
169
- BookingProperty: "./src/models/bookingproperty",
170
- BookingReservation: "./src/models/bookingreservation",
171
- BookingConfig: "./src/models/bookingconfig",
172
- BookingAnalytics: "./src/models/bookinganalytics",
173
- BookingInvoice: "./src/models/booking_invoice",
174
- BankDetails: "./src/models/bankdetails",
175
- RevenueRecord: "./src/models/bookingrevenuerecord",
176
- GLAccount: "./src/models/gl_accounts",
177
- GLEntry: "./src/models/gl_entries",
178
- GLAccountDoubleEntries: "./src/models/gl_account_double_entries",
179
- PendingCredential: "./src/models/pendingCredentials",
180
- UnitManagementTemplate: "./src/models/unitManagementTemplate",
181
- PropertyManagerRevenue: "./src/models/propertyManagerRevenue",
182
- PropertyManagerContract: "./src/models/propertyManagerContract",
183
- BillerAddress: "./src/models/billerAddress",
184
- AssetAssignment: "./src/models/assetsAssignment",
185
- Wallet: "./src/models/wallet",
186
- WalletTransaction: "./src/models/wallet_transactions",
187
- GoodsReceivedNote: "./src/models/goodsReceivedNotes",
188
- MeterCommandQueue: "./src/models/water_meter_Command_Queue",
189
- FacilityDepartment: "./src/models/facility_departements",
190
- EmailSmsQueue: "./src/models/email_sms_queue",
191
- PurchaseOrderInvoice: "./src/models/purchaseOrderInvoice"
192
- };
68
+ // Importing all model files (Note: models may need to be re-registered for different connections)
69
+ const models = {
70
+ User: require("./src/models/user"),
71
+ AuditLog: require("./src/models/auditlog"),
72
+ Company: require("./src/models/company"),
73
+ Customer: require("./src/models/customer"),
74
+ FacilityEmailDetails: require("./src/models/email"),
75
+ Module: require("./src/models/module"),
76
+ Facility: require("./src/models/facility"),
77
+ RefreshToken: require("./src/models/refresh_token"),
78
+ ApiLog: require("./src/models/apilog"),
79
+ ArchivedApiLog: require("./src/models/archivedapilog"),
80
+ ArchivedAuditLog: require("./src/models/archivedauditlog"),
81
+ FacilityAsset: require("./src/models/facilityasset"),
82
+ Unit: require("./src/models/units"),
83
+ FAQ: require("./src/models/faq"),
84
+ UnitAsset: require("./src/models/unitasset"),
85
+ CombinedUnit: require("./src/models/combinedUnits"),
86
+ Message: require("./src/models/message"),
87
+ SMSAfricastalking: require("./src/models/sms_africastalking"),
88
+ SMSMeliora: require("./src/models/sms_meliora"),
89
+ EntryExit: require("./src/models/entry_exit"),
90
+ Guard: require("./src/models/guard"),
91
+ Visitor: require("./src/models/visitor"),
92
+ VisitLog: require("./src/models/visitLog"),
93
+ Settings: require("./src/models/settings"),
94
+ Levy: require("./src/models/levy"),
95
+ LevyType: require("./src/models/levytype"),
96
+ LevyContract: require("./src/models/levycontract"),
97
+ Invoice: require("./src/models/invoice"),
98
+ Reminder: require("./src/models/reminder"),
99
+ Penalty: require("./src/models/penalty"),
100
+ Notifiaction: require("./src/models/notification"),
101
+ Resident: require("./src/models/resident"),
102
+ Asset: require("./src/models/asset"),
103
+ DutyRoster: require("./src/models/dutyroster"),
104
+ LeaseTemplate: require("./src/models/leasetemplate"),
105
+ Report: require("./src/models/report"),
106
+ Ticket: require("./src/models/tickets"),
107
+ Stocksandspare: require("./src/models/stocksandspare"),
108
+ ServiceVendor: require("./src/models/maintenance_service_vendor"),
109
+ MaintenanceServices: require("./src/models/maintenance_services"),
110
+ StockRequisition: require("./src/models/maintenancerequisition"),
111
+ LeaseAgreement: require("./src/models/leaseagreement"),
112
+ WorkOrder: require("./src/models/workorder"),
113
+ ValueAddedService: require("./src/models/valueaddedservices"),
114
+ VasInvoice: require("./src/models/vasinvoice"),
115
+ VasVendor: require("./src/models/vasvendor"),
116
+ Staff: require("./src/models/staff"),
117
+ ServiceRequest: require("./src/models/servicerequest"),
118
+ CountryTaxRate: require("./src/models/country_tax"),
119
+ WaterMeter: require("./src/models/water_meters"),
120
+ DailyConsumption: require("./src/models/smart_meter_daily_consumption"),
121
+ WaterMeterSettings: require("./src/models/water_meter_settings"),
122
+ AnalogBilling: require("./src/models/water_meter_billing"),
123
+ MeterSize: require("./src/models/water_meter_size"),
124
+ WaterInvoice: require("./src/models/water_invoice"),
125
+ MeterProtocol: require("./src/models/water_meter_communication"),
126
+ MeterManufacturer: require("./src/models/water_meter_manufacturer"),
127
+ MeterIotCard: require("./src/models/water_meter_iot_cards"),
128
+ MetersDelivery: require("./src/models/water_meters_delivery"),
129
+ Notification: require("./src/models/notification"),
130
+ Concentrator: require("./src/models/water_meter_concentrator"),
131
+ Handover: require("./src/models/handover"),
132
+ Budget: require("./src/models/budget"),
133
+ BudgetCategory: require("./src/models/budgetCategory"),
134
+ Expense: require("./src/models/expense"),
135
+ ExpenseCategory: require("./src/models/expense_category"),
136
+ InvoiceSettings: require("./src/models/levy_invoice_settings"),
137
+ Account: require("./src/models/account"),
138
+ FacilityPaymentDetails: require("./src/models/facility_payment_details"),
139
+ DefaultPaymentDetails: require("./src/models/default_payment_details"),
140
+ Currency: require("./src/models/currency_settings"),
141
+ WaterMeterAccount: require("./src/models/water_meter_account"),
142
+ SingleDayWaterMeterHistory: require("./src/models/water_meter_single_day_history"),
143
+ DailyWaterMeterHistory: require("./src/models/water_meter_daily_history"),
144
+ MonthlyWaterMeterHistory: require("./src/models/water_meter_monthly_history"),
145
+ WaterPrepaidCredit: require("./src/models/water_prepaid_credit"),
146
+ WaterPrepaidDebit: require("./src/models/water_prepaid_debit"),
147
+ MeterLog: require("./src/models/water_meter_communication_logs"),
148
+ CashPayment: require("./src/models/cashpayment"),
149
+ VasPayment: require("./src/models/vas_payments"),
150
+ VasInvoicesQuickBooks: require("./src/models/vas_invoices_upload"),
151
+ ServiceChargePayment: require("./src/models/service_charge_payments"),
152
+ ServiceChargeInvoiceUpload: require("./src/models/service_charge_invoice_upload"),
153
+ Campaign: require("./src/models/campaigns"),
154
+ InspectionItem: require("./src/models/item_inspection"),
155
+ Supplier: require("./src/models/suppliers"),
156
+ PurchaseRequest: require("./src/models/purchase_request"),
157
+ PurchaseOrder: require("./src/models/purchase_order"),
158
+ PaymentTermMark: require("./src/models/paymentTermsMarks"),
159
+ DeliveryTimeMark: require("./src/models/deliveryTimeMarks"),
160
+ RFQDetails: require("./src/models/rfq_details"),
161
+ RFQResponse: require("./src/models/rfq_response"),
162
+ ApprovalWorkflow: require("./src/models/approvalsWorkflows"),
163
+ CommonAreaElectricityReading: require("./src/models/common_area_electricity"),
164
+ CommonAreaWaterReading: require("./src/models/common_area_water"),
165
+ CommonAreaGeneratorReading: require("./src/models/common_area_generator"),
166
+ CommonAreaUtilityAlert: require("./src/models/common_area_utility_alert"),
167
+ BookingProperty: require("./src/models/bookingproperty"),
168
+ BookingReservation: require("./src/models/bookingreservation"),
169
+ BookingConfig: require("./src/models/bookingconfig"),
170
+ BookingAnalytics: require("./src/models/bookinganalytics"),
171
+ BookingInvoice: require("./src/models/booking_invoice"),
172
+ BankDetails: require("./src/models/bankdetails"),
173
+ RevenueRecord: require("./src/models/bookingrevenuerecord"),
174
+ GLAccount: require("./src/models/gl_accounts"),
175
+ GLEntry: require("./src/models/gl_entries"),
176
+ GLAccountDoubleEntries: require("./src/models/gl_account_double_entries"),
177
+ PendingCredential: require("./src/models/pendingCredentials"),
178
+ UnitManagementTemplate: require("./src/models/unitManagementTemplate"),
179
+ PropertyManagerRevenue: require("./src/models/propertyManagerRevenue"),
180
+ PropertyManagerContract: require("./src/models/propertyManagerContract"),
181
+ BillerAddress: require("./src/models/billerAddress"),
182
+ AssetAssignment: require("./src/models/assetsAssignment"),
183
+ Wallet: require("./src/models/wallet"),
184
+ WalletTransaction: require("./src/models/wallet_transactions"),
185
+ GoodsReceivedNote: require("./src/models/goodsReceivedNotes"),
186
+ MeterCommandQueue: require("./src/models/water_meter_Command_Queue"),
187
+ FacilityDepartment: require("./src/models/facility_departements"),
188
+ EmailSmsQueue: require("./src/models/email_sms_queue"),
189
+ PurchaseOrderInvoice: require("./src/models/purchaseOrderInvoice"),
190
+ PowerMeterCustomerBand: require("./src/models/powerMeterCustomerBand"),
191
+ PowerMeterDailyReading: require("./src/models/powerMeterDailyReading"),
192
+ PowerMeterPowerCharge: require("./src/models/powerMeterPowerCharges"),
193
+ PowerMeter: require("./src/models/powerMeters"),
194
+ PowerMeterSingleDayReading: require("./src/models/powerMeterSingleDayReading"),
195
+ PowerMeterManufacturer: require("./src/models/powerMeterManufacturer"),
196
+ PowerMeterMonthlyReading: require("./src/models/powerMeterMonthlyDayReading"),
197
+ PowerMeterTariffs: require("./src/models/powerMeterTariffs")
193
198
 
194
- // Function to load specific models on demand
195
- function loadModel(modelName) {
196
- if (!modelPaths[modelName]) {
197
- throw new Error(Model in registry);
198
- }
199
199
 
200
- if (!modelRegistry[modelName]) {
201
- modelRegistry[modelName] = require(modelPaths[modelName]);
202
- }
203
-
204
- return modelRegistry[modelName];
205
- }
200
+ };
206
201
 
207
202
  // Function to get models dynamically from a specific database connection
208
203
  async function getModelFromDB(dbConnection, modelName, schema) {
@@ -212,85 +207,9 @@ async function getModelFromDB(dbConnection, modelName, schema) {
212
207
  return dbConnection.models[modelName]; // Return existing model if already registered
213
208
  }
214
209
 
215
- // Function to load multiple models at once
216
- function loadModels(modelNames) {
217
- const models = {};
218
- modelNames.forEach(modelName => {
219
- models[modelName] = loadModel(modelName);
220
- });
221
- return models;
222
- }
223
-
224
- // Function to get available model names
225
- function getAvailableModels() {
226
- return Object.keys(modelPaths);
227
- }
228
-
229
- // Function to initialize service with specific models
230
- function initializeService(modelNames = []) {
231
- const serviceSchemas = {};
232
- const serviceModels = {};
233
- let currentConnection = null;
234
-
235
- // Load schemas for specified models
236
- modelNames.forEach(modelName => {
237
- if (!modelPaths[modelName]) {
238
- // console.warn(Warning: Model ${modelName} not found in registry);
239
- return;
240
- }
241
- serviceSchemas[modelName] = loadModel(modelName);
242
- });
243
-
244
- // Enhanced connect function that also registers models
245
- async function connectWithModels(dbName, secured, username, password, url, port) {
246
- await connectToMongoDB(dbName, secured, username, password, url, port);
247
- currentConnection = mongoose.connection;
248
-
249
- // Register models with the current connection
250
- modelNames.forEach(modelName => {
251
- if (serviceSchemas[modelName] && !currentConnection.models[modelName]) {
252
- serviceModels[modelName] = currentConnection.model(modelName, serviceSchemas[modelName]);
253
- } else if (currentConnection.models[modelName]) {
254
- serviceModels[modelName] = currentConnection.models[modelName];
255
- }
256
- });
257
-
258
- return serviceModels;
259
- }
260
-
261
- // Enhanced switchDB function that also registers models
262
- async function switchDBWithModels(dbName) {
263
- const dbConnection = await switchDB(dbName);
264
-
265
- // Register models with the new connection
266
- const dbModels = {};
267
- modelNames.forEach(modelName => {
268
- if (serviceSchemas[modelName]) {
269
- dbModels[modelName] = getModelFromDB(dbConnection, modelName, serviceSchemas[modelName]);
270
- }
271
- });
272
-
273
- return { connection: dbConnection, models: dbModels };
274
- }
275
-
276
- return {
277
- schemas: serviceSchemas,
278
- models: serviceModels,
279
- connectToMongoDB: connectWithModels,
280
- switchDB: switchDBWithModels,
281
- getModelFromDB,
282
- loadModel,
283
- loadModels,
284
- getCurrentConnection: () => currentConnection
285
- };
286
- }
287
-
288
210
  module.exports = {
289
211
  connectToMongoDB,
290
212
  switchDB,
291
213
  getModelFromDB,
292
- loadModel,
293
- loadModels,
294
- getAvailableModels,
295
- initializeService
296
- };
214
+ ...models, // Spread operator to export all models
215
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "payservedb",
3
- "version": "6.0.0",
3
+ "version": "6.0.2",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"
@@ -0,0 +1,50 @@
1
+ const mongoose = require('mongoose');
2
+
3
+ const powerMeterCustomerBandSchema = new mongoose.Schema({
4
+ facilityId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Facility',
7
+ required: true
8
+ },
9
+ meterSerialNumber: {
10
+ required: true,
11
+
12
+ },
13
+ deviceId: {
14
+ type: Number,
15
+ required: false
16
+
17
+ },
18
+ gatewayId: {
19
+ type: String,
20
+ required: true
21
+
22
+ },
23
+ meterReading: {
24
+ type: Number,
25
+ required: true,
26
+
27
+ },
28
+ lastUpdated: {
29
+ type: Date,
30
+ required: true
31
+
32
+ },
33
+ manufacturer: {
34
+ type: String,
35
+ required: true
36
+ },
37
+ type: {
38
+ type: String,
39
+ required: true,
40
+ enum: ['2 phase', '3 phase'],
41
+ default: '2 phase'
42
+
43
+ }
44
+ }, {
45
+ timestamps: true
46
+ });
47
+
48
+ const PowerMeterCustomerBand = mongoose.model('PowerMeterCustomerBand', powerMeterCustomerBandSchema);
49
+
50
+ module.exports = PowerMeterCustomerBand;
@@ -0,0 +1,50 @@
1
+ const mongoose = require('mongoose');
2
+
3
+ const powerMeterDailyReadingSchema = new mongoose.Schema({
4
+ facilityId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Facility',
7
+ required: true
8
+ },
9
+ meterSerialNumber: {
10
+ required: true,
11
+
12
+ },
13
+ deviceId: {
14
+ type: Number,
15
+ required: false
16
+
17
+ },
18
+ gatewayId: {
19
+ type: String,
20
+ required: true
21
+
22
+ },
23
+ meterReading: {
24
+ type: Number,
25
+ required: true,
26
+
27
+ },
28
+ lastUpdated: {
29
+ type: Date,
30
+ required: true
31
+
32
+ },
33
+ manufacturer: {
34
+ type: String,
35
+ required: true
36
+ },
37
+ type: {
38
+ type: String,
39
+ required: true,
40
+ enum: ['2 phase', '3 phase'],
41
+ default: '2 phase'
42
+
43
+ }
44
+ }, {
45
+ timestamps: true
46
+ });
47
+
48
+ const PowerMeterDailyReading = mongoose.model('PowerMeter', powerMeterDailyReadingSchema);
49
+
50
+ module.exports = PowerMeterDailyReading;
@@ -0,0 +1,50 @@
1
+ const mongoose = require('mongoose');
2
+
3
+ const powerMeterMonthlyReadingSchema = new mongoose.Schema({
4
+ facilityId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Facility',
7
+ required: true
8
+ },
9
+ meterSerialNumber: {
10
+ required: true,
11
+
12
+ },
13
+ deviceId: {
14
+ type: Number,
15
+ required: false
16
+
17
+ },
18
+ gatewayId: {
19
+ type: String,
20
+ required: true
21
+
22
+ },
23
+ meterReading: {
24
+ type: Number,
25
+ required: true,
26
+
27
+ },
28
+ lastUpdated: {
29
+ type: Date,
30
+ required: true
31
+
32
+ },
33
+ manufacturer: {
34
+ type: String,
35
+ required: true
36
+ },
37
+ type: {
38
+ type: String,
39
+ required: true,
40
+ enum: ['2 phase', '3 phase'],
41
+ default: '2 phase'
42
+
43
+ }
44
+ }, {
45
+ timestamps: true
46
+ });
47
+
48
+ const PowerMeterMonthlyReading = mongoose.model('PowerMeterMonthlyReading', powerMeterMonthlyReadingSchema);
49
+
50
+ module.exports = PowerMeterMonthlyReading;
@@ -0,0 +1,50 @@
1
+ const mongoose = require('mongoose');
2
+
3
+ const powerMeterPowerChargeSchema = new mongoose.Schema({
4
+ facilityId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Facility',
7
+ required: true
8
+ },
9
+ meterSerialNumber: {
10
+ required: true,
11
+
12
+ },
13
+ deviceId: {
14
+ type: Number,
15
+ required: false
16
+
17
+ },
18
+ gatewayId: {
19
+ type: String,
20
+ required: true
21
+
22
+ },
23
+ meterReading: {
24
+ type: Number,
25
+ required: true,
26
+
27
+ },
28
+ lastUpdated: {
29
+ type: Date,
30
+ required: true
31
+
32
+ },
33
+ manufacturer: {
34
+ type: String,
35
+ required: true
36
+ },
37
+ type: {
38
+ type: String,
39
+ required: true,
40
+ enum: ['2 phase', '3 phase'],
41
+ default: '2 phase'
42
+
43
+ }
44
+ }, {
45
+ timestamps: true
46
+ });
47
+
48
+ const PowerMeterPowerCharge = mongoose.model('PowerMeterPowerCharge', powerMeterPowerChargeSchema);
49
+
50
+ module.exports = PowerMeterPowerCharge;
@@ -0,0 +1,50 @@
1
+ const mongoose = require('mongoose');
2
+
3
+ const powerMeterSingleDayReadingSchema = new mongoose.Schema({
4
+ facilityId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Facility',
7
+ required: true
8
+ },
9
+ meterSerialNumber: {
10
+ required: true,
11
+
12
+ },
13
+ deviceId: {
14
+ type: Number,
15
+ required: false
16
+
17
+ },
18
+ gatewayId: {
19
+ type: String,
20
+ required: true
21
+
22
+ },
23
+ meterReading: {
24
+ type: Number,
25
+ required: true,
26
+
27
+ },
28
+ lastUpdated: {
29
+ type: Date,
30
+ required: true
31
+
32
+ },
33
+ manufacturer: {
34
+ type: String,
35
+ required: true
36
+ },
37
+ type: {
38
+ type: String,
39
+ required: true,
40
+ enum: ['2 phase', '3 phase'],
41
+ default: '2 phase'
42
+
43
+ }
44
+ }, {
45
+ timestamps: true
46
+ });
47
+
48
+ const PowerMeterSingleDayReading = mongoose.model('PowerMeterSingleDayReading', powerMeterSingleDayReadingSchema);
49
+
50
+ module.exports = PowerMeterSingleDayReading;
@@ -0,0 +1,50 @@
1
+ const mongoose = require('mongoose');
2
+
3
+ const powerMeterTariffsSchema = new mongoose.Schema({
4
+ facilityId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Facility',
7
+ required: true
8
+ },
9
+ meterSerialNumber: {
10
+ required: true,
11
+
12
+ },
13
+ deviceId: {
14
+ type: Number,
15
+ required: false
16
+
17
+ },
18
+ gatewayId: {
19
+ type: String,
20
+ required: true
21
+
22
+ },
23
+ meterReading: {
24
+ type: Number,
25
+ required: true,
26
+
27
+ },
28
+ lastUpdated: {
29
+ type: Date,
30
+ required: true
31
+
32
+ },
33
+ manufacturer: {
34
+ type: String,
35
+ required: true
36
+ },
37
+ type: {
38
+ type: String,
39
+ required: true,
40
+ enum: ['2 phase', '3 phase'],
41
+ default: '2 phase'
42
+
43
+ }
44
+ }, {
45
+ timestamps: true
46
+ });
47
+
48
+ const PowerMeterTariffs = mongoose.model('PowerMeterTariffs', powerMeterTariffsSchema);
49
+
50
+ module.exports = PowerMeterTariffs;
@@ -0,0 +1,50 @@
1
+ const mongoose = require('mongoose');
2
+
3
+ const powerMeterSchema = new mongoose.Schema({
4
+ facilityId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Facility',
7
+ required: true
8
+ },
9
+ meterSerialNumber: {
10
+ required: true,
11
+
12
+ },
13
+ deviceId: {
14
+ type: Number,
15
+ required: false
16
+
17
+ },
18
+ gatewayId: {
19
+ type: String,
20
+ required: true
21
+
22
+ },
23
+ meterReading: {
24
+ type: Number,
25
+ required: true,
26
+
27
+ },
28
+ lastUpdated: {
29
+ type: Date,
30
+ required: true
31
+
32
+ },
33
+ manufacturer: {
34
+ type: String,
35
+ required: true
36
+ },
37
+ type: {
38
+ type: String,
39
+ required: true,
40
+ enum: ['2 phase', '3 phase'],
41
+ default: '2 phase'
42
+
43
+ }
44
+ }, {
45
+ timestamps: true
46
+ });
47
+
48
+ const PowerMeter = mongoose.model('PowerMeter', powerMeterSchema);
49
+
50
+ module.exports = PowerMeter;
@@ -0,0 +1,15 @@
1
+ const mongoose = require('mongoose');
2
+
3
+ const powerMeterManufacturerSchema = new mongoose.Schema({
4
+ name: {
5
+ type: String,
6
+ required: true,
7
+
8
+ }
9
+ }, {
10
+ timestamps: true
11
+ });
12
+
13
+ const PowerMeterManufacturer = mongoose.model('PowerMeterManufacturer', powerMeterManufacturerSchema);
14
+
15
+ module.exports = PowerMeterManufacturer;