Merge pull request #2 from kfnawaz/feat/warehouse-attributes

Feat - Warehouse attribute models
This commit is contained in:
Sathishkumar Krishnan
2021-12-21 16:46:07 +05:30
committed by GitHub
8 changed files with 327 additions and 0 deletions

33
src/models/Area.js Normal file
View File

@@ -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;

38
src/models/Bay.js Normal file
View File

@@ -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;

37
src/models/Company.js Normal file
View File

@@ -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;

48
src/models/Level.js Normal file
View File

@@ -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;

33
src/models/Row.js Normal file
View File

@@ -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;

72
src/models/Sublevel.js Normal file
View File

@@ -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;

33
src/models/Warehouse.js Normal file
View File

@@ -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;

33
src/models/Zone.js Normal file
View File

@@ -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;