@@ -62,11 +82,10 @@ export default function SearchResultPage() {
@@ -82,7 +101,7 @@ export default function SearchResultPage() {
{movies.length > 0 ? (
{movies.map((m) => (
-
+
))}
) : (
@@ -130,13 +149,13 @@ function SectionHeader({ title, count, icon }) {
function UserResultCard({ user }) {
return (
-
-
diff --git a/server/controllers/history.controller.js b/server/controllers/history.controller.js
index 4ea673e..dbace2d 100644
--- a/server/controllers/history.controller.js
+++ b/server/controllers/history.controller.js
@@ -219,50 +219,6 @@ export const removeWatchedMovie = async (req, res) => {
}
};
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// /**
-// * Remove a watched movie
-// */
-// export const removeWatchedMovie = async (req, res) => {
-// try {
-// const { movieId } = req.params;
-// const userId = req.user.userId;
-
-// const movie = await History.findOneAndDelete({ movieId, userId });
-// if (!movie) {
-// return res.status(404).json({ success: false, message: 'Movie not found in watched list' });
-// }
-
-// res.status(200).json({ success: true, message: `${movie.title} removed from watched list`, data: movie });
-// } catch (error) {
-// console.error(error);
-// res.status(500).json({ success: false, error: 'Server error' });
-// }
-// };
-
/**
* Get another user's watched movies (public)
*/
diff --git a/server/controllers/movie.controller.js b/server/controllers/movie.controller.js
index 4e1ff0a..f4c6b38 100644
--- a/server/controllers/movie.controller.js
+++ b/server/controllers/movie.controller.js
@@ -1,4 +1,6 @@
+import axios from "axios";
import Movie from "../models/movie.model.js";
+import { TMDB_BASE_URL, TMDB_KEY } from "../config/env.js";
export const getMovieById = async (req, res) => {
const movieId = req.params.id;
@@ -16,4 +18,27 @@ export const getMovieById = async (req, res) => {
console.error("Error fetching movie: ", error);
res.status(500).json({ message: "Failed to fetch movie" });
}
-};
\ No newline at end of file
+};
+
+export const searchMovie = async (req, res) => {
+ try {
+ const query = req.query.q;
+
+ if (!query || query.trim() === "") {
+ return res.status(400).json({ success: false, error: "Query parameter 'q' is required" });
+ }
+
+ const movies = await axios.get(`${TMDB_BASE_URL}/search/movie`, {
+ params: {
+ api_key: TMDB_KEY,
+ query: query
+ }
+ });
+
+ res.status(200).json({ success: true, movies: movies.data.results });
+
+ } catch (error) {
+ console.error("Error searching movie: ", error);
+ res.status(500).json({ message: "Failed to search movie" });
+ }
+}
\ No newline at end of file
diff --git a/server/database/mongodb.js b/server/database/mongodb.js
index d201144..b674fb2 100644
--- a/server/database/mongodb.js
+++ b/server/database/mongodb.js
@@ -1,5 +1,4 @@
-import mongoose from "mongoose";
-
+import * as mongoose from "mongoose";
import { DB_URI, NODE_ENV } from "../config/env.js";
if (!DB_URI) {
@@ -9,9 +8,9 @@ if (!DB_URI) {
const connectToDatabase = async () => {
try {
await mongoose.connect(DB_URI);
- console.log(`Connected to MongoDB in ${NODE_ENV} mode`);
+ console.log("Database connected successfully in " + NODE_ENV + " environment");
} catch (error) {
- console.error("Error connecting to MongoDB: ", Error);
+ console.log("DB connection error:", error);
process.exit(1);
}
}
diff --git a/server/routes/movie.route.js b/server/routes/movie.route.js
index b9ce7d6..a3c9ca1 100644
--- a/server/routes/movie.route.js
+++ b/server/routes/movie.route.js
@@ -1,9 +1,11 @@
import { Router } from "express";
import authorize from "../middlewares/auth.middleware.js";
-import { getMovieById } from "../controllers/movie.controller.js";
+import { getMovieById, searchMovie } from "../controllers/movie.controller.js";
const movieRouter = Router();
+movieRouter.get('/search', authorize, searchMovie);
+
movieRouter.get('/:id', authorize, getMovieById);
export default movieRouter;
\ No newline at end of file