Add Model for backend

This commit is contained in:
2025-02-22 15:20:35 +05:30
parent fe2cd31200
commit 1fdb739950
13 changed files with 115 additions and 153 deletions
+21
View File
@@ -0,0 +1,21 @@
const mongoose = require("mongoose");
const cropSchema = new mongoose.Schema(
{
name: { type: String, required: true },
farm: { type: mongoose.Schema.Types.ObjectId, ref: "Farm", required: true },
plantedDate: { type: Date, required: true, default: Date.now() },
harvestDate: { type: Date },
growthStage: {
type: String,
enum: ["Planted", "Growing", "Ready to Harvest"],
default: "Planted",
},
healthStatus: { type: String, default: "Healthy" },
},
{ timestamps: true }
);
const Crop = mongoose.model("Crop", cropSchema);
module.exports = Crop;
+36
View File
@@ -0,0 +1,36 @@
const mongoose = require("mongoose");
const farmSchema = new mongoose.Schema(
{
name: { type: String, required: true },
location: { type: String, required: true },
owner: {
type: mongoose.Schema.Types.ObjectId,
ref: "User",
required: true,
},
waterContent: { type: String, required: true },
soilType: { type: String, required: true },
fertilizer: [
{
name: { type: String },
quantity: { type: Number },
addedAt: { type: Date, default: Date.now },
},
],
pestisides: [
{
name: { type: String },
quantity: { type: Number },
addedAt: { type: Date, default: Date.now },
},
],
crops: [{ type: mongoose.Schema.Types.ObjectId, ref: "Crop" }],
finances: { type: mongoose.Schema.Types.ObjectId, ref: "Finance" },
},
{ timestamps: true }
);
const Farm = mongoose.model("Farm", farmSchema);
module.exports = Farm;
+21
View File
@@ -0,0 +1,21 @@
const mongoose = require("mongoose");
const financeSchema = new mongoose.Schema(
{
farm: { type: mongoose.Schema.Types.ObjectId, ref: "Farm", required: true },
transactions: [
{
type: { type: String, enum: ["Expense", "Revenue"], required: true },
amount: { type: Number, required: true },
description: { type: String },
date: { type: Date, default: Date.now },
},
],
totalExpenses: { type: Number, default: 0 },
totalRevenue: { type: Number, default: 0 },
},
{ timestamps: true }
);
const Finance = mongoose.model("Finance", financeSchema);
module.exports = Finance;
-51
View File
@@ -1,51 +0,0 @@
const mongoose = require("mongoose");
const meetingSchema = new mongoose.Schema(
{
meetingDate: {
type: Date,
required: true,
},
meetingTime: {
type: String,
required: true,
},
mentorName: {
type: String,
required: true,
},
mentiName: {
type: String,
required: true,
},
mentorId: {
type: mongoose.Schema.Types.ObjectId,
ref: "User",
required: true,
},
mentiId: {
type: mongoose.Schema.Types.ObjectId,
ref: "User",
required: true,
},
status: {
type: String,
default: "Pending",
},
amount: {
type: Number,
required: true,
},
paymentStatus: {
type: "Status",
default: "Pending",
},
},
{
timestamps: true,
}
);
const Meeting = mongoose.model("Meeting", meetingSchema);
module.exports = Meeting;
+31
View File
@@ -0,0 +1,31 @@
const mongoose = require("mongoose");
const taskSchema = new mongoose.Schema(
{
farm: { type: mongoose.Schema.Types.ObjectId, ref: "Farm", required: true },
crop: { type: mongoose.Schema.Types.ObjectId, ref: "Crop" },
taskType: {
type: String,
enum: [
"Sowing",
"Watering",
"Fertilization",
"Pest Control",
"Harvesting",
],
required: true,
},
description: { type: String },
assignedDate: { type: Date, required: true, default: Date.now },
status: {
type: String,
enum: ["Pending", "Completed"],
default: "Pending",
},
},
{ timestamps: true }
);
const Task = mongoose.model("Task", taskSchema);
module.exports = Task;
+3 -29
View File
@@ -11,21 +11,9 @@ const userSchema = new mongoose.Schema(
maxLength: [30, "Please Enter the valid name"],
minLength: [2, "Name should have more than 5 characters"],
},
skills: [
{
type: String,
},
],
uniqueRole: {
type: String,
},
country: {
type: String,
},
description: {
type: String,
},
email: {
type: String,
required: true,
@@ -41,23 +29,9 @@ const userSchema = new mongoose.Schema(
type: String,
default: "/images/profile.jpeg",
},
role: {
type: String,
default: "user",
},
mainInterest: [
{
type: String,
},
],
documents: [
{
type: String,
},
],
meettingFees: {
type: Number,
},
role: { type: String, enum: ["farmer", "admin"], default: "farmer" },
farms: [{ type: mongoose.Schema.Types.ObjectId, ref: "Farm" }],
resetPasswordToken: String,
resetPasswordExpiry: Date,
},