Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions models/group.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ const schema = new mongoose.Schema({
type: Date,
default: Date.now,
},
isDeleted:{
type: Boolean,
default:false
}
});

const group = mongoose.model("Group", schema);
Expand Down
9 changes: 9 additions & 0 deletions models/message.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@ const schema = new mongoose.Schema({
ref: "Group",
required: true,
},
projectId: {
type: mongoose.Schema.Types.ObjectId,
ref: "Project",
required: true
},
messageType: {
type: String,
enum: ["Text", "Image", "Video", "File"],
Expand All @@ -20,6 +25,10 @@ const schema = new mongoose.Schema({
type: Date,
default: Date.now,
},
isDeleted: {
type: Boolean,
default: false
}
});

const message = mongoose.model("Message", schema);
Expand Down
4 changes: 4 additions & 0 deletions models/project.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ const schema = new mongoose.Schema({
type: Date,
default: Date.now,
},
isDeleted: {
type: Boolean,
default: false
}
});

const project = mongoose.model("Project", schema);
Expand Down
4 changes: 4 additions & 0 deletions models/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ const schema = new mongoose.Schema({
type: Date,
default: Date.now,
},
isDeleted: {
type: Boolean,
default: false
}
});

const user = mongoose.model("User", schema);
Expand Down
41 changes: 40 additions & 1 deletion services/v1/DeveloperService.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,49 @@
import Service from "./Service";
import HttpResponse from "../../helpers/HttpResponse";

class DeveloperService extends Service {
constructor(model) {
super(model);
}

async getAll(query) {
let { skip, limit, sortBy } = query;

skip = skip ? Number(skip) : 0;
limit = limit ? Number(limit) : 10;
sortBy = sortBy ? sortBy : { createdAt: -1 };

delete query.skip;
delete query.limit;
delete query.sortBy;
query['isDeleted'] = false;

console.log("query", query);

if (query._id) {
try {
query._id = new mongoose.mongo.ObjectId(query._id);
} catch (error) {
throw new Error("Not able to generate mongoose id with content");
}
}
try {
const items = await this.model
.find({ query })
.sort(sortBy)
.skip(skip)
.limit(limit)
.populate({ path: 'projects', match: { isDeleted: false }, select: '_id' })
const total = await this.model.countDocuments(query);

return new HttpResponse(items, { totalCount: total });
} catch (errors) {
throw errors;
}
}

async findByEmail(email) {
console.log('called1');
try {
const item = await this.model.findOne({ email });
return item;
Expand All @@ -15,8 +53,9 @@ class DeveloperService extends Service {
}

async findByEmailOrCreateIfNotFound(data) {
console.log('called');
try {
let item = await this.model.findOne({ email: data.email }).populate('projects');
let item = await this.model.findOne({ email: data.email }).populate({ path: 'projects', match: { isDeleted: 'false' } })

if (!item) {
item = await this.insert(data);
Expand Down
22 changes: 17 additions & 5 deletions services/v1/GroupService.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ class GroupService extends Service {

try {
const item = await this.model
.findById(id)
.findOne({ _id: id, isDeleted: false })
.populate("membersList", "name")
.populate("admins", "name");;

Expand Down Expand Up @@ -93,20 +93,32 @@ class GroupService extends Service {
}

async addMessage(id, messageId) {

try {
const item = await this.model.findByIdAndUpdate(
id,
{ $push: { messages: messageId } },
{ new: true }
)
// console.log("Here",item)
// console.log("Here",item)
return item;
} catch (error) {
throw error;
} catch (errors) {
throw errors;
}

}

async deleteGroups(id) {

try {
const item = await this.model.updateMany({ projectId: id }, { isDeleted: true });
return item;
} catch (errors) {
throw errors;
}
}


}

export default GroupService;
10 changes: 10 additions & 0 deletions services/v1/MessageService.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,16 @@ class MessageService extends Service {
}

}

async deleteMessages(id) {

try {
const item = await this.model.updateMany({ projectId: id }, { isDeleted: true });
return item;
} catch (errors) {
throw errors;
}
}
}

export default MessageService;
18 changes: 16 additions & 2 deletions services/v1/ProjectService.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,18 @@
import HttpResponse from "../../helpers/HttpResponse";
import Service from "./Service";
import Developer from "../../models/developer";
import Message from "../../models/message";
import Group from "../../models/group";
import User from "../../models/user";
import DeveloperService from "./DeveloperService";
import MessageService from "./MessageService";
import GroupService from "./GroupService";
import UserService from "./UserService";

const developerService = new DeveloperService(Developer);
const messageService = new MessageService(Message);
const groupService = new GroupService(Group);
const userService = new UserService(User);

class ProjectService extends Service {
constructor(model) {
Expand All @@ -24,8 +34,12 @@ class ProjectService extends Service {

async delete(developerId, id) {
try {
const item = await this.model.findByIdAndDelete(id);
await developerService.removeProject(developerId, id);
const item = await this.model.findByIdAndUpdate(id, { isDeleted: true });
// await developerService.removeProject(developerId, id);
await groupService.deleteGroups(id);
await userService.deleteUsers(id);
await messageService.deleteMessages(id);

if (!item) {
const error = new Error("Item not found");

Expand Down
8 changes: 5 additions & 3 deletions services/v1/Service.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ class Service {
delete query.skip;
delete query.limit;
delete query.sortBy;
query['isDeleted'] = false;

console.log("query", query);

if (query._id) {
try {
Expand All @@ -26,7 +29,6 @@ class Service {
throw new Error("Not able to generate mongoose id with content");
}
}

try {
const items = await this.model
.find(query)
Expand All @@ -43,7 +45,7 @@ class Service {

async get(id) {
try {
const item = await this.model.findById(id);
const item = await this.model.findOne({ _id: id, isDeleted: false });

if (!item) {
const error = new Error("Item not found");
Expand Down Expand Up @@ -83,7 +85,7 @@ class Service {

async delete(id) {
try {
const item = await this.model.findByIdAndDelete(id);
const item = await this.model.findByIdAndUpdate(id, { isDeleted: true }, { new: true })

if (!item) {
const error = new Error("Item not found");
Expand Down
10 changes: 10 additions & 0 deletions services/v1/UserService.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,16 @@ class UserService extends Service {
constructor(model) {
super(model);
}

async deleteUsers(id) {

try {
const item = await this.model.updateMany({ projectId: id }, { isDeleted: true });
return item;
} catch (errors) {
throw errors;
}
}
}

export default UserService;