@justair/justair-library 4.15.0 → 4.16.0-alpha.1ea715a

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/dist/index.d.ts CHANGED
@@ -56,6 +56,8 @@ import { networkMetricsSchema } from "./models/networkMetrics.js";
56
56
  import { NetworkMetrics } from "./models/networkMetrics.js";
57
57
  import { rateOfChangeSchema } from "./models/rateOfChange.js";
58
58
  import { RateOfChange } from "./models/rateOfChange.js";
59
+ import { sitesSchema } from "./models/sites.js";
60
+ import { Sites } from "./models/sites.js";
59
61
  import { sampleSitesSchema } from "./models/sampleSites.js";
60
62
  import { SampleSites } from "./models/sampleSites.js";
61
63
  import { sampleSiteAuditSchema } from "./models/sampleSites.js";
@@ -66,5 +68,5 @@ import { Samples } from "./models/samples.js";
66
68
  import { samplesAuditSchema } from "./models/samples.js";
67
69
  import { SamplesAudit } from "./models/samples.js";
68
70
  import { sampleParameterReferenceConcentrations } from "./models/samples.js";
69
- export { Database, adminSchema, Admin, configurationsSchema, Configurations, measurementsSchema, Measurements, monitorRequestsSchema, MonitorRequests, monitorsSchema, Monitors, organizationsSchema, Organizations, usersSchema, Users, eventsSchema, Events, lightMonitorSchema, LightMonitors, monitorSuppliersSchema, MonitorSuppliers, contextsSchema, Contexts, parametersSchema, Parameters, announcementSchema, Announcements, jobsSchema, Jobs, apiKeySchema, ApiKey, UsageMetrics, usageMetricsSchema, Audit, auditSchema, EventsAudit, eventsAuditSchema, MonitorAudit, monitorAuditSchema, parametersEnum, deploymentTypesEnum, AlertsAudit, Alerts, alertsSchema, alertsAuditSchema, Features, featuresSchema, dataCompletenessSchema, DataCompleteness, networkMetricsSchema, NetworkMetrics, rateOfChangeSchema, RateOfChange, sampleSitesSchema, SampleSites, sampleSiteAuditSchema, SampleSiteAudit, sampleParametersEnum, samplesSchema, Samples, samplesAuditSchema, SamplesAudit, sampleParameterReferenceConcentrations };
71
+ export { Database, adminSchema, Admin, configurationsSchema, Configurations, measurementsSchema, Measurements, monitorRequestsSchema, MonitorRequests, monitorsSchema, Monitors, organizationsSchema, Organizations, usersSchema, Users, eventsSchema, Events, lightMonitorSchema, LightMonitors, monitorSuppliersSchema, MonitorSuppliers, contextsSchema, Contexts, parametersSchema, Parameters, announcementSchema, Announcements, jobsSchema, Jobs, apiKeySchema, ApiKey, UsageMetrics, usageMetricsSchema, Audit, auditSchema, EventsAudit, eventsAuditSchema, MonitorAudit, monitorAuditSchema, parametersEnum, deploymentTypesEnum, AlertsAudit, Alerts, alertsSchema, alertsAuditSchema, Features, featuresSchema, dataCompletenessSchema, DataCompleteness, networkMetricsSchema, NetworkMetrics, rateOfChangeSchema, RateOfChange, sitesSchema, Sites, sampleSitesSchema, SampleSites, sampleSiteAuditSchema, SampleSiteAudit, sampleParametersEnum, samplesSchema, Samples, samplesAuditSchema, SamplesAudit, sampleParameterReferenceConcentrations };
70
72
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"AA4EA;;;iBAEC;yBAtBwB,oBAAoB;qBADxB,gBAAgB;4BAvDF,mBAAmB;sBAAnB,mBAAmB;qCAI/C,4BAA4B;+BAA5B,4BAA4B;mCAM5B,0BAA0B;6BAA1B,0BAA0B;sCAI1B,6BAA6B;gCAA7B,6BAA6B;+BAQ7B,sBAAsB;yBAAtB,sBAAsB;oCACsB,2BAA2B;8BAA3B,2BAA2B;4BAQ3C,mBAAmB;sBAAnB,mBAAmB;6BAM/C,oBAAoB;uBAApB,oBAAoB;mCAbuB,2BAA2B;8BAA3B,2BAA2B;uCAItE,8BAA8B;iCAA9B,8BAA8B;+BACI,sBAAsB;yBAAtB,sBAAsB;iCAClB,wBAAwB;2BAAxB,wBAAwB;mCAQnB,2BAA2B;8BAA3B,2BAA2B;2BAC5C,kBAAkB;qBAAlB,kBAAkB;6BACd,oBAAoB;uBAApB,oBAAoB;6BACR,0BAA0B;mCAA1B,0BAA0B;sBA/BpE,0BAA0B;4BAA1B,0BAA0B;4BA2B1B,oBAAoB;kCAApB,oBAAoB;6BAfpB,sBAAsB;mCAAtB,sBAAsB;+BAAtB,sBAAsB;oCAAtB,sBAAsB;4BAyBtB,oBAAoB;uBAApB,oBAAoB;6BAApB,oBAAoB;kCAApB,oBAAoB;yBACc,sBAAsB;+BAAtB,sBAAsB;uCAIxD,8BAA8B;iCAA9B,8BAA8B;qCACgB,4BAA4B;+BAA5B,4BAA4B;mCAChC,0BAA0B;6BAA1B,0BAA0B;kCAWpE,yBAAyB;4BAAzB,yBAAyB;sCAAzB,yBAAyB;gCAAzB,yBAAyB;qCAAzB,yBAAyB;8BASzB,qBAAqB;wBAArB,qBAAqB;mCAArB,qBAAqB;6BAArB,qBAAqB;uDAArB,qBAAqB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"AA+EA;;;iBAEC;yBAzBwB,oBAAoB;qBADxB,gBAAgB;4BAvDF,mBAAmB;sBAAnB,mBAAmB;qCAI/C,4BAA4B;+BAA5B,4BAA4B;mCAM5B,0BAA0B;6BAA1B,0BAA0B;sCAI1B,6BAA6B;gCAA7B,6BAA6B;+BAQ7B,sBAAsB;yBAAtB,sBAAsB;oCACsB,2BAA2B;8BAA3B,2BAA2B;4BAQ3C,mBAAmB;sBAAnB,mBAAmB;6BAM/C,oBAAoB;uBAApB,oBAAoB;mCAbuB,2BAA2B;8BAA3B,2BAA2B;uCAItE,8BAA8B;iCAA9B,8BAA8B;+BACI,sBAAsB;yBAAtB,sBAAsB;iCAClB,wBAAwB;2BAAxB,wBAAwB;mCAQnB,2BAA2B;8BAA3B,2BAA2B;2BAC5C,kBAAkB;qBAAlB,kBAAkB;6BACd,oBAAoB;uBAApB,oBAAoB;6BACR,0BAA0B;mCAA1B,0BAA0B;sBA/BpE,0BAA0B;4BAA1B,0BAA0B;4BA2B1B,oBAAoB;kCAApB,oBAAoB;6BAfpB,sBAAsB;mCAAtB,sBAAsB;+BAAtB,sBAAsB;oCAAtB,sBAAsB;4BAyBtB,oBAAoB;uBAApB,oBAAoB;6BAApB,oBAAoB;kCAApB,oBAAoB;yBACc,sBAAsB;+BAAtB,sBAAsB;uCAIxD,8BAA8B;iCAA9B,8BAA8B;qCACgB,4BAA4B;+BAA5B,4BAA4B;mCAChC,0BAA0B;6BAA1B,0BAA0B;4BAKxC,mBAAmB;sBAAnB,mBAAmB;kCAS/C,yBAAyB;4BAAzB,yBAAyB;sCAAzB,yBAAyB;gCAAzB,yBAAyB;qCAAzB,yBAAyB;8BASzB,qBAAqB;wBAArB,qBAAqB;mCAArB,qBAAqB;6BAArB,qBAAqB;uDAArB,qBAAqB"}
@@ -1 +1 @@
1
- {"version":3,"file":"monitors.d.ts","sourceRoot":"","sources":["../../src/models/monitors.js"],"names":[],"mappings":"AAiLA,iCA0HE;AA6IF,2BAA4D;AAzS5D,qCA4BE;AAGF,+BAAwE;AA7KxE,sCAsBE"}
1
+ {"version":3,"file":"monitors.d.ts","sourceRoot":"","sources":["../../src/models/monitors.js"],"names":[],"mappings":"AAiLA,iCA+HE;AA6IF,2BAA4D;AA9S5D,qCA4BE;AAGF,+BAAwE;AA7KxE,sCAsBE"}
@@ -1 +1 @@
1
- {"version":3,"file":"sampleSites.d.ts","sourceRoot":"","sources":["../../src/models/sampleSites.js"],"names":[],"mappings":"AA8EA,oCAmDE;AA2JF,8BAAqE;AApOrE,wCAgBE;AAGF,kCAAiF;AAvEjF,4CAWE"}
1
+ {"version":3,"file":"sampleSites.d.ts","sourceRoot":"","sources":["../../src/models/sampleSites.js"],"names":[],"mappings":"AA8EA,oCAwDE;AA2JF,8BAAqE;AAzOrE,wCAgBE;AAGF,kCAAiF;AAvEjF,4CAWE"}
@@ -0,0 +1,3 @@
1
+ export const sitesSchema: any;
2
+ export const Sites: any;
3
+ //# sourceMappingURL=sites.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sites.d.ts","sourceRoot":"","sources":["../../src/models/sites.js"],"names":[],"mappings":"AAGA,8BAoCE;AAaF,wBAAmD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@justair/justair-library",
3
- "version": "4.15.0",
3
+ "version": "4.16.0-alpha.1ea715a",
4
4
  "description": "JustAir Internal Library",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
package/src/index.js CHANGED
@@ -56,6 +56,9 @@ import { RateOfChange, rateOfChangeSchema } from "./models/rateOfChange.js";
56
56
  import Database from "./config/db.js"; // Import the new Database class
57
57
  import CustomLogger from "./config/logger.js";
58
58
 
59
+ // Sites related imports
60
+ import { sitesSchema, Sites } from "./models/sites.js";
61
+
59
62
  // SampleSites related imports
60
63
  import {
61
64
  sampleSitesSchema,
@@ -132,6 +135,9 @@ export {
132
135
  NetworkMetrics,
133
136
  rateOfChangeSchema,
134
137
  RateOfChange,
138
+ // Sites related exports
139
+ sitesSchema,
140
+ Sites,
135
141
  // SampleSites related exports
136
142
  sampleSitesSchema,
137
143
  SampleSites,
@@ -289,6 +289,11 @@ const monitorsSchema = mongoose.Schema(
289
289
  enum: Object.values(deploymentTypesEnum),
290
290
  default: deploymentTypesEnum.STATIONARY,
291
291
  },
292
+ siteId: {
293
+ type: mongoose.Types.ObjectId,
294
+ ref: "Sites",
295
+ default: null,
296
+ },
292
297
  // Optional Clarity node ID (1:1 relationship with Node-S sensor)
293
298
  nodeId: { type: String },
294
299
  // Active alarms from Clarity node (keyed by alarmType)
@@ -123,6 +123,11 @@ const sampleSitesSchema = mongoose.Schema(
123
123
  ],
124
124
  notes: { type: [noteSchema] },
125
125
  image: { type: String },
126
+ siteId: {
127
+ type: mongoose.Types.ObjectId,
128
+ ref: "Sites",
129
+ default: null,
130
+ },
126
131
  },
127
132
  {
128
133
  timestamps: true,
@@ -0,0 +1,55 @@
1
+ import mongoose from "mongoose";
2
+
3
+ // Sites Schema
4
+ const sitesSchema = mongoose.Schema(
5
+ {
6
+ name: { type: String },
7
+ sampleSiteId: {
8
+ type: mongoose.Types.ObjectId,
9
+ ref: "SampleSites",
10
+ },
11
+ monitorIds: [
12
+ {
13
+ type: mongoose.Types.ObjectId,
14
+ ref: "Monitors",
15
+ },
16
+ ],
17
+ sponsor: { type: mongoose.Types.ObjectId, ref: "Organizations" },
18
+ location: {
19
+ city: { type: String },
20
+ state: { type: String },
21
+ county: { type: String },
22
+ street: { type: String },
23
+ zip_code: { type: String },
24
+ neighborhood: { type: String },
25
+ gps: {
26
+ type: {
27
+ type: String,
28
+ enum: ["Point"],
29
+ },
30
+ coordinates: {
31
+ type: [Number],
32
+ },
33
+ },
34
+ },
35
+ isActive: { type: Boolean, default: true },
36
+ },
37
+ {
38
+ timestamps: true,
39
+ }
40
+ );
41
+
42
+ // Geographic queries
43
+ sitesSchema.index({ "location.gps": "2dsphere" });
44
+
45
+ // Sponsor-based queries
46
+ sitesSchema.index({ sponsor: 1, isActive: 1 });
47
+
48
+ // Back-reference lookups
49
+ sitesSchema.index({ sampleSiteId: 1 });
50
+ sitesSchema.index({ monitorIds: 1 });
51
+
52
+ // Create the Sites model
53
+ const Sites = mongoose.model("Sites", sitesSchema);
54
+
55
+ export { sitesSchema, Sites };