Skip to content

Commit 0f0a538

Browse files
committed
implememnt getTodo method and add error handling in mongo.ts
1 parent c310562 commit 0f0a538

File tree

1 file changed

+55
-22
lines changed

1 file changed

+55
-22
lines changed

src/database/mongo.ts

+55-22
Original file line numberDiff line numberDiff line change
@@ -4,39 +4,72 @@ import { ITodo, TodoSchema } from '../models/todo';
44
const uri = process.env.MONGO_URI ?? '';
55

66
async function connectDB() {
7-
try {
8-
await mongoose.connect(uri);
9-
console.log('MongoDB connected with Mongoose');
10-
} catch (error) {
11-
console.error('Error connecting to MongoDB:', error);
7+
try {
8+
await mongoose.connect(uri);
9+
console.log('MongoDB connected with Mongoose');
10+
} catch (error) {
11+
console.error('Error connecting to MongoDB:', error);
12+
}
1213
}
13-
}
1414

1515
async function getTodos() {
16-
const todos = await TodoSchema.find();
17-
return todos;
16+
try {
17+
const todos = await TodoSchema.find();
18+
return todos;
19+
} catch (error) {
20+
console.error('Error fetching todos:', error);
21+
throw error;
22+
}
23+
}
24+
25+
async function getTodo(id: string) {
26+
try {
27+
const todo = await TodoSchema.findById(id);
28+
if (!todo) {
29+
throw new Error('Todo not found');
30+
}
31+
return todo;
32+
} catch (error) {
33+
console.error('Error fetching todo:', error);
34+
throw error;
35+
}
1836
}
1937

2038
async function addTodo(todo: ITodo) {
21-
const newTodo = new TodoSchema(todo);
22-
await newTodo.save();
23-
return newTodo;
39+
try {
40+
const newTodo = new TodoSchema(todo);
41+
await newTodo.save();
42+
return newTodo;
43+
} catch (error) {
44+
console.error('Error creating todo:', error);
45+
throw error;
46+
}
2447
}
2548

2649
async function updateTodo(id: string, updateData: Partial<ITodo>) {
27-
const updatedTodo = await TodoSchema.findByIdAndUpdate(id, updateData);
28-
if (!updatedTodo) {
29-
throw new Error('Todo not found');
30-
}
31-
return updatedTodo;
50+
try {
51+
const updatedTodo = await TodoSchema.findByIdAndUpdate(id, updateData, { new: true });
52+
if (!updatedTodo) {
53+
throw new Error('Todo not found');
54+
}
55+
return updatedTodo;
56+
} catch (error) {
57+
console.error('Error updating todo:', error);
58+
throw error;
59+
}
3260
}
3361

3462
async function deleteTodo(id: string) {
35-
const deletedTodo = await TodoSchema.findByIdAndDelete(id);
36-
if (!deletedTodo) {
37-
throw new Error('Todo not found');
38-
}
39-
return 'Todo deleted successfully';
63+
try {
64+
const deletedTodo = await TodoSchema.findByIdAndDelete(id);
65+
if (!deletedTodo) {
66+
throw new Error('Todo not found');
67+
}
68+
return 'Todo deleted successfully';
69+
} catch (error) {
70+
console.error('Error deleting todo:', error);
71+
throw error;
72+
}
4073
}
4174

42-
export { connectDB, getTodos, addTodo, updateTodo, deleteTodo };
75+
export { connectDB, getTodos, getTodo, addTodo, updateTodo, deleteTodo };

0 commit comments

Comments
 (0)