feat: make assignedTo field accept multiple values for all collections

This commit is contained in:
2025-11-18 13:32:47 +05:30
parent b7f63479a6
commit 8f5c0a1827
12 changed files with 202 additions and 108 deletions

View File

@@ -1,4 +1,4 @@
import mongoose from "mongoose";
import mongoose, { Schema } from "mongoose";
import { z } from "zod";
import { files } from "../file/file.schema";
import { buildJsonSchemas } from "fastify-zod";
@@ -25,7 +25,7 @@ const taskSchema = new mongoose.Schema({
ref: "user",
},
assignedTo: {
type: mongoose.Types.ObjectId,
type: [Schema.Types.ObjectId],
ref: "user",
},
taggedUsers: Array,
@@ -41,7 +41,7 @@ const createTaskInput = z.object({
title: z.string(),
dueDate: z.date().optional(),
files: z.array(files).optional(),
assignedTo: z.string().optional(),
assignedTo: z.array(z.string()).optional(),
labels: z.array(z.string()).optional(),
priority: z.string().optional(),
stage: z
@@ -64,7 +64,7 @@ const updateTaskInput = z.object({
title: z.string().optional(),
dueDate: z.date().optional(),
files: z.array(files).optional(),
assignedTo: z.string().optional(),
assignedTo: z.array(z.string()).optional(),
labels: z.array(z.string()).optional(),
priority: z.string().optional(),
stage: z

View File

@@ -163,12 +163,14 @@ export async function listTasks(
},
},
assignedTo: {
$let: {
vars: { assignedTo: { $arrayElemAt: ["$assignedTo", 0] } },
$map: {
input: "$assignedTo",
as: "user",
in: {
_id: "$$assignedTo._id",
pid: "$$assignedTo.pid",
name: "$$assignedTo.name",
_id: "$$user._id",
pid: "$$user.pid",
name: "$$user.name",
avatar: "$$user.avatar",
},
},
},
@@ -272,12 +274,14 @@ export async function searchTasks(
},
},
assignedTo: {
$let: {
vars: { assignedTo: { $arrayElemAt: ["$assignedTo", 0] } },
$map: {
input: "$assignedTo",
as: "user",
in: {
_id: "$$assignedTo._id",
pid: "$$assignedTo.pid",
name: "$$assignedTo.name",
_id: "$$user._id",
pid: "$$user.pid",
name: "$$user.name",
avatar: "$$user.avatar",
},
},
},