113 lines
2.2 KiB
JavaScript
113 lines
2.2 KiB
JavaScript
"use strict";
|
|
const { Sequelize, DataTypes } = require("sequelize");
|
|
const { sequelize } = require("../mySQL");
|
|
const { locationModel } = require("./locationModel");
|
|
const {
|
|
isAlphaNumericwithSpaces,
|
|
isAlphaNumericWithSpacesAndDash,
|
|
isMacAddress,
|
|
} = require('../../functions/validateData');
|
|
|
|
//sequelize.sync();
|
|
const sensorModel = sequelize.define(
|
|
"sensors",
|
|
{
|
|
id: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: true,
|
|
primaryKey: true,
|
|
autoIncrement: true,
|
|
unique: true,
|
|
validate: {
|
|
notEmpty: true,
|
|
isNumeric: true,
|
|
},
|
|
},
|
|
name: {
|
|
type: DataTypes.STRING,
|
|
allowNull: false,
|
|
length: 10,
|
|
unique: true,
|
|
validate: {
|
|
notEmpty: true,
|
|
len: [1, 30],
|
|
//accept only alphanumeric and spaces
|
|
isAlphaNumericWithSpacesAndDash(value) {
|
|
if (!isAlphaNumericWithSpacesAndDash(value)) {
|
|
throw new Error("Invalid characters in name");
|
|
}
|
|
},
|
|
},
|
|
},
|
|
added_by: {
|
|
type: DataTypes.STRING,
|
|
allowNull: false,
|
|
length: 10,
|
|
validate: {
|
|
notEmpty: { msg: "Added by cannot be empty" },
|
|
len: [1, 20],
|
|
is: ["^[a-z0-9]+$", "i"],
|
|
isIn: [["admin", "system", "Admin", "System"]],
|
|
},
|
|
},
|
|
mac_address: {
|
|
type: DataTypes.STRING,
|
|
allowNull: false,
|
|
length: 12,
|
|
unique: true,
|
|
validate: {
|
|
notEmpty: true,
|
|
len: [12, 18],
|
|
isMacAddress(value) {
|
|
if (!isMacAddress(value)) {
|
|
throw new Error("Invalid Mac Address");
|
|
}
|
|
},
|
|
},
|
|
},
|
|
description: {
|
|
type: DataTypes.STRING,
|
|
allowNull: true,
|
|
length: 100,
|
|
validate: {
|
|
notEmpty: true,
|
|
len: [1, 100],
|
|
isAlphaNumericwithSpaces(value) {
|
|
if (!isAlphaNumericwithSpaces(value)) {
|
|
throw new Error("Invalid characters in name");
|
|
}
|
|
},
|
|
},
|
|
},
|
|
locationid: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: true,
|
|
length: 100,
|
|
//one to many relationship
|
|
references: {
|
|
model: locationModel,
|
|
key: "id",
|
|
},
|
|
validate: {
|
|
notEmpty: true,
|
|
isNumeric: true,
|
|
},
|
|
},
|
|
createdAt: {
|
|
type: DataTypes.DATE,
|
|
allowNull: true,
|
|
},
|
|
updatedAt: {
|
|
type: DataTypes.DATE,
|
|
allowNull: true,
|
|
},
|
|
},
|
|
{
|
|
timestamps: true,
|
|
}
|
|
);
|
|
|
|
//sensorModel.belongsTo(locationModel);
|
|
|
|
module.exports = { sensorModel };
|