From 15c450bf2b28fc81379b8de04418f67f4c927a68 Mon Sep 17 00:00:00 2001 From: Llewellyn D'souza Date: Tue, 21 Dec 2021 16:09:43 +0530 Subject: [PATCH 1/2] Created models --- src/models/Area.js | 33 +++++++++++++++++++ src/models/Bay.js | 38 ++++++++++++++++++++++ src/models/Company.js | 37 +++++++++++++++++++++ src/models/Level.js | 48 +++++++++++++++++++++++++++ src/models/Row.js | 33 +++++++++++++++++++ src/models/Sublevel.js | 72 +++++++++++++++++++++++++++++++++++++++++ src/models/Warehouse.js | 33 +++++++++++++++++++ src/models/Zone.js | 33 +++++++++++++++++++ 8 files changed, 327 insertions(+) create mode 100644 src/models/Area.js create mode 100644 src/models/Bay.js create mode 100644 src/models/Company.js create mode 100644 src/models/Level.js create mode 100644 src/models/Row.js create mode 100644 src/models/Sublevel.js create mode 100644 src/models/Warehouse.js create mode 100644 src/models/Zone.js diff --git a/src/models/Area.js b/src/models/Area.js new file mode 100644 index 0000000..9ef4409 --- /dev/null +++ b/src/models/Area.js @@ -0,0 +1,33 @@ +const mongoose = require("mongoose"); + +const schema = new mongoose.Schema( + { + name: { + type: String, + required: true, + trim: true, + }, + type: { + type: String, + required: true, + trim: true, + }, + specs: { + type: String, + trim: true, + }, + rows: [ + { + type: mongoose.Schema.Types.ObjectId, + ref: "Row", + }, + ], + }, + { + timestamps: true, + } +); + +const Area = mongoose.model("Area", schema); + +module.exports = Area; diff --git a/src/models/Bay.js b/src/models/Bay.js new file mode 100644 index 0000000..57c6e2e --- /dev/null +++ b/src/models/Bay.js @@ -0,0 +1,38 @@ +const mongoose = require("mongoose"); + +const schema = new mongoose.Schema( + { + name: { + type: String, + required: true, + trim: true, + }, + number: { + type: String, + required: true, + trim: true, + }, + type: { + type: String, + required: true, + trim: true, + }, + specs: { + type: String, + trim: true, + }, + levels: [ + { + type: mongoose.Schema.Types.ObjectId, + ref: "Level", + }, + ], + }, + { + timestamps: true, + } +); + +const Level = mongoose.model("Level", schema); + +module.exports = Level; diff --git a/src/models/Company.js b/src/models/Company.js new file mode 100644 index 0000000..d09bc40 --- /dev/null +++ b/src/models/Company.js @@ -0,0 +1,37 @@ +const mongoose = require("mongoose"); + +const schema = new mongoose.Schema( + { + name: { + type: String, + required: true, + trim: true, + }, + address: { + type: String, + required: true, + trim: true, + }, + contact_info: { + type: String, + trim: true, + }, + business_info: { + type: String, + trim: true, + }, + warehouses: [ + { + type: mongoose.Schema.Types.ObjectId, + ref: "Warehouse", + }, + ], + }, + { + timestamps: true, + } +); + +const Company = mongoose.model("Company", schema); + +module.exports = Company; diff --git a/src/models/Level.js b/src/models/Level.js new file mode 100644 index 0000000..2fcdfb2 --- /dev/null +++ b/src/models/Level.js @@ -0,0 +1,48 @@ +const mongoose = require("mongoose"); + +const schema = new mongoose.Schema( + { + name: { + required: true, + type: String, + trim: true, + }, + number: { + required: true, + type: String, + trim: true, + }, + specs: { + // TODO: TBD + type: String, + trim: true, + }, + sub_levels: [ + { + type: { + required: true, + type: String, + enum: ["POSITION", "BIN", "PALLET"], // TODO: Add to constant file + }, + depth: { + required: true, + type: Number, + min: 1, // Level is at 0 + max: 5, + }, + reference_id: { + required: true, + type: mongoose.Schema.Types.ObjectId, + ref: "Sublevel", + }, + }, + ], + }, + { + timestamps: true, + } +); + +const Level = mongoose.model("Level", schema); + +module.exports = Level; diff --git a/src/models/Row.js b/src/models/Row.js new file mode 100644 index 0000000..210ed71 --- /dev/null +++ b/src/models/Row.js @@ -0,0 +1,33 @@ +const mongoose = require("mongoose"); + +const schema = new mongoose.Schema( + { + name: { + type: String, + required: true, + trim: true, + }, + number: { + type: String, + required: true, + trim: true, + }, + specs: { + type: String, + trim: true, + }, + bays: [ + { + type: mongoose.Schema.Types.ObjectId, + ref: "Bay", + }, + ], + }, + { + timestamps: true, + } +); + +const Row = mongoose.model("Row", schema); + +module.exports = Row; diff --git a/src/models/Sublevel.js b/src/models/Sublevel.js new file mode 100644 index 0000000..01829b1 --- /dev/null +++ b/src/models/Sublevel.js @@ -0,0 +1,72 @@ +const mongoose = require("mongoose"); + +const schema = new mongoose.Schema( + { + name: { + required: true, + type: String, + trim: true, + }, + type: { + type: String, + required: true, + enum: ["POSITION", "BIN", "PALLET"], // TODO: Add to constant file + }, + specs: { + // TBD + type: String, + trim: true, + }, + main_level_id: { + required: true, + type: mongoose.Schema.Types.ObjectId, + ref: "Level", + }, + current_depth: { + required: true, + type: Number, + }, + parent_sublevel_id: { + // Not required if depth is 1 + type: mongoose.Schema.Types.ObjectId, + ref: "Sublevel", + }, + sub_levels: [ + { + type: { + required: true, + type: String, + enum: ["POSITION", "BIN", "PALLET"], + }, + depth: { + required: true, + type: Number, + min: 1, // Level is at 0 + max: 5, + }, + reference_id: { + required: true, + type: mongoose.Schema.Types.ObjectId, + ref: "Sublevel", + }, + }, + ], + hasInventory: { + type: Boolean, + default: false, + }, + inventory: [ + { + type: mongoose.Schema.Types.ObjectId, + ref: "Inventory", + }, + ], + }, + { + timestamps: true, + } +); + +const Level = mongoose.model("Level", schema); + +module.exports = Level; diff --git a/src/models/Warehouse.js b/src/models/Warehouse.js new file mode 100644 index 0000000..fb5a1f2 --- /dev/null +++ b/src/models/Warehouse.js @@ -0,0 +1,33 @@ +const mongoose = require("mongoose"); + +const schema = new mongoose.Schema( + { + name: { + type: String, + required: true, + trim: true, + }, + address: { + type: String, + required: true, + trim: true, + }, + specs: { + type: String, + trim: true, + }, + zones: [ + { + type: mongoose.Schema.Types.ObjectId, + ref: "Zone", + }, + ], + }, + { + timestamps: true, + } +); + +const Warehouse = mongoose.model("Warehouse", schema); + +module.exports = Warehouse; diff --git a/src/models/Zone.js b/src/models/Zone.js new file mode 100644 index 0000000..7ac6521 --- /dev/null +++ b/src/models/Zone.js @@ -0,0 +1,33 @@ +const mongoose = require("mongoose"); + +const schema = new mongoose.Schema( + { + name: { + type: String, + required: true, + trim: true, + }, + type: { + type: String, + required: true, + trim: true, + }, + specs: { + type: String, + trim: true, + }, + areas: [ + { + type: mongoose.Schema.Types.ObjectId, + ref: "Area", + }, + ], + }, + { + timestamps: true, + } +); + +const Zone = mongoose.model("Zone", schema); + +module.exports = Zone; From dbfe4f415749f02bffd899955de8e6542fef7902 Mon Sep 17 00:00:00 2001 From: Llewellyn D'souza Date: Tue, 21 Dec 2021 16:44:23 +0530 Subject: [PATCH 2/2] Renamed: reference_id -> sub_level_id --- src/models/Level.js | 2 +- src/models/Sublevel.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/models/Level.js b/src/models/Level.js index 2fcdfb2..1d7418c 100644 --- a/src/models/Level.js +++ b/src/models/Level.js @@ -30,7 +30,7 @@ const schema = new mongoose.Schema( min: 1, // Level is at 0 max: 5, }, - reference_id: { + sub_level_id: { required: true, type: mongoose.Schema.Types.ObjectId, ref: "Sublevel", diff --git a/src/models/Sublevel.js b/src/models/Sublevel.js index 01829b1..06a52f5 100644 --- a/src/models/Sublevel.js +++ b/src/models/Sublevel.js @@ -44,7 +44,7 @@ const schema = new mongoose.Schema( min: 1, // Level is at 0 max: 5, }, - reference_id: { + sub_level_id: { required: true, type: mongoose.Schema.Types.ObjectId, ref: "Sublevel",