import { model, Schema } from 'mongoose'; import { hash, compare } from 'bcrypt'; export const deviceSchema = new Schema({ name: { type: String, required: true, trim: true }, createdAt: { type: Date, default: Date.now, immutable: true }, lastSeen: { type: Date, default: Date.now, required: true } }); /** * User schema for MongoDB. * @type {module:mongoose.Schema} */ export const userSchema = new Schema({ username: { type: String, required: true, unique: true, trim: true }, passwordHash: { type: String, required: true }, email: { type: String, required: true, unique: true, trim: true }, type: { type: String, enum: ['user', 'monitor', 'admin'], default: 'user' }, createdAt: { type: Date, default: Date.now, immutable: true }, devices: { type: [deviceSchema], default: [] } }); export const DbUser = model('user', userSchema); console.log('[MONGODB] User schema initialized successfully!');