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"], maxLength: [30, "Please Enter the valid name"],
minLength: [2, "Name should have more than 5 characters"], minLength: [2, "Name should have more than 5 characters"],
}, },
skills: [
{
type: String,
},
],
uniqueRole: {
type: String,
},
country: { country: {
type: String, type: String,
}, },
description: {
type: String,
},
email: { email: {
type: String, type: String,
required: true, required: true,
@@ -41,23 +29,9 @@ const userSchema = new mongoose.Schema(
type: String, type: String,
default: "/images/profile.jpeg", default: "/images/profile.jpeg",
}, },
role: { role: { type: String, enum: ["farmer", "admin"], default: "farmer" },
type: String, farms: [{ type: mongoose.Schema.Types.ObjectId, ref: "Farm" }],
default: "user",
},
mainInterest: [
{
type: String,
},
],
documents: [
{
type: String,
},
],
meettingFees: {
type: Number,
},
resetPasswordToken: String, resetPasswordToken: String,
resetPasswordExpiry: Date, resetPasswordExpiry: Date,
}, },
+1 -53
View File
@@ -19,16 +19,6 @@ const corsOptions = {
credentials: true, credentials: true,
}; };
const server = createServer(app);
const io = new Server(server, {
cors: {
origin: process.env.FRONTEND_URI,
methods: ["GET", "PUT", "POST", "PATCH", "DELETE"],
credentials: true,
},
});
app.use(cors(corsOptions)); app.use(cors(corsOptions));
app.use(express.json({ limit: "16kb" })); app.use(express.json({ limit: "16kb" }));
app.use(express.urlencoded({ extended: true, limit: "16kb" })); app.use(express.urlencoded({ extended: true, limit: "16kb" }));
@@ -41,46 +31,4 @@ app.get("/", (req, res) => {
app.use("/api/v1", userRoute); app.use("/api/v1", userRoute);
const emailToSocketIdMap = new Map(); module.exports = app;
const socketidToEmailMap = new Map();
io.on("connection", (socket) => {
// console.log(`Socket Connected`, socket.id);
socket.on("room:join", (data) => {
const { email, room } = data;
emailToSocketIdMap.set(email, socket.id);
socketidToEmailMap.set(socket.id, email);
io.to(room).emit("user:joined", { email, id: socket.id });
socket.join(room);
io.to(socket.id).emit("room:join", data);
});
socket.on("message", ({ message, room }) => {
// console.log(message);
// console.log("Message is : ", message, "Room is : ", room);
//for sending the message all the users that are connected < --- > io.emit("receive-message", message);
//for sending the message for all the user except us <----> socket.broadcast.emit("receive-message", message);
socket.join(room);
io.to(room).emit("receive-message", message); // For sending the message for perticular room or user
});
socket.on("user:call", ({ to, offer }) => {
io.to(to).emit("incomming:call", { from: socket.id, offer });
});
socket.on("call:accepted", ({ to, ans }) => {
io.to(to).emit("call:accepted", { from: socket.id, ans });
});
socket.on("peer:nego:needed", ({ to, offer }) => {
//console.log("peer:nego:needed", offer);
io.to(to).emit("peer:nego:needed", { from: socket.id, offer });
});
socket.on("peer:nego:done", ({ to, ans }) => {
// console.log("peer:nego:done", ans);
io.to(to).emit("peer:nego:final", { from: socket.id, ans });
});
});
module.exports = server;
+2 -1
View File
@@ -2,6 +2,7 @@ const server = require("./app.js");
const dotenv = require("dotenv"); const dotenv = require("dotenv");
const cloudinary = require("cloudinary").v2; const cloudinary = require("cloudinary").v2;
const DB_connect = require("./Database/DB_connect.js"); const DB_connect = require("./Database/DB_connect.js");
const app = require("./app.js");
// dotenv Configuration // dotenv Configuration
dotenv.config({ dotenv.config({
@@ -17,7 +18,7 @@ cloudinary.config({
DB_connect(); DB_connect();
// Listening the port // Listening the port
server.listen(process.env.PORT, () => { app.listen(process.env.PORT, () => {
console.log("Server is Running on ", process.env.PORT); console.log("Server is Running on ", process.env.PORT);
console.log("Frontend URI : ", process.env.FRONTEND_URI); console.log("Frontend URI : ", process.env.FRONTEND_URI);
}); });
-19
View File
@@ -1,19 +0,0 @@
{
"version": 2,
"builds": [
{
"src": "index.js",
"use": "@vercel/node"
}
],
"routes": [
{
"src": "/api/v1/(.*)",
"dest": "index.js"
},
{
"src": "/(.*)",
"dest": "index.js"
}
]
}