summary refs log tree commit diff
path: root/src/db/schemas
diff options
context:
space:
mode:
Diffstat (limited to 'src/db/schemas')
-rw-r--r--src/db/schemas/index.js2
-rw-r--r--src/db/schemas/sensorHistory.js34
-rw-r--r--src/db/schemas/spendHistory.js52
-rw-r--r--src/db/schemas/user.js21
4 files changed, 88 insertions, 21 deletions
diff --git a/src/db/schemas/index.js b/src/db/schemas/index.js

index ee1c337..ef18499 100644 --- a/src/db/schemas/index.js +++ b/src/db/schemas/index.js
@@ -1 +1,3 @@ export * from './user.js'; +export * from './spendHistory.js'; +export * from './sensorHistory.js'; diff --git a/src/db/schemas/sensorHistory.js b/src/db/schemas/sensorHistory.js new file mode 100644
index 0000000..0cf1187 --- /dev/null +++ b/src/db/schemas/sensorHistory.js
@@ -0,0 +1,34 @@ +import { model, Schema, ObjectId } from 'mongoose'; + +/** + * User schema for MongoDB. + * @type {module:mongoose.Schema} + */ +export const sensorHistorySchema = new Schema( + { + createdAt: { + type: Date, + default: Date.now, + immutable: true + }, + sensor: { + type: String, + required: true, + immutable: true + }, + value: { + type: Number, + required: true, + immutable: true + } + }, + { + timeseries: { + timeField: 'createdAt' + } + } +); + +export const DbSpendHistory = model('sensorHistory', sensorHistorySchema); + +console.log('[MONGODB] sensorHistory schema initialized successfully!'); diff --git a/src/db/schemas/spendHistory.js b/src/db/schemas/spendHistory.js
index b12bcc3..b4c3f20 100644 --- a/src/db/schemas/spendHistory.js +++ b/src/db/schemas/spendHistory.js
@@ -1,29 +1,39 @@ -import { model, Schema } from 'mongoose'; -import { hash, compare } from 'bcrypt'; -import {ref} from "joi"; +import { model, Schema, ObjectId } from 'mongoose'; /** * User schema for MongoDB. * @type {module:mongoose.Schema} */ -export const spendHistorySchema = new Schema({ - spentBy: { - type: ObjectId, - ref: "users" +export const spendHistorySchema = new Schema( + { + venue: { + type: String, + required: true, + immutable: true + }, + items: { + type: [String], + required: true, + immutable: true + }, + cost: { + type: Number, + required: true, + immutable: true + }, + createdAt: { + type: Date, + default: Date.now, + immutable: true + } + }, + { + timeseries: { + timeField: 'createdAt' + } } - createdAt: { - type: Date, - default: Date.now, - immutable: true - } -}); - -export const UserType = Object.freeze({ - USER: 'user', - MONITOR: 'monitor', - ADMIN: 'admin' -}); +); -export const DbUser = model('user', userSchema); +export const DbSpendHistory = model('spendHistory', spendHistorySchema); -console.log('[MONGODB] User schema initialized successfully!'); +console.log('[MONGODB] spendHistory schema initialized successfully!'); diff --git a/src/db/schemas/user.js b/src/db/schemas/user.js
index f8802d7..7680319 100644 --- a/src/db/schemas/user.js +++ b/src/db/schemas/user.js
@@ -84,6 +84,27 @@ export const userSchema = new Schema({ monitoredUsers: { type: [ObjectId], ref: 'users' + }, + balance: { + type: Number, + default: 0 + }, + spendHistory: { + type: [ObjectId], + ref: 'spendHistory' + }, + emergencyContacts: { + type: String + }, + medicalInfo: { + type: String + }, + location: { + // https://stackoverflow.com/a/27218808 + // Longtitute, Latitude info + type: [Number], + index: { type: '2dsphere', sparse: true }, + count: 2 } });