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..1d7418c --- /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, + }, + sub_level_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..06a52f5 --- /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, + }, + sub_level_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;