From 2d808398a3d889b589498a83d4e6bec9c3c37f8b Mon Sep 17 00:00:00 2001 From: Cory Bullinger Date: Mon, 26 Jan 2026 15:48:45 -0500 Subject: [PATCH 01/22] Apply MongoDB branding and modern UI improvements to mFlix application - Implement comprehensive MongoDB brand color system with CSS custom properties - Add ExpandableTable component with modern pill-shaped Show More/Show Less button - Update all component styling to use MongoDB brand colors (Forest, Evergreen, Mint, Slate) - Replace gradient styling with solid MongoDB brand colors throughout - Change background from Mint to White for cleaner appearance - Update comment boxes with MongoDB branding (Mint background, Forest border) - Redesign pagination to text-link style with animated underlines - Update search modal buttons (Clear, Close, Search Movies) from blue to Forest green - Enhance hover effects, transitions, and accessibility across all components - Improve responsive design and focus states for better UX --- .../app/aggregations/aggregations.module.css | 69 ++-- mflix/client/app/aggregations/page.tsx | 180 +++++----- .../ActionButtons/ActionButtons.module.css | 67 ++-- .../EditMovieForm/EditMovieForm.module.css | 144 ++++---- .../ExpandableTable.module.css | 125 +++++++ .../ExpandableTable/ExpandableTable.tsx | 50 +++ .../components/FilterBar/FilterBar.module.css | 115 ++++--- .../LoadingSkeleton.module.css | 90 +++-- .../components/MovieCard/MovieCard.module.css | 123 ++++--- .../PageSizeSelector.module.css | 40 +-- .../Pagination/Pagination.module.css | 93 ++--- .../SearchMovieModal.module.css | 28 +- mflix/client/app/globals.css | 77 ++++- mflix/client/app/home.module.css | 92 +++-- mflix/client/app/layout.module.css | 78 +++-- mflix/client/app/movies/movies.module.css | 322 ++++++++++-------- 16 files changed, 1078 insertions(+), 615 deletions(-) create mode 100644 mflix/client/app/components/ExpandableTable/ExpandableTable.module.css create mode 100644 mflix/client/app/components/ExpandableTable/ExpandableTable.tsx diff --git a/mflix/client/app/aggregations/aggregations.module.css b/mflix/client/app/aggregations/aggregations.module.css index 89a3d13..23e62ef 100644 --- a/mflix/client/app/aggregations/aggregations.module.css +++ b/mflix/client/app/aggregations/aggregations.module.css @@ -1,42 +1,54 @@ -/* Aggregations styles */ +/* Aggregations styles - MongoDB Branded */ .container { max-width: 1200px; margin: 0 auto; - padding: 2rem; + padding: 2.5rem; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif; } .title { - font-size: 2.5rem; + font-size: 2.75rem; font-weight: 700; - color: #1a1a1a; - margin-bottom: 0.5rem; + color: var(--mongodb-slate); + margin-bottom: 0.75rem; text-align: center; } +.title::after { + content: ''; + display: block; + width: 100px; + height: 4px; + background: var(--mongodb-spring); + margin: 1rem auto 0; + border-radius: 2px; +} + .subtitle { - font-size: 1.1rem; - color: #666; + font-size: 1.15rem; + color: var(--color-text-secondary); text-align: center; margin-bottom: 3rem; + font-weight: 500; } .section { margin-bottom: 3rem; - background: #fff; - border-radius: 8px; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + background: var(--mongodb-white); + border-radius: var(--radius-xl); + box-shadow: var(--shadow-lg); overflow: hidden; + border: 2px solid var(--mongodb-mint); } .sectionTitle { font-size: 1.5rem; - font-weight: 600; - color: #2c3e50; + font-weight: 700; + color: var(--mongodb-white); margin: 0; padding: 1.5rem 2rem; - background: #f8f9fa; - border-bottom: 1px solid #e9ecef; + background: var(--mongodb-forest); + border-bottom: 3px solid var(--mongodb-spring); } .tableContainer { @@ -47,31 +59,34 @@ .table { width: 100%; border-collapse: collapse; - font-size: 0.9rem; + font-size: 0.95rem; } .table th { - background: #34495e; - color: white; + background: var(--mongodb-slate); + color: var(--mongodb-white); font-weight: 600; - padding: 1rem; + padding: 1.125rem 1.25rem; text-align: left; white-space: nowrap; + font-size: 0.9rem; + text-transform: uppercase; + letter-spacing: 0.05em; } .table td { - padding: 1rem; - border-bottom: 1px solid #e9ecef; + padding: 1.125rem 1.25rem; + border-bottom: 1px solid var(--color-border); vertical-align: top; } .table tr:hover { - background: #f8f9fa; + background: var(--mongodb-mint); } .movieTitle { font-weight: 600; - color: #2c3e50; + color: var(--mongodb-slate); max-width: 200px; word-wrap: break-word; } @@ -96,9 +111,9 @@ .comment { margin-bottom: 0.75rem; padding: 0.5rem; - background: #f8f9fa; - border-radius: 4px; - border-left: 3px solid #3498db; + background: var(--mongodb-mint); + border-radius: var(--radius-md); + border-left: 3px solid var(--mongodb-forest); } .comment:last-child { @@ -107,14 +122,14 @@ .commentText { font-size: 0.85rem; - color: #2c3e50; + color: var(--mongodb-slate); margin-bottom: 0.25rem; line-height: 1.4; } .commentMeta { font-size: 0.75rem; - color: #7f8c8d; + color: var(--color-text-muted); font-style: italic; } diff --git a/mflix/client/app/aggregations/page.tsx b/mflix/client/app/aggregations/page.tsx index 00b8d16..d7766b6 100644 --- a/mflix/client/app/aggregations/page.tsx +++ b/mflix/client/app/aggregations/page.tsx @@ -2,6 +2,7 @@ import React from 'react'; import { fetchMoviesWithComments, fetchMoviesByYear, fetchDirectorStats } from '@/lib/api'; import { MovieWithComments, YearlyStats, DirectorStats } from '@/types/aggregations'; import styles from './aggregations.module.css'; +import ExpandableTable from '@/components/ExpandableTable/ExpandableTable'; export default async function AggregationsPage() { const MOVIES_WITH_COMMENTS_LIMIT = 5; @@ -38,43 +39,48 @@ export default async function AggregationsPage() {

Movies with Recent Comments

{commentsData.success && commentsData.data ? ( -
- - - - - - - - - - - - {(commentsData.data as MovieWithComments[]).map((movie) => ( - - - - - - + +
+
Movie TitleYearRatingTotal CommentsRecent Comments
{movie.title}{movie.year}{movie.imdbRating ? movie.imdbRating.toFixed(1) : 'N/A'}{movie.totalComments} -
- {movie.recentComments?.slice(0, 2).map((comment, index) => ( -
-
- “{(comment.text || 'No text').slice(0, 80)}{comment.text?.length > 80 ? '...' : ''}” -
-
- by {comment.userName} on {new Date(comment.date).toLocaleDateString()} -
-
- )) ||
No recent comments
} -
-
+ + + + + + + - ))} - -
Movie TitleYearRatingTotal CommentsRecent Comments
-
+ + + {(commentsData.data as MovieWithComments[]).map((movie) => ( + + {movie.title} + {movie.year} + {movie.imdbRating ? movie.imdbRating.toFixed(1) : 'N/A'} + {movie.totalComments} + +
+ {movie.recentComments?.slice(0, 2).map((comment, index) => ( +
+
+ “{(comment.text || 'No text').slice(0, 80)}{comment.text?.length > 80 ? '...' : ''}” +
+
+ by {comment.userName} on {new Date(comment.date).toLocaleDateString()} +
+
+ )) ||
No recent comments
} +
+ + + ))} + + + + ) : (
Failed to load movies with comments: {commentsData.error || 'Unknown error'} @@ -86,32 +92,37 @@ export default async function AggregationsPage() {

Movies by Year Statistics

{yearData.success && yearData.data ? ( -
- - - - - - - - - - - - - {(yearData.data as YearlyStats[]).slice(0, 20).map((yearStats) => ( - - - - - - - + +
+
YearMovie CountAverage RatingHighest RatingLowest RatingTotal Votes
{yearStats.year}{yearStats.movieCount}{yearStats.averageRating ? yearStats.averageRating.toFixed(2) : 'N/A'}{yearStats.highestRating ? yearStats.highestRating.toFixed(1) : 'N/A'}{yearStats.lowestRating ? yearStats.lowestRating.toFixed(1) : 'N/A'}{yearStats.totalVotes?.toLocaleString() || 'N/A'}
+ + + + + + + + - ))} - -
YearMovie CountAverage RatingHighest RatingLowest RatingTotal Votes
-
+ + + {(yearData.data as YearlyStats[]).map((yearStats) => ( + + {yearStats.year} + {yearStats.movieCount} + {yearStats.averageRating ? yearStats.averageRating.toFixed(2) : 'N/A'} + {yearStats.highestRating ? yearStats.highestRating.toFixed(1) : 'N/A'} + {yearStats.lowestRating ? yearStats.lowestRating.toFixed(1) : 'N/A'} + {yearStats.totalVotes?.toLocaleString() || 'N/A'} + + ))} + + +
+ ) : (
Failed to load yearly statistics: {yearData.error || 'Unknown error'} @@ -123,28 +134,33 @@ export default async function AggregationsPage() {

Directors with Most Movies

{directorsData.success && directorsData.data ? ( -
- - - - - - - - - - - {(directorsData.data as DirectorStats[]).map((director, index) => ( - - - - - + +
+
RankDirectorMovie CountAverage Rating
#{index + 1}{director.director}{director.movieCount}{director.averageRating ? director.averageRating.toFixed(2) : 'N/A'}
+ + + + + + - ))} - -
RankDirectorMovie CountAverage Rating
-
+ + + {(directorsData.data as DirectorStats[]).map((director, index) => ( + + #{index + 1} + {director.director} + {director.movieCount} + {director.averageRating ? director.averageRating.toFixed(2) : 'N/A'} + + ))} + + +
+ ) : (
Failed to load director statistics: {directorsData.error || 'Unknown error'} diff --git a/mflix/client/app/components/ActionButtons/ActionButtons.module.css b/mflix/client/app/components/ActionButtons/ActionButtons.module.css index 7372279..a5c1b32 100644 --- a/mflix/client/app/components/ActionButtons/ActionButtons.module.css +++ b/mflix/client/app/components/ActionButtons/ActionButtons.module.css @@ -1,6 +1,6 @@ /** - * Action Buttons Styles - * + * Action Buttons Styles - MongoDB Branded + * * CSS Module for the action buttons component. * Provides consistent styling with the rest of the application. */ @@ -10,53 +10,67 @@ gap: 1rem; margin-bottom: 2rem; justify-content: flex-start; + flex-wrap: wrap; } .button { - padding: 0.75rem 1.5rem; + padding: 0.875rem 1.75rem; border: none; - border-radius: 8px; + border-radius: var(--radius-lg); font-size: 1rem; - font-weight: 500; + font-weight: 600; cursor: pointer; - transition: all 0.2s ease; + transition: all var(--transition-base); text-decoration: none; display: inline-flex; align-items: center; justify-content: center; - min-width: 120px; + min-width: 140px; + box-shadow: var(--shadow-sm); } .button:disabled { - opacity: 0.6; + opacity: 0.5; cursor: not-allowed; transform: none; + box-shadow: none; } .editButton { - background: #0070f3; - color: white; - border: 1px solid #0070f3; + background: var(--mongodb-forest); + color: var(--mongodb-white); + border: 2px solid var(--mongodb-forest); } .editButton:hover:not(:disabled) { - background: #0051cc; - border-color: #0051cc; - transform: translateY(-1px); - box-shadow: 0 4px 8px rgba(0, 112, 243, 0.3); + background: var(--mongodb-evergreen); + border-color: var(--mongodb-evergreen); + transform: translateY(-2px); + box-shadow: 0 6px 16px rgba(0, 104, 74, 0.4); +} + +.editButton:active:not(:disabled) { + transform: translateY(0); + box-shadow: var(--shadow-sm); } .deleteButton { - background: #dc2626; - color: white; - border: 1px solid #dc2626; + background: var(--mongodb-white); + color: var(--color-error); + border: 2px solid var(--color-error); } .deleteButton:hover:not(:disabled) { - background: #b91c1c; - border-color: #b91c1c; - transform: translateY(-1px); - box-shadow: 0 4px 8px rgba(220, 38, 38, 0.3); + background: var(--color-error); + color: var(--mongodb-white); + border-color: var(--color-error); + transform: translateY(-2px); + box-shadow: 0 6px 16px rgba(229, 62, 62, 0.4); +} + +.deleteButton:active:not(:disabled) { + transform: translateY(0); + box-shadow: var(--shadow-sm); } /* Responsive Design */ @@ -68,17 +82,18 @@ .button { width: 100%; - padding: 0.875rem 1rem; + padding: 1rem; } } @media (max-width: 480px) { .actionButtons { - gap: 0.5rem; + gap: 0.625rem; } .button { - padding: 0.75rem 1rem; - font-size: 0.9rem; + padding: 0.875rem 1rem; + font-size: 0.95rem; + min-width: 120px; } } \ No newline at end of file diff --git a/mflix/client/app/components/EditMovieForm/EditMovieForm.module.css b/mflix/client/app/components/EditMovieForm/EditMovieForm.module.css index c5887d8..def3a42 100644 --- a/mflix/client/app/components/EditMovieForm/EditMovieForm.module.css +++ b/mflix/client/app/components/EditMovieForm/EditMovieForm.module.css @@ -1,47 +1,60 @@ /** - * Edit Movie Form Styles - * + * Edit Movie Form Styles - MongoDB Branded + * * CSS Module for the edit movie form component. * Provides consistent styling with the rest of the application. */ .formContainer { - background: white; - border-radius: 12px; - padding: 2rem; - box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + background: var(--mongodb-white); + border-radius: var(--radius-xl); + padding: 2.5rem; + box-shadow: var(--shadow-lg); margin-bottom: 2rem; + border: 2px solid var(--mongodb-mint); } .formTitle { - font-size: 1.75rem; - font-weight: bold; - color: #333; + font-size: 2rem; + font-weight: 700; + color: var(--mongodb-slate); margin: 0 0 1.5rem 0; text-align: center; } +.formTitle::after { + content: ''; + display: block; + width: 60px; + height: 3px; + background: var(--mongodb-spring); + margin: 0.75rem auto 0; + border-radius: 2px; +} + .batchDescription { - background-color: #f8f9fa; - border: 1px solid #e9ecef; - border-radius: 8px; - padding: 1rem; + background: var(--mongodb-mint); + border: 2px solid var(--mongodb-forest); + border-radius: var(--radius-lg); + padding: 1.25rem; margin-bottom: 1.5rem; - color: #495057; - font-size: 0.9rem; - line-height: 1.4; + color: var(--mongodb-slate); + font-size: 0.95rem; + line-height: 1.5; text-align: center; + font-weight: 500; } .generalError { - background-color: #f8d7da; - border: 1px solid #f5c6cb; - color: #721c24; - padding: 0.75rem 1rem; - border-radius: 8px; - margin-bottom: 1rem; - font-size: 0.9rem; + background: #fef2f2; + border: 2px solid var(--color-error); + color: #991b1b; + padding: 1rem 1.25rem; + border-radius: var(--radius-lg); + margin-bottom: 1.5rem; + font-size: 0.95rem; text-align: center; + font-weight: 600; } .form { @@ -58,57 +71,59 @@ .formGroup { display: flex; flex-direction: column; - gap: 0.5rem; + gap: 0.625rem; } .label { - font-weight: 500; - color: #333; - font-size: 0.9rem; + font-weight: 600; + color: var(--mongodb-slate); + font-size: 0.95rem; } .input, .textarea { - padding: 0.75rem; - border: 2px solid #e1e5e9; - border-radius: 8px; + padding: 0.875rem; + border: 2px solid var(--color-border); + border-radius: var(--radius-md); font-size: 1rem; - transition: border-color 0.2s ease, box-shadow 0.2s ease; - background: white; + transition: all var(--transition-base); + background: var(--mongodb-white); + color: var(--mongodb-slate); } .input:focus, .textarea:focus { outline: none; - border-color: #0070f3; - box-shadow: 0 0 0 3px rgba(0, 112, 243, 0.1); + border-color: var(--mongodb-forest); + box-shadow: 0 0 0 3px rgba(0, 104, 74, 0.1); } .input:disabled, .textarea:disabled { - background: #f8f9fa; - color: #6c757d; + background: var(--color-border); + color: var(--color-text-muted); cursor: not-allowed; } .inputError { - border-color: #dc2626 !important; + border-color: var(--color-error) !important; } .inputError:focus { - box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.1) !important; + box-shadow: 0 0 0 3px rgba(229, 62, 62, 0.1) !important; } .textarea { resize: vertical; - min-height: 100px; + min-height: 120px; font-family: inherit; } .error { - color: #dc2626; + color: var(--color-error); font-size: 0.875rem; - margin-top: 0.25rem; + margin-top: 0.375rem; + font-weight: 500; } .listFields { @@ -122,51 +137,54 @@ display: flex; gap: 1rem; justify-content: flex-end; - padding-top: 1.5rem; - border-top: 1px solid #e1e5e9; + padding-top: 2rem; + border-top: 2px solid var(--mongodb-mint); + margin-top: 1rem; } .button { - padding: 0.75rem 1.5rem; + padding: 0.875rem 1.75rem; border: none; - border-radius: 8px; + border-radius: var(--radius-lg); font-size: 1rem; - font-weight: 500; + font-weight: 600; cursor: pointer; - transition: all 0.2s ease; - min-width: 120px; + transition: all var(--transition-base); + min-width: 140px; + box-shadow: var(--shadow-sm); } .button:disabled { - opacity: 0.6; + opacity: 0.5; cursor: not-allowed; transform: none; + box-shadow: none; } .saveButton { - background: #0070f3; - color: white; - border: 1px solid #0070f3; + background: var(--mongodb-forest); + color: var(--mongodb-white); + border: 2px solid var(--mongodb-forest); } .saveButton:hover:not(:disabled) { - background: #0051cc; - border-color: #0051cc; - transform: translateY(-1px); - box-shadow: 0 4px 8px rgba(0, 112, 243, 0.3); + background: var(--mongodb-evergreen); + border-color: var(--mongodb-evergreen); + transform: translateY(-2px); + box-shadow: 0 6px 16px rgba(0, 104, 74, 0.4); } .cancelButton { - background: #6c757d; - color: white; - border: 1px solid #6c757d; + background: var(--mongodb-white); + color: var(--color-text-secondary); + border: 2px solid var(--color-border); } .cancelButton:hover:not(:disabled) { - background: #5a6268; - border-color: #5a6268; - transform: translateY(-1px); - box-shadow: 0 4px 8px rgba(108, 117, 125, 0.3); + background: var(--color-border); + border-color: var(--color-text-secondary); + transform: translateY(-2px); + box-shadow: var(--shadow-md); } /* Multi-movie form styles */ diff --git a/mflix/client/app/components/ExpandableTable/ExpandableTable.module.css b/mflix/client/app/components/ExpandableTable/ExpandableTable.module.css new file mode 100644 index 0000000..c683056 --- /dev/null +++ b/mflix/client/app/components/ExpandableTable/ExpandableTable.module.css @@ -0,0 +1,125 @@ +.container { + position: relative; +} + +.tableWrapper { + position: relative; + overflow: hidden; + transition: max-height 0.3s ease-in-out; +} + +.collapsed { + max-height: 600px; +} + +.expanded { + max-height: none; +} + +.collapsed::after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 80px; + background: linear-gradient(to bottom, transparent, var(--mongodb-white)); + pointer-events: none; +} + +.buttonContainer { + display: flex; + justify-content: center; + padding: 1.5rem 0; + margin-top: 1rem; +} + +.expandButton { + display: inline-flex; + align-items: center; + gap: 0.625rem; + padding: 0.875rem 2rem; + background: transparent; + color: var(--mongodb-forest); + border: none; + border-radius: 50px; + font-size: 0.9375rem; + font-weight: 600; + letter-spacing: 0.01em; + cursor: pointer; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + position: relative; + overflow: hidden; +} + +.expandButton::before { + content: ''; + position: absolute; + inset: 0; + background: var(--mongodb-mint); + border-radius: 50px; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + z-index: -1; +} + +.expandButton:hover { + color: var(--mongodb-white); + transform: translateY(-1px); +} + +.expandButton:hover::before { + background: var(--mongodb-forest); + box-shadow: 0 8px 16px rgba(0, 104, 74, 0.2); +} + +.expandButton:active { + transform: translateY(0); +} + +.expandButton:active::before { + box-shadow: 0 4px 8px rgba(0, 104, 74, 0.15); +} + +.expandButton:focus { + outline: none; +} + +.expandButton:focus-visible::after { + content: ''; + position: absolute; + inset: -3px; + border: 2px solid var(--mongodb-spring); + border-radius: 50px; + animation: focusPulse 1.5s ease-in-out infinite; +} + +@keyframes focusPulse { + 0%, 100% { + opacity: 1; + } + 50% { + opacity: 0.6; + } +} + +.buttonIcon { + font-size: 0.75rem; + transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); + display: inline-block; +} + +.expandButton:hover .buttonIcon { + transform: translateY(2px); +} + +@media (max-width: 768px) { + .collapsed { + max-height: 400px; + } + + .expandButton { + font-size: 0.875rem; + padding: 0.625rem 1.25rem; + } +} + diff --git a/mflix/client/app/components/ExpandableTable/ExpandableTable.tsx b/mflix/client/app/components/ExpandableTable/ExpandableTable.tsx new file mode 100644 index 0000000..abc1cf1 --- /dev/null +++ b/mflix/client/app/components/ExpandableTable/ExpandableTable.tsx @@ -0,0 +1,50 @@ +'use client'; + +import React, { useState } from 'react'; +import styles from './ExpandableTable.module.css'; + +interface ExpandableTableProps { + children: React.ReactNode; + initialRowCount?: number; + totalRowCount: number; +} + +export default function ExpandableTable({ + children, + initialRowCount = 10, + totalRowCount +}: ExpandableTableProps) { + const [isExpanded, setIsExpanded] = useState(false); + const showExpandButton = totalRowCount > initialRowCount; + + return ( +
+
+ {children} +
+ {showExpandButton && ( +
+ +
+ )} +
+ ); +} + diff --git a/mflix/client/app/components/FilterBar/FilterBar.module.css b/mflix/client/app/components/FilterBar/FilterBar.module.css index ee17f25..b3e5064 100644 --- a/mflix/client/app/components/FilterBar/FilterBar.module.css +++ b/mflix/client/app/components/FilterBar/FilterBar.module.css @@ -1,29 +1,30 @@ /** - * FilterBar Component Styles + * FilterBar Component Styles - MongoDB Branded * * CSS Module for the movie filter bar component. * Provides a horizontal filter bar for filtering movies by genre, year, rating, etc. */ .filterBar { - background: white; - border-radius: 12px; - padding: 1.25rem 1.5rem; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); - margin-bottom: 1.5rem; + background: var(--mongodb-white); + border-radius: var(--radius-xl); + padding: 1.5rem 2rem; + box-shadow: var(--shadow-md); + margin-bottom: 2rem; + border: 2px solid var(--mongodb-mint); } .filterHeader { display: flex; align-items: center; justify-content: space-between; - margin-bottom: 1rem; + margin-bottom: 1.25rem; } .filterTitle { - font-size: 0.875rem; - font-weight: 600; - color: #64748b; + font-size: 0.95rem; + font-weight: 700; + color: var(--mongodb-slate); text-transform: uppercase; letter-spacing: 0.05em; margin: 0; @@ -33,113 +34,119 @@ } .clearFiltersButton { - background: transparent; - border: 1px solid #e2e8f0; - color: #64748b; - padding: 0.375rem 0.75rem; - border-radius: 6px; - font-size: 0.8rem; + background: var(--mongodb-white); + border: 2px solid var(--mongodb-forest); + color: var(--mongodb-forest); + padding: 0.5rem 1rem; + border-radius: var(--radius-md); + font-size: 0.85rem; + font-weight: 600; cursor: pointer; - transition: all 0.2s ease; + transition: all var(--transition-base); } .clearFiltersButton:hover { - background: #f8fafc; - border-color: #cbd5e1; - color: #475569; + background: var(--mongodb-mint); + border-color: var(--mongodb-evergreen); + color: var(--mongodb-evergreen); + transform: translateY(-1px); + box-shadow: var(--shadow-sm); } .filterControls { display: flex; flex-wrap: wrap; - gap: 1rem; + gap: 1.25rem; align-items: flex-end; } .filterGroup { display: flex; flex-direction: column; - gap: 0.25rem; - min-width: 140px; + gap: 0.5rem; + min-width: 150px; } .filterLabel { - font-size: 0.75rem; - font-weight: 500; - color: #64748b; + font-size: 0.85rem; + font-weight: 600; + color: var(--mongodb-slate); } .filterSelect, .filterInput { - padding: 0.5rem 0.75rem; - border: 2px solid #e2e8f0; - border-radius: 8px; - font-size: 0.875rem; - background: white; - color: #374151; - transition: border-color 0.2s ease, box-shadow 0.2s ease; - min-width: 120px; + padding: 0.625rem 0.875rem; + border: 2px solid var(--color-border); + border-radius: var(--radius-md); + font-size: 0.9rem; + background: var(--mongodb-white); + color: var(--mongodb-slate); + transition: all var(--transition-base); + min-width: 130px; } .filterSelect:hover, .filterInput:hover { - border-color: #cbd5e1; + border-color: var(--mongodb-forest); } .filterSelect:focus, .filterInput:focus { outline: none; - border-color: #3b82f6; - box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.15); + border-color: var(--mongodb-forest); + box-shadow: 0 0 0 3px rgba(0, 104, 74, 0.1); } .ratingGroup { display: flex; align-items: center; - gap: 0.5rem; + gap: 0.625rem; } .ratingInput { - width: 70px; + width: 80px; } .ratingDivider { - color: #94a3b8; - font-size: 0.875rem; + color: var(--color-text-muted); + font-size: 0.9rem; + font-weight: 600; } .applyButton { - background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%); - color: white; + background: var(--mongodb-forest); + color: var(--mongodb-white); border: none; - padding: 0.5rem 1rem; - border-radius: 8px; - font-size: 0.875rem; + padding: 0.625rem 1.25rem; + border-radius: var(--radius-md); + font-size: 0.9rem; font-weight: 600; cursor: pointer; - transition: all 0.2s ease; + transition: all var(--transition-base); white-space: nowrap; + box-shadow: var(--shadow-sm); } .applyButton:hover { - background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%); - transform: translateY(-1px); - box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3); + background: var(--mongodb-evergreen); + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0, 104, 74, 0.4); } .applyButton:disabled { opacity: 0.5; cursor: not-allowed; transform: none; + box-shadow: none; } .activeFilters { display: flex; flex-wrap: wrap; - gap: 0.5rem; - margin-top: 1rem; - padding-top: 1rem; - border-top: 1px solid #e2e8f0; + gap: 0.625rem; + margin-top: 1.25rem; + padding-top: 1.25rem; + border-top: 2px solid var(--mongodb-mint); } .filterChip { diff --git a/mflix/client/app/components/LoadingSkeleton/LoadingSkeleton.module.css b/mflix/client/app/components/LoadingSkeleton/LoadingSkeleton.module.css index 9fd700e..4a04d44 100644 --- a/mflix/client/app/components/LoadingSkeleton/LoadingSkeleton.module.css +++ b/mflix/client/app/components/LoadingSkeleton/LoadingSkeleton.module.css @@ -1,85 +1,77 @@ /** - * Loading Skeleton Styles - * + * Loading Skeleton Styles - MongoDB Branded + * * Reusable skeleton loading animations and styles */ /* Base skeleton element */ .skeleton { - background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); - background-size: 200% 100%; - animation: loading 1.5s infinite; - border-radius: 4px; + background: var(--mongodb-mint); + animation: pulse 1.5s ease-in-out infinite; + border-radius: var(--radius-sm); } /* Loading animation */ -@keyframes loading { - 0% { - background-position: 200% 0; +@keyframes pulse { + 0%, 100% { + opacity: 1; } - 100% { - background-position: -200% 0; + 50% { + opacity: 0.6; } } /* Skeleton variants */ .skeletonText { - background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); - background-size: 200% 100%; - animation: loading 1.5s infinite; - border-radius: 4px; + background: var(--mongodb-mint); + animation: pulse 1.5s ease-in-out infinite; + border-radius: var(--radius-sm); height: 16px; margin-bottom: 0.5rem; } .skeletonTitle { - background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); - background-size: 200% 100%; - animation: loading 1.5s infinite; - border-radius: 4px; + background: var(--mongodb-mint); + animation: pulse 1.5s ease-in-out infinite; + border-radius: var(--radius-sm); height: 24px; margin-bottom: 1rem; } .skeletonLargeTitle { - background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); - background-size: 200% 100%; - animation: loading 1.5s infinite; - border-radius: 4px; + background: var(--mongodb-mint); + animation: pulse 1.5s ease-in-out infinite; + border-radius: var(--radius-sm); height: 40px; margin-bottom: 1rem; } .skeletonButton { - background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); - background-size: 200% 100%; - animation: loading 1.5s infinite; - border-radius: 6px; + background: var(--mongodb-mint); + animation: pulse 1.5s ease-in-out infinite; + border-radius: var(--radius-md); height: 40px; } .skeletonCard { - background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); - background-size: 200% 100%; - animation: loading 1.5s infinite; - border-radius: 8px; + background: var(--mongodb-mint); + animation: pulse 1.5s ease-in-out infinite; + border-radius: var(--radius-lg); height: 300px; } .skeletonAvatar { - background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); - background-size: 200% 100%; - animation: loading 1.5s infinite; + background: var(--mongodb-mint); + animation: pulse 1.5s ease-in-out infinite; border-radius: 50%; width: 40px; height: 40px; } .skeletonInput { - background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); - background-size: 200% 100%; - animation: loading 1.5s infinite; - border-radius: 6px; + background: var(--mongodb-mint); + animation: pulse 1.5s ease-in-out infinite; + border-radius: var(--radius-md); height: 38px; } @@ -130,20 +122,19 @@ /* Movie-specific skeletons */ .movieCardSkeleton { - border: 1px solid #eee; - border-radius: 8px; + border: 2px solid var(--color-border); + border-radius: var(--radius-lg); padding: 16px; - background: white; + background: var(--mongodb-white); display: flex; flex-direction: column; gap: 16px; } .posterSkeleton { - background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); - background-size: 200% 100%; - animation: loading 1.5s infinite; - border-radius: 4px; + background: var(--mongodb-mint); + animation: pulse 1.5s ease-in-out infinite; + border-radius: var(--radius-md); width: 100%; height: 300px; } @@ -180,13 +171,12 @@ /* Rating card skeleton */ .ratingCardSkeleton { - background: linear-gradient(90deg, #f8f8f8 25%, #e9ecef 50%, #f8f8f8 75%); - background-size: 200% 100%; - animation: loading 1.5s infinite; - border-radius: 8px; + background: var(--mongodb-mint); + animation: pulse 1.5s ease-in-out infinite; + border-radius: var(--radius-lg); padding: 1rem; text-align: center; - border: 1px solid #e9ecef; + border: 2px solid var(--color-border); display: flex; flex-direction: column; gap: 0.5rem; diff --git a/mflix/client/app/components/MovieCard/MovieCard.module.css b/mflix/client/app/components/MovieCard/MovieCard.module.css index c19765d..9c664c0 100644 --- a/mflix/client/app/components/MovieCard/MovieCard.module.css +++ b/mflix/client/app/components/MovieCard/MovieCard.module.css @@ -1,6 +1,6 @@ /** - * Movies Card Styles - * + * Movies Card Styles - MongoDB Branded + * * CSS Module for the movies card component. * Provides responsive grid layout and movie card styling. */ @@ -14,23 +14,43 @@ } .movieCard { - border: 1px solid #ddd; - border-radius: 8px; + border: 2px solid var(--color-border); + border-radius: var(--radius-lg); padding: 16px; - background: white; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); - transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease; + background: var(--mongodb-white); + box-shadow: var(--shadow-sm); + transition: all var(--transition-base); position: relative; + overflow: hidden; +} + +.movieCard::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 4px; + background: var(--mongodb-spring); + transform: scaleX(0); + transform-origin: left; + transition: transform var(--transition-base); } .movieCard:hover { - transform: translateY(-2px); - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); + transform: translateY(-4px); + box-shadow: var(--shadow-lg); + border-color: var(--mongodb-forest); +} + +.movieCard:hover::before { + transform: scaleX(1); } .movieCard.selected { - border-color: #0070f3; - box-shadow: 0 2px 4px rgba(0, 112, 243, 0.2); + border-color: var(--mongodb-spring); + box-shadow: 0 4px 12px rgba(0, 237, 100, 0.3); + background: var(--mongodb-mint); } .selectionCheckbox { @@ -41,16 +61,19 @@ display: flex; align-items: center; gap: 4px; - background: rgba(255, 255, 255, 0.9); - padding: 4px 8px; - border-radius: 4px; + background: var(--mongodb-white); + padding: 6px 10px; + border-radius: var(--radius-md); font-size: 12px; + box-shadow: var(--shadow-sm); + border: 1px solid var(--color-border); } .checkbox { - width: 16px; - height: 16px; + width: 18px; + height: 18px; cursor: pointer; + accent-color: var(--mongodb-forest); } .moviePoster { @@ -58,13 +81,13 @@ width: 100%; height: 300px; margin-bottom: 16px; - background: #f5f5f5; - border-radius: 4px; + background: var(--mongodb-mint); + border-radius: var(--radius-md); overflow: hidden; } .moviePoster img { - border-radius: 4px; + border-radius: var(--radius-md); object-fit: cover; } @@ -74,11 +97,12 @@ justify-content: center; width: 100%; height: 100%; - color: #666; + color: var(--color-text-muted); font-size: 14px; text-align: center; - background: #f5f5f5; - border-radius: 4px; + background: var(--mongodb-mint); + border-radius: var(--radius-md); + font-weight: 500; } .movieInfo { @@ -88,77 +112,90 @@ .movieTitle { margin: 0 0 8px 0; font-size: 18px; - font-weight: 600; + font-weight: 700; line-height: 1.3; - color: #333; + color: var(--mongodb-slate); } .movieYear { margin: 0 0 4px 0; - color: #666; + color: var(--color-text-secondary); font-size: 14px; + font-weight: 500; } .movieRating { margin: 0 0 4px 0; - color: #666; + color: var(--color-text-secondary); font-size: 14px; + font-weight: 500; } .vectorScore { - margin: 0 0 4px 0; - color: #0066cc; + margin: 0 0 8px 0; + color: var(--mongodb-forest); font-size: 13px; - font-weight: 500; - background: #e6f0ff; - padding: 4px 8px; - border-radius: 4px; + font-weight: 600; + background: var(--mongodb-mint); + padding: 6px 10px; + border-radius: var(--radius-md); display: inline-block; + border: 1px solid var(--mongodb-forest); } .movieGenres { margin: 0; - color: #888; + color: var(--color-text-muted); font-size: 12px; - font-style: italic; + font-weight: 500; } .detailsButton { display: block; width: 100%; - background: #0066cc; - color: white; + background: var(--mongodb-forest); + color: var(--mongodb-white); border: none; padding: 12px 16px; - border-radius: 4px; + border-radius: var(--radius-md); font-size: 14px; - font-weight: 500; + font-weight: 600; cursor: pointer; text-decoration: none; text-align: center; - transition: background-color 0.2s ease; + transition: all var(--transition-base); + box-shadow: var(--shadow-sm); } .detailsButton:hover { - background: #0052a3; + background: var(--mongodb-evergreen); + transform: translateY(-2px); + box-shadow: var(--shadow-md); +} + +.detailsButton:active { + transform: translateY(0); } .noMovies { text-align: center; padding: 40px; - color: #666; + color: var(--color-text-secondary); + font-size: 1.1rem; } .pageTitle { margin: 0 0 16px 0; font-size: 32px; - color: #333; + color: var(--mongodb-slate); + font-weight: 700; } .movieCount { margin: 0 0 32px 0; - color: #666; + color: var(--color-text-secondary); font-size: 16px; + font-weight: 500; } /* Responsive Design */ diff --git a/mflix/client/app/components/PageSizeSelector/PageSizeSelector.module.css b/mflix/client/app/components/PageSizeSelector/PageSizeSelector.module.css index 254793f..92d1a7b 100644 --- a/mflix/client/app/components/PageSizeSelector/PageSizeSelector.module.css +++ b/mflix/client/app/components/PageSizeSelector/PageSizeSelector.module.css @@ -1,42 +1,44 @@ /** - * Page Size Selector Component Styles - * + * Page Size Selector Component Styles - MongoDB Branded + * * CSS Module for the page size selector component. */ .pageSizeSelector { display: flex; align-items: center; - gap: 0.5rem; + gap: 0.75rem; margin-bottom: 2rem; justify-content: center; } .label { - font-size: 0.9rem; - color: #666; - font-weight: 500; + font-size: 0.95rem; + color: var(--mongodb-slate); + font-weight: 600; } .select { - padding: 0.5rem 0.75rem; - border: 1px solid #ddd; - border-radius: 6px; - background: white; - color: #333; - font-size: 0.9rem; + padding: 0.625rem 1rem; + border: 2px solid var(--mongodb-forest); + border-radius: var(--radius-md); + background: var(--mongodb-white); + color: var(--mongodb-slate); + font-size: 0.95rem; + font-weight: 600; cursor: pointer; - transition: border-color 0.2s ease; + transition: all var(--transition-base); } .select:hover { - border-color: #0070f3; + border-color: var(--mongodb-evergreen); + background: var(--mongodb-mint); } .select:focus { outline: none; - border-color: #0070f3; - box-shadow: 0 0 0 2px rgba(0, 112, 243, 0.2); + border-color: var(--mongodb-forest); + box-shadow: 0 0 0 3px rgba(0, 104, 74, 0.1); } /* Responsive Design */ @@ -46,11 +48,11 @@ } .label { - font-size: 0.85rem; + font-size: 0.9rem; } .select { - font-size: 0.85rem; - padding: 0.4rem 0.6rem; + font-size: 0.9rem; + padding: 0.5rem 0.875rem; } } \ No newline at end of file diff --git a/mflix/client/app/components/Pagination/Pagination.module.css b/mflix/client/app/components/Pagination/Pagination.module.css index 6ef714c..e0044ec 100644 --- a/mflix/client/app/components/Pagination/Pagination.module.css +++ b/mflix/client/app/components/Pagination/Pagination.module.css @@ -1,6 +1,6 @@ /** - * Pagination Component Styles - * + * Pagination Component Styles - MongoDB Branded + * * CSS Module for the pagination component. * Provides previous/next navigation. */ @@ -10,7 +10,7 @@ display: flex; flex-direction: column; align-items: center; - gap: 1rem; + gap: 1.25rem; } .paginationContainer { @@ -25,47 +25,64 @@ display: inline-flex; align-items: center; justify-content: center; - padding: 0.75rem 1.5rem; - background: #fff; - color: #0070f3; - border: 1px solid #ddd; - border-radius: 6px; + padding: 0.5rem 0.75rem; + background: transparent; + color: var(--mongodb-forest); + border: none; + border-radius: var(--radius-sm); text-decoration: none; font-weight: 500; - font-size: 0.9rem; - transition: all 0.2s ease; + font-size: 0.95rem; + transition: all var(--transition-base); min-width: fit-content; + position: relative; +} + +.pageButton::after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 2px; + background: var(--mongodb-forest); + transform: scaleX(0); + transition: transform var(--transition-base); +} + +.pageButton:hover:not(.disabled)::after { + transform: scaleX(1); } .pageButton:hover:not(.disabled) { - background: #0070f3; - color: white; - border-color: #0070f3; - transform: translateY(-1px); - box-shadow: 0 2px 4px rgba(0, 112, 243, 0.2); + color: var(--mongodb-evergreen); + background: rgba(0, 104, 74, 0.05); +} + +.pageButton:active:not(.disabled) { + background: rgba(0, 104, 74, 0.1); } .pageButton.disabled { - background: #f5f5f5; - color: #999; - border-color: #eee; + color: var(--color-text-muted); cursor: not-allowed; + opacity: 0.5; } .pageInfo { - font-size: 1rem; - font-weight: 600; - color: #333; - padding: 0.75rem 1rem; - background: #f8f9fa; - border-radius: 6px; - border: 1px solid #e9ecef; + font-size: 0.95rem; + font-weight: 500; + color: var(--mongodb-slate); + padding: 0.5rem 1rem; + background: transparent; + border-radius: var(--radius-md); } .additionalInfo { - font-size: 0.85rem; - color: #666; + font-size: 0.9rem; + color: var(--color-text-secondary); text-align: center; + font-weight: 500; } /* Responsive Design */ @@ -79,35 +96,35 @@ } .pageButton { - padding: 0.6rem 1.2rem; - font-size: 0.85rem; + padding: 0.75rem 1.5rem; + font-size: 0.9rem; } .pageInfo { - font-size: 0.9rem; - padding: 0.6rem 0.8rem; + font-size: 0.95rem; + padding: 0.75rem 1.25rem; } } @media (max-width: 480px) { .paginationContainer { - gap: 0.5rem; + gap: 0.75rem; width: 100%; } .pageButton { flex: 1; - max-width: 120px; - padding: 0.6rem 0.8rem; - font-size: 0.8rem; + max-width: 130px; + padding: 0.75rem 1rem; + font-size: 0.85rem; } .pageInfo { - font-size: 0.8rem; - padding: 0.5rem 0.7rem; + font-size: 0.85rem; + padding: 0.625rem 1rem; } .additionalInfo { - font-size: 0.8rem; + font-size: 0.85rem; } } \ No newline at end of file diff --git a/mflix/client/app/components/SearchMovieModal/SearchMovieModal.module.css b/mflix/client/app/components/SearchMovieModal/SearchMovieModal.module.css index b757b2f..ed88c71 100644 --- a/mflix/client/app/components/SearchMovieModal/SearchMovieModal.module.css +++ b/mflix/client/app/components/SearchMovieModal/SearchMovieModal.module.css @@ -182,40 +182,40 @@ } .saveButton { - background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%); - color: white; + background: var(--mongodb-forest); + color: var(--mongodb-white); border: none; min-width: 140px; } .saveButton:hover:not(:disabled) { - background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%); + background: var(--mongodb-evergreen); transform: translateY(-2px); - box-shadow: 0 6px 16px rgba(37, 99, 235, 0.35); + box-shadow: 0 6px 16px rgba(0, 104, 74, 0.4); } .cancelButton { - background: #f1f5f9; - color: #475569; - border: 1.5px solid #e2e8f0; + background: var(--mongodb-white); + color: var(--color-text-secondary); + border: 1.5px solid var(--color-border); } .cancelButton:hover:not(:disabled) { - background: #e2e8f0; - border-color: #cbd5e1; + background: var(--color-border); + border-color: var(--color-text-secondary); transform: translateY(-1px); } .clearButton { background: transparent; - color: #64748b; - border: 1.5px solid #e2e8f0; + color: var(--color-text-secondary); + border: 1.5px solid var(--color-border); } .clearButton:hover:not(:disabled) { - background: #f8fafc; - border-color: #cbd5e1; - color: #475569; + background: var(--mongodb-mint); + border-color: var(--mongodb-forest); + color: var(--mongodb-forest); } /* Responsive Design */ diff --git a/mflix/client/app/globals.css b/mflix/client/app/globals.css index 6f2cb59..422a767 100644 --- a/mflix/client/app/globals.css +++ b/mflix/client/app/globals.css @@ -1,10 +1,65 @@ +/** + * MongoDB mFlix - Global Styles + * Design System based on MongoDB Brand Guidelines + */ + +/* MongoDB Brand Colors */ +:root { + /* Primary MongoDB Colors */ + --mongodb-white: #FFFFFF; + --mongodb-mint: #E3FCF7; + --mongodb-forest: #00684A; + --mongodb-spring: #00ED64; + --mongodb-slate: #001E2B; + --mongodb-evergreen: #023430; + --mongodb-lavender: #F9EBFF; + + /* Semantic Colors */ + --color-primary: var(--mongodb-forest); + --color-primary-hover: var(--mongodb-evergreen); + --color-accent: var(--mongodb-spring); + --color-background: var(--mongodb-white); + --color-background-alt: var(--mongodb-mint); + --color-surface: var(--mongodb-white); + --color-text-primary: var(--mongodb-slate); + --color-text-secondary: #4A5568; + --color-text-muted: #718096; + --color-border: #E2E8F0; + --color-border-hover: var(--mongodb-forest); + + /* Status Colors */ + --color-success: var(--mongodb-spring); + --color-error: #E53E3E; + --color-warning: #DD6B20; + --color-info: var(--mongodb-forest); + + /* Shadows */ + --shadow-sm: 0 1px 3px rgba(0, 30, 43, 0.1); + --shadow-md: 0 4px 6px rgba(0, 30, 43, 0.1); + --shadow-lg: 0 10px 15px rgba(0, 30, 43, 0.1); + --shadow-xl: 0 20px 25px rgba(0, 30, 43, 0.15); + + /* Border Radius */ + --radius-sm: 4px; + --radius-md: 8px; + --radius-lg: 12px; + --radius-xl: 16px; + + /* Transitions */ + --transition-fast: 150ms ease; + --transition-base: 200ms ease; + --transition-slow: 300ms ease; +} + html, body { max-width: 100vw; overflow-x: hidden; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', sans-serif; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; line-height: 1.6; - color: #333; + color: var(--color-text-primary); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } * { @@ -14,10 +69,22 @@ body { } body { - background: #fafafa; + background: var(--color-background); +} + +/* Link hover effects */ +a { + color: inherit; + text-decoration: none; + transition: color var(--transition-base); } -/* Link hover effects for navigation */ a:hover { - color: #0070f3 !important; + color: var(--color-primary) !important; +} + +/* Focus styles for accessibility */ +*:focus-visible { + outline: 2px solid var(--mongodb-spring); + outline-offset: 2px; } \ No newline at end of file diff --git a/mflix/client/app/home.module.css b/mflix/client/app/home.module.css index 03326c6..c834aed 100644 --- a/mflix/client/app/home.module.css +++ b/mflix/client/app/home.module.css @@ -1,6 +1,6 @@ /** - * Home Page Styles - * + * Home Page Styles - MongoDB Branded + * * Styles specific to the home/landing page */ @@ -12,84 +12,122 @@ min-height: 100vh; padding: 2rem; text-align: center; + background: var(--mongodb-white); } .main { display: flex; flex-direction: column; align-items: center; - gap: 2rem; - max-width: 600px; + gap: 2.5rem; + max-width: 700px; + padding: 3rem; + background: var(--mongodb-white); + border-radius: var(--radius-xl); + box-shadow: var(--shadow-xl); } .title { - font-size: 3rem; + font-size: 3.5rem; font-weight: 700; - color: #333; + color: var(--mongodb-slate); margin: 0; - letter-spacing: -0.025em; + letter-spacing: -0.03em; + line-height: 1.1; +} + +.title::after { + content: ''; + display: block; + width: 80px; + height: 4px; + background: var(--mongodb-spring); + margin: 1rem auto 0; + border-radius: 2px; } .description { font-size: 1.25rem; - color: #666; + color: var(--color-text-secondary); margin: 0; - line-height: 1.6; + line-height: 1.7; + max-width: 500px; } .button { display: inline-flex; align-items: center; justify-content: center; - padding: 1rem 2rem; + padding: 1.125rem 2.5rem; font-size: 1.1rem; font-weight: 600; - color: white; - background: #0066cc; + color: var(--mongodb-white); + background: var(--mongodb-forest); border: none; - border-radius: 8px; + border-radius: var(--radius-lg); text-decoration: none; - transition: all 0.2s ease; + transition: all var(--transition-base); cursor: pointer; - min-width: 180px; + min-width: 200px; + box-shadow: var(--shadow-md); } .button:hover { - background: #0052a3; - transform: translateY(-2px); - box-shadow: 0 4px 12px rgba(0, 102, 204, 0.3); + background: var(--mongodb-evergreen); + transform: translateY(-3px); + box-shadow: 0 8px 20px rgba(0, 104, 74, 0.4); } .button:active { - transform: translateY(0); + transform: translateY(-1px); + box-shadow: var(--shadow-md); +} + +.button:focus-visible { + outline: 3px solid var(--mongodb-spring); + outline-offset: 3px; } /* Responsive Design */ @media (max-width: 768px) { .title { - font-size: 2.5rem; + font-size: 2.75rem; } - + .description { font-size: 1.1rem; } - + .page { - padding: 1rem; + padding: 1.5rem; + } + + .main { + padding: 2rem; } } @media (max-width: 480px) { .title { - font-size: 2rem; + font-size: 2.25rem; } - + .description { font-size: 1rem; } - + + .page { + padding: 1rem; + } + + .main { + padding: 1.5rem; + gap: 2rem; + } + .button { - padding: 0.875rem 1.5rem; + padding: 1rem 2rem; font-size: 1rem; + min-width: 180px; } } \ No newline at end of file diff --git a/mflix/client/app/layout.module.css b/mflix/client/app/layout.module.css index ff60632..5903198 100644 --- a/mflix/client/app/layout.module.css +++ b/mflix/client/app/layout.module.css @@ -1,11 +1,15 @@ +/** + * Navigation Styles - MongoDB Branded + */ + .navigation { - background: #fff; - border-bottom: 1px solid #eee; + background: var(--mongodb-slate); + border-bottom: 2px solid var(--mongodb-forest); padding: 1rem 2rem; position: sticky; top: 0; z-index: 50; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + box-shadow: var(--shadow-md); } .navContainer { @@ -18,44 +22,65 @@ .logo { font-size: 1.5rem; - font-weight: bold; - color: #333; + font-weight: 700; + color: var(--mongodb-white); text-decoration: none; - transition: color 0.2s ease; + transition: color var(--transition-base); + letter-spacing: -0.02em; } .logo:hover { - color: #0070f3; + color: var(--mongodb-spring) !important; } -.logo:focus { - outline: 2px solid #0070f3; - outline-offset: 2px; - border-radius: 4px; +.logo:focus-visible { + outline: 2px solid var(--mongodb-spring); + outline-offset: 4px; + border-radius: var(--radius-sm); } .navLinks { display: flex; gap: 2rem; + align-items: center; } .navLink { - color: #666; + color: var(--mongodb-mint); text-decoration: none; font-weight: 500; - transition: color 0.2s ease; - padding: 0.25rem 0.5rem; - border-radius: 4px; + transition: all var(--transition-base); + padding: 0.5rem 1rem; + border-radius: var(--radius-md); + position: relative; } .navLink:hover { - color: #0070f3; + color: var(--mongodb-spring) !important; + background: rgba(0, 237, 100, 0.1); } -.navLink:focus { - outline: 2px solid #0070f3; +.navLink:focus-visible { + outline: 2px solid var(--mongodb-spring); outline-offset: 2px; - border-radius: 4px; + border-radius: var(--radius-sm); +} + +/* Active link indicator */ +.navLink::after { + content: ''; + position: absolute; + bottom: 0; + left: 50%; + transform: translateX(-50%) scaleX(0); + width: 80%; + height: 2px; + background: var(--mongodb-spring); + transition: transform var(--transition-base); +} + +.navLink:hover::after { + transform: translateX(-50%) scaleX(1); } /* Responsive design */ @@ -63,17 +88,24 @@ .navigation { padding: 1rem; } - + .navContainer { flex-direction: column; gap: 1rem; } - + .logo { font-size: 1.25rem; } - + .navLinks { - gap: 1.5rem; + gap: 1rem; + flex-wrap: wrap; + justify-content: center; + } + + .navLink { + padding: 0.4rem 0.8rem; + font-size: 0.9rem; } } \ No newline at end of file diff --git a/mflix/client/app/movies/movies.module.css b/mflix/client/app/movies/movies.module.css index f44e5b9..aacb9ed 100644 --- a/mflix/client/app/movies/movies.module.css +++ b/mflix/client/app/movies/movies.module.css @@ -1,8 +1,8 @@ /** - * Movies Card Styles - * - * CSS Module for the movies card component. - * Provides responsive grid layout for the movies listing page. + * Movies Page Styles - MongoDB Branded + * + * CSS Module for the movies listing page. + * Provides responsive grid layout and controls. */ .pageHeader { @@ -36,49 +36,51 @@ } .searchButton { - padding: 0.75rem 1.5rem; - background: #0070f3; - color: white; + padding: 0.875rem 1.75rem; + background: var(--mongodb-forest); + color: var(--mongodb-white); border: none; - border-radius: 8px; + border-radius: var(--radius-lg); font-size: 1rem; - font-weight: 500; + font-weight: 600; cursor: pointer; - transition: all 0.2s ease; + transition: all var(--transition-base); display: inline-flex; align-items: center; justify-content: center; min-width: 160px; + box-shadow: var(--shadow-sm); } .searchButton:hover:not(:disabled) { - background: #0051cc; - transform: translateY(-1px); - box-shadow: 0 4px 8px rgba(0, 112, 243, 0.3); + background: var(--mongodb-evergreen); + transform: translateY(-2px); + box-shadow: 0 6px 16px rgba(0, 104, 74, 0.4); } .searchButton:disabled { - opacity: 0.6; + opacity: 0.5; cursor: not-allowed; transform: none; } .clearSearchButton { - padding: 0.5rem 1rem; - background: #6c757d; - color: white; - border: none; - border-radius: 6px; + padding: 0.625rem 1.25rem; + background: var(--mongodb-white); + color: var(--color-text-secondary); + border: 2px solid var(--color-border); + border-radius: var(--radius-md); font-size: 0.875rem; - font-weight: 500; + font-weight: 600; cursor: pointer; - transition: all 0.2s ease; + transition: all var(--transition-base); } .clearSearchButton:hover:not(:disabled) { - background: #5a6268; + background: var(--color-border); + border-color: var(--color-text-secondary); transform: translateY(-1px); - box-shadow: 0 4px 8px rgba(108, 117, 125, 0.3); + box-shadow: var(--shadow-sm); } /* Search Pagination Styles */ @@ -87,7 +89,7 @@ display: flex; flex-direction: column; align-items: center; - gap: 1rem; + gap: 1.25rem; } .paginationContainer { @@ -102,124 +104,144 @@ display: inline-flex; align-items: center; justify-content: center; - padding: 0.75rem 1.5rem; - background: #fff; - color: #0070f3; - border: 1px solid #ddd; - border-radius: 6px; + padding: 0.5rem 0.75rem; + background: transparent; + color: var(--mongodb-forest); + border: none; + border-radius: var(--radius-sm); text-decoration: none; font-weight: 500; - font-size: 0.9rem; - transition: all 0.2s ease; + font-size: 0.95rem; + transition: all var(--transition-base); min-width: fit-content; - cursor: pointer; + position: relative; +} + +.pageButton::after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 2px; + background: var(--mongodb-forest); + transform: scaleX(0); + transition: transform var(--transition-base); +} + +.pageButton:hover:not(.disabled):not(:disabled)::after { + transform: scaleX(1); } .pageButton:hover:not(.disabled):not(:disabled) { - background: #0070f3; - color: white; - border-color: #0070f3; - transform: translateY(-1px); - box-shadow: 0 2px 4px rgba(0, 112, 243, 0.2); + color: var(--mongodb-evergreen); + background: rgba(0, 104, 74, 0.05); +} + +.pageButton:active:not(.disabled):not(:disabled) { + background: rgba(0, 104, 74, 0.1); } .pageButton.disabled, .pageButton:disabled { - background: #f5f5f5; - color: #999; - border-color: #eee; + color: var(--color-text-muted); cursor: not-allowed; - opacity: 0.6; + opacity: 0.5; } .pageInfo { - font-size: 1rem; - font-weight: 600; - color: #333; - padding: 0.75rem 1rem; - background: #f8f9fa; - border-radius: 6px; - border: 1px solid #e9ecef; + font-size: 0.95rem; + font-weight: 500; + color: var(--mongodb-slate); + padding: 0.5rem 1rem; + background: transparent; + border-radius: var(--radius-md); } .additionalInfo { - font-size: 0.85rem; - color: #666; + font-size: 0.9rem; + color: var(--color-text-secondary); text-align: center; + font-weight: 500; } .searchInfo { margin: 2rem 0; - padding: 1rem; - background: #f8f9fa; - border: 1px solid #e9ecef; - border-radius: 8px; + padding: 1.25rem; + background: var(--mongodb-mint); + border: 2px solid var(--mongodb-forest); + border-radius: var(--radius-lg); text-align: center; - font-size: 0.9rem; - color: #666; + font-size: 0.95rem; + color: var(--mongodb-slate); + font-weight: 500; } .selectAllButton { - padding: 0.5rem 1rem; - background: #6c757d; - color: white; - border: none; - border-radius: 6px; + padding: 0.625rem 1.25rem; + background: var(--mongodb-white); + color: var(--mongodb-forest); + border: 2px solid var(--mongodb-forest); + border-radius: var(--radius-md); font-size: 0.875rem; - font-weight: 500; + font-weight: 600; cursor: pointer; - transition: all 0.2s ease; + transition: all var(--transition-base); } .selectAllButton:hover { - background: #5a6268; + background: var(--mongodb-mint); transform: translateY(-1px); + box-shadow: var(--shadow-sm); } .batchDeleteButton { - padding: 0.5rem 1rem; - background: #dc3545; - color: white; - border: none; - border-radius: 6px; + padding: 0.625rem 1.25rem; + background: var(--mongodb-white); + color: var(--color-error); + border: 2px solid var(--color-error); + border-radius: var(--radius-md); font-size: 0.875rem; - font-weight: 500; + font-weight: 600; cursor: pointer; - transition: all 0.2s ease; + transition: all var(--transition-base); } .batchDeleteButton:hover:not(:disabled) { - background: #c82333; + background: var(--color-error); + color: var(--mongodb-white); transform: translateY(-1px); - box-shadow: 0 4px 8px rgba(220, 53, 69, 0.3); + box-shadow: 0 4px 12px rgba(229, 62, 62, 0.3); } .batchDeleteButton:disabled { - opacity: 0.6; + opacity: 0.5; cursor: not-allowed; transform: none; } .batchUpdateButton { - padding: 0.5rem 1rem; - background: #28a745; - color: white; + padding: 0.625rem 1.25rem; + background: var(--mongodb-spring); + color: var(--mongodb-slate); border: none; - border-radius: 6px; + border-radius: var(--radius-md); font-size: 0.875rem; - font-weight: 500; + font-weight: 600; cursor: pointer; - transition: all 0.2s ease; + transition: all var(--transition-base); + box-shadow: var(--shadow-sm); } .batchUpdateButton:hover:not(:disabled) { - background: #218838; + background: var(--mongodb-forest); + color: var(--mongodb-white); transform: translateY(-1px); - box-shadow: 0 4px 8px rgba(40, 167, 69, 0.3); + box-shadow: 0 4px 12px rgba(0, 237, 100, 0.4); } .batchUpdateButton:disabled { - opacity: 0.6; + opacity: 0.5; cursor: not-allowed; transform: none; } @@ -230,142 +252,152 @@ left: 0; right: 0; bottom: 0; - background: rgba(0, 0, 0, 0.5); + background: rgba(0, 30, 43, 0.7); display: flex; align-items: center; justify-content: center; z-index: 1000; padding: 20px; + backdrop-filter: blur(4px); } .confirmationDialog { - background: white; - border-radius: 12px; - padding: 2rem; - max-width: 400px; + background: var(--mongodb-white); + border-radius: var(--radius-xl); + padding: 2.5rem; + max-width: 450px; width: 100%; - box-shadow: 0 10px 25px rgba(0, 0, 0, 0.3); + box-shadow: var(--shadow-xl); + border: 2px solid var(--mongodb-forest); } .confirmationTitle { margin: 0 0 1rem 0; - font-size: 1.25rem; - font-weight: 600; - color: #333; + font-size: 1.5rem; + font-weight: 700; + color: var(--mongodb-slate); text-align: center; } .confirmationMessage { - margin: 0 0 1.5rem 0; - color: #666; + margin: 0 0 2rem 0; + color: var(--color-text-secondary); text-align: center; - line-height: 1.5; + line-height: 1.6; + font-size: 1rem; } .confirmationActions { display: flex; - gap: 12px; + gap: 1rem; justify-content: center; } .cancelButton { - padding: 0.75rem 1.5rem; - background: #6c757d; - color: white; - border: none; - border-radius: 8px; + padding: 0.875rem 1.75rem; + background: var(--mongodb-white); + color: var(--color-text-secondary); + border: 2px solid var(--color-border); + border-radius: var(--radius-lg); font-size: 1rem; - font-weight: 500; + font-weight: 600; cursor: pointer; - transition: all 0.2s ease; - min-width: 100px; + transition: all var(--transition-base); + min-width: 120px; } .cancelButton:hover { - background: #5a6268; + background: var(--color-border); + border-color: var(--color-text-secondary); transform: translateY(-1px); + box-shadow: var(--shadow-sm); } .confirmDeleteButton { - padding: 0.75rem 1.5rem; - background: #dc3545; - color: white; - border: none; - border-radius: 8px; + padding: 0.875rem 1.75rem; + background: var(--color-error); + color: var(--mongodb-white); + border: 2px solid var(--color-error); + border-radius: var(--radius-lg); font-size: 1rem; - font-weight: 500; + font-weight: 600; cursor: pointer; - transition: all 0.2s ease; - min-width: 100px; + transition: all var(--transition-base); + min-width: 120px; } .confirmDeleteButton:hover:not(:disabled) { - background: #c82333; + background: #c53030; + border-color: #c53030; transform: translateY(-1px); - box-shadow: 0 4px 8px rgba(220, 53, 69, 0.3); + box-shadow: 0 6px 16px rgba(229, 62, 62, 0.4); } .confirmDeleteButton:disabled { - opacity: 0.6; + opacity: 0.5; cursor: not-allowed; transform: none; } .pageTitle { margin: 0; - font-size: 32px; - color: #333; + font-size: 2.25rem; + color: var(--mongodb-slate); + font-weight: 700; } .addButton { - padding: 0.75rem 1.5rem; - background: #0070f3; - color: white; + padding: 0.875rem 1.75rem; + background: var(--mongodb-forest); + color: var(--mongodb-white); border: none; - border-radius: 8px; + border-radius: var(--radius-lg); font-size: 1rem; - font-weight: 500; + font-weight: 600; cursor: pointer; - transition: all 0.2s ease; + transition: all var(--transition-base); text-decoration: none; display: inline-flex; align-items: center; justify-content: center; - min-width: 140px; + min-width: 160px; + box-shadow: var(--shadow-sm); } .addButton:hover:not(:disabled) { - background: #0051cc; - transform: translateY(-1px); - box-shadow: 0 4px 8px rgba(0, 112, 243, 0.3); + background: var(--mongodb-evergreen); + transform: translateY(-2px); + box-shadow: 0 6px 16px rgba(0, 104, 74, 0.4); } .addButton:disabled { - opacity: 0.6; + opacity: 0.5; cursor: not-allowed; transform: none; } .successMessage { - background-color: #d1edff; - border: 1px solid #b8e6ff; - color: #0c5aa6; - padding: 1rem; - border-radius: 8px; - margin-bottom: 1rem; + background: var(--mongodb-mint); + border: 2px solid var(--mongodb-spring); + color: var(--mongodb-evergreen); + padding: 1.25rem; + border-radius: var(--radius-lg); + margin-bottom: 1.5rem; text-align: center; - font-weight: 500; + font-weight: 600; + box-shadow: var(--shadow-sm); } .errorMessage { - background-color: #fef2f2; - border: 1px solid #fee2e2; + background: #fef2f2; + border: 2px solid var(--color-error); color: #991b1b; - padding: 1rem; - border-radius: 8px; - margin-bottom: 1rem; + padding: 1.25rem; + border-radius: var(--radius-lg); + margin-bottom: 1.5rem; text-align: center; - font-weight: 500; + font-weight: 600; + box-shadow: var(--shadow-sm); } .moviesGrid { @@ -378,8 +410,10 @@ .noMovies { text-align: center; - padding: 40px; - color: #666; + padding: 3rem; + color: var(--color-text-secondary); + font-size: 1.1rem; + font-weight: 500; } /* Responsive Design */ From b2f86cb7465d1ff37ae765e9383fb9390e86447b Mon Sep 17 00:00:00 2001 From: Cory Bullinger Date: Tue, 27 Jan 2026 07:30:16 -0500 Subject: [PATCH 02/22] fix: bump python-multipart>=0.0.22 for security fix CVE fix per Dependabot alert #22 --- mflix/server/python-fastapi/requirements.in | 2 +- mflix/server/python-fastapi/requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mflix/server/python-fastapi/requirements.in b/mflix/server/python-fastapi/requirements.in index 09ec646..a54f67e 100644 --- a/mflix/server/python-fastapi/requirements.in +++ b/mflix/server/python-fastapi/requirements.in @@ -15,7 +15,7 @@ watchfiles~=1.1.0 # For hot-reloading in development # ------------------------------------------------------------------------------ pydantic~=2.12.0 # Data validation and settings management python-dotenv~=1.1.0 # For loading configuration from .env files -python-multipart~=0.0.0 # For parsing form data and file uploads +python-multipart>=0.0.22 # For parsing form data and file uploads PyYAML~=6.0.0 # For handling YAML configuration or data # ============================================================================== diff --git a/mflix/server/python-fastapi/requirements.txt b/mflix/server/python-fastapi/requirements.txt index 4b92831..3113cb3 100644 --- a/mflix/server/python-fastapi/requirements.txt +++ b/mflix/server/python-fastapi/requirements.txt @@ -155,7 +155,7 @@ python-dotenv==1.1.1 # via # -r requirements.in # uvicorn -python-multipart==0.0.20 +python-multipart==0.0.22 # via -r requirements.in pyyaml==6.0.3 # via From 37954ba55a95cbb25c66ed544bf431f7d2576bd1 Mon Sep 17 00:00:00 2001 From: Cory Bullinger Date: Wed, 28 Jan 2026 08:45:35 -0500 Subject: [PATCH 03/22] fix: bump next to 16.1.5 for security fix CVE fix per Dependabot alert #23 --- mflix/client/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mflix/client/package.json b/mflix/client/package.json index 8dc08fa..2151fee 100644 --- a/mflix/client/package.json +++ b/mflix/client/package.json @@ -14,7 +14,7 @@ "dependencies": { "react": "19.2.0", "react-dom": "19.2.0", - "next": "16.0.10" + "next": "16.1.5" }, "devDependencies": { "typescript": "^5", @@ -22,7 +22,7 @@ "@types/react": "^19", "@types/react-dom": "^19", "eslint": "^9", - "eslint-config-next": "16.0.10", + "eslint-config-next": "16.1.5", "@eslint/eslintrc": "^3" } } From 1e9dc15c2453eb4f7aee91aa81a939a5e0fe3edb Mon Sep 17 00:00:00 2001 From: Cory Bullinger Date: Wed, 28 Jan 2026 12:38:50 -0500 Subject: [PATCH 04/22] Acknowledge year limitation of sample dataset --- mflix/README-JAVA-SPRING.md | 6 +- mflix/README-JAVASCRIPT-EXPRESS.md | 4 ++ mflix/README-PYTHON-FASTAPI.md | 4 ++ .../components/FilterBar/FilterBar.module.css | 15 +++++ .../app/components/FilterBar/FilterBar.tsx | 12 +++- .../app/components/MovieCard/MovieCard.tsx | 13 +++- mflix/client/app/movie/[id]/page.tsx | 11 +++- .../controller/MovieControllerImpl.java | 37 +++++++++-- .../controller/MovieControllerTest.java | 41 ++++++++++++ .../src/controllers/movieController.ts | 35 ++++++++++- .../tests/controllers/movieController.test.ts | 43 ++++++++++++- .../python-fastapi/src/routers/movies.py | 24 ++++++- .../python-fastapi/tests/test_movie_routes.py | 62 ++++++++++++++++++- 13 files changed, 288 insertions(+), 19 deletions(-) diff --git a/mflix/README-JAVA-SPRING.md b/mflix/README-JAVA-SPRING.md index d73a717..523d749 100644 --- a/mflix/README-JAVA-SPRING.md +++ b/mflix/README-JAVA-SPRING.md @@ -14,12 +14,16 @@ This is a full-stack movie browsing application built with Java Spring Boot and └── mvnw ``` +## Data Limitations + +The `sample_mflix` dataset contains movies released up to **2015**. Searching for movies from 2016 or later will return no results. This is a limitation of the sample dataset, not the application. + ## Prerequisites - **Java 21** or higher - **Node.js 20** or higher - **MongoDB Atlas cluster or local deployment** with the `sample_mflix` dataset loaded - - [Load sample data](https://www.mongodb.com/docs/atlas/sample-data/) + - [Load sample data](https://www.mongodb.com/docs/atlas/sample-data/) - **Maven** (included via Maven Wrapper) - **Voyage AI API key** (For MongoDB Vector Search) - [Get a Voyage AI API key](https://www.voyageai.com/) diff --git a/mflix/README-JAVASCRIPT-EXPRESS.md b/mflix/README-JAVASCRIPT-EXPRESS.md index 130bf5f..0ecb764 100644 --- a/mflix/README-JAVASCRIPT-EXPRESS.md +++ b/mflix/README-JAVASCRIPT-EXPRESS.md @@ -14,6 +14,10 @@ This is a full-stack movie browsing application built with Express.js and Next.j └── tsconfig.json ``` +## Data Limitations + +The `sample_mflix` dataset contains movies released up to **2015**. Searching for movies from 2016 or later will return no results. This is a limitation of the sample dataset, not the application. + ## Prerequisites - **Node.js 22** or higher diff --git a/mflix/README-PYTHON-FASTAPI.md b/mflix/README-PYTHON-FASTAPI.md index f3be9de..1934680 100644 --- a/mflix/README-PYTHON-FASTAPI.md +++ b/mflix/README-PYTHON-FASTAPI.md @@ -17,6 +17,10 @@ This is a full-stack movie browsing application built with Python FastAPI and Ne └── requirements.txt ``` +## Data Limitations + +The `sample_mflix` dataset contains movies released up to **2015**. Searching for movies from 2016 or later will return no results. This is a limitation of the sample dataset, not the application. + ## Prerequisites - **Python 3.10** to **Python 3.13** diff --git a/mflix/client/app/components/FilterBar/FilterBar.module.css b/mflix/client/app/components/FilterBar/FilterBar.module.css index ee17f25..990b3a9 100644 --- a/mflix/client/app/components/FilterBar/FilterBar.module.css +++ b/mflix/client/app/components/FilterBar/FilterBar.module.css @@ -93,6 +93,21 @@ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.15); } +.inputWarning { + border-color: #f59e0b; +} + +.inputWarning:focus { + border-color: #f59e0b; + box-shadow: 0 0 0 2px rgba(245, 158, 11, 0.15); +} + +.yearWarning { + font-size: 0.7rem; + color: #b45309; + margin-top: 0.25rem; +} + .ratingGroup { display: flex; align-items: center; diff --git a/mflix/client/app/components/FilterBar/FilterBar.tsx b/mflix/client/app/components/FilterBar/FilterBar.tsx index 324840d..0711c7c 100644 --- a/mflix/client/app/components/FilterBar/FilterBar.tsx +++ b/mflix/client/app/components/FilterBar/FilterBar.tsx @@ -10,6 +10,9 @@ const SORT_OPTIONS = [ { value: 'imdb.rating', label: 'IMDB Rating' }, ]; +// The sample_mflix dataset only contains movies up to 2015 +const MAX_DATASET_YEAR = 2015; + interface FilterBarProps { onFilterChange: (filters: MovieFilterParams) => void; isLoading?: boolean; @@ -137,14 +140,19 @@ export default function FilterBar({ MAX_DATASET_YEAR ? styles.inputWarning : ''}`} + placeholder="e.g. 2010" value={filters.year || ''} onChange={(e) => handleFilterChange('year', e.target.value ? parseInt(e.target.value) : undefined)} disabled={isLoading} min={1900} max={2030} /> + {filters.year && filters.year > MAX_DATASET_YEAR && ( + + Dataset only contains movies up to {MAX_DATASET_YEAR} + + )}
diff --git a/mflix/client/app/components/MovieCard/MovieCard.tsx b/mflix/client/app/components/MovieCard/MovieCard.tsx index 7fa702c..04afb91 100644 --- a/mflix/client/app/components/MovieCard/MovieCard.tsx +++ b/mflix/client/app/components/MovieCard/MovieCard.tsx @@ -14,6 +14,15 @@ import React from "react"; * such as image error handling and selection checkbox. */ +/** + * Validates that a poster URL is valid for Next.js Image component. + * Must be an absolute URL (http/https) or a relative path starting with / + */ +const isValidPosterUrl = (url: string | undefined): boolean => { + if (!url || typeof url !== 'string') return false; + return url.startsWith('http://') || url.startsWith('https://') || url.startsWith('/'); +}; + interface MovieCardProps { movie: Movie; isSelected?: boolean; @@ -48,9 +57,9 @@ export default function MovieCard({ movie, isSelected = false, onSelectionChange )}
- {movie.poster ? ( + {isValidPosterUrl(movie.poster) ? ( {`${movie.title} { + if (!url || typeof url !== 'string') return false; + return url.startsWith('http://') || url.startsWith('https://') || url.startsWith('/'); +}; + interface MovieDetailsPageProps { params: Promise<{ id: string; @@ -202,7 +211,7 @@ export default function MovieDetailsPage({ params }: MovieDetailsPageProps) { ) : (
- {movie.poster ? ( + {isValidPosterUrl(movie.poster) ? (
>> getAllMovies( @RequestParam(defaultValue = "title") String sortBy, @Parameter(description = "Sort order: 'asc' or 'desc' (default: asc)") @RequestParam(defaultValue = "asc") String sortOrder) { - + + // The sample_mflix dataset only contains movies up to 2015 + final int MAX_DATASET_YEAR = 2015; + final int MIN_VALID_YEAR = 1800; + String yearWarning = null; + + // Validate year if provided + if (year != null) { + if (year < MIN_VALID_YEAR) { + throw new ValidationException( + String.format("Invalid year: %d. Year must be %d or later.", year, MIN_VALID_YEAR) + ); + } + if (year > MAX_DATASET_YEAR) { + yearWarning = String.format( + "Note: The sample_mflix dataset only contains movies up to %d. Your search for year %d may return no results.", + MAX_DATASET_YEAR, year + ); + } + } + MovieSearchQuery query = MovieSearchQuery.builder() .q(q) .genre(genre) @@ -97,16 +118,22 @@ public ResponseEntity>> getAllMovies( .sortBy(sortBy) .sortOrder(sortOrder) .build(); - + List movies = movieService.getAllMovies(query); - + + // Build response message, including year warning if applicable + String message = "Found " + movies.size() + " movies"; + if (yearWarning != null) { + message = message + ". " + yearWarning; + } + SuccessResponse> response = SuccessResponse.>builder() .success(true) - .message("Found " + movies.size() + " movies") + .message(message) .data(movies) .timestamp(Instant.now().toString()) .build(); - + return ResponseEntity.ok(response); } diff --git a/mflix/server/java-spring/src/test/java/com/mongodb/samplemflix/controller/MovieControllerTest.java b/mflix/server/java-spring/src/test/java/com/mongodb/samplemflix/controller/MovieControllerTest.java index 1add6ed..be1a7ec 100644 --- a/mflix/server/java-spring/src/test/java/com/mongodb/samplemflix/controller/MovieControllerTest.java +++ b/mflix/server/java-spring/src/test/java/com/mongodb/samplemflix/controller/MovieControllerTest.java @@ -125,6 +125,47 @@ void testGetAllMovies_WithQueryParams() throws Exception { .andExpect(jsonPath("$.data").isArray()); } + @Test + @DisplayName("GET /api/movies - Should return 400 for year before 1800") + void testGetAllMovies_InvalidYearBefore1800() throws Exception { + // Act & Assert + mockMvc.perform(get("/api/movies") + .param("year", "1700")) + .andExpect(status().isBadRequest()) + .andExpect(jsonPath("$.success").value(false)) + .andExpect(jsonPath("$.error.code").value("VALIDATION_ERROR")); + } + + @Test + @DisplayName("GET /api/movies - Should include warning for year after 2015") + void testGetAllMovies_YearAfter2015IncludesWarning() throws Exception { + // Arrange + List movies = Arrays.asList(); + when(movieService.getAllMovies(any(MovieSearchQuery.class))).thenReturn(movies); + + // Act & Assert + mockMvc.perform(get("/api/movies") + .param("year", "2020")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.success").value(true)) + .andExpect(jsonPath("$.message", containsString("2015"))); + } + + @Test + @DisplayName("GET /api/movies - Should not include warning for year 2015 or earlier") + void testGetAllMovies_Year2015NoWarning() throws Exception { + // Arrange + List movies = Arrays.asList(testMovie); + when(movieService.getAllMovies(any(MovieSearchQuery.class))).thenReturn(movies); + + // Act & Assert + mockMvc.perform(get("/api/movies") + .param("year", "2015")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.success").value(true)) + .andExpect(jsonPath("$.message", not(containsString("sample_mflix")))); + } + // ==================== GET MOVIE BY ID TESTS ==================== @Test diff --git a/mflix/server/js-express/src/controllers/movieController.ts b/mflix/server/js-express/src/controllers/movieController.ts index 78437ea..294612c 100644 --- a/mflix/server/js-express/src/controllers/movieController.ts +++ b/mflix/server/js-express/src/controllers/movieController.ts @@ -87,9 +87,32 @@ export async function getAllMovies(req: Request, res: Response): Promise { filter.genres = { $regex: new RegExp(genre, "i") }; } - // Year filtering + // Year filtering and validation + // The sample_mflix dataset only contains movies up to 2015 + const MAX_DATASET_YEAR = 2015; + const MIN_VALID_YEAR = 1800; + let yearWarning: string | undefined; + if (year) { - filter.year = parseInt(year); + const yearNum = parseInt(year); + + // Validate year is within reasonable bounds + if (yearNum < MIN_VALID_YEAR) { + res.status(400).json( + createErrorResponse( + `Invalid year: ${yearNum}. Year must be ${MIN_VALID_YEAR} or later.`, + "INVALID_YEAR" + ) + ); + return; + } + + // Warn if searching for years beyond the dataset's range + if (yearNum > MAX_DATASET_YEAR) { + yearWarning = `Note: The sample_mflix dataset only contains movies up to ${MAX_DATASET_YEAR}. Your search for year ${yearNum} may return no results.`; + } + + filter.year = yearNum; } // Rating range filtering @@ -131,8 +154,14 @@ export async function getAllMovies(req: Request, res: Response): Promise { .skip(skipNum) .toArray(); + // Build response message, including year warning if applicable + let message = `Found ${movies.length} movies`; + if (yearWarning) { + message = `${message}. ${yearWarning}`; + } + // Return successful response - res.json(createSuccessResponse(movies, `Found ${movies.length} movies`)); + res.json(createSuccessResponse(movies, message)); } /** diff --git a/mflix/server/js-express/tests/controllers/movieController.test.ts b/mflix/server/js-express/tests/controllers/movieController.test.ts index f6d5b2e..a77c44e 100644 --- a/mflix/server/js-express/tests/controllers/movieController.test.ts +++ b/mflix/server/js-express/tests/controllers/movieController.test.ts @@ -183,7 +183,7 @@ describe("Movie Controller Tests", () => { const testMovies = [{ _id: TEST_MOVIE_ID, title: "Action Movie" }]; mockRequest.query = { genre: "Action", - year: "2024", + year: "2010", minRating: "7.0", limit: "10", sortBy: "year", @@ -195,7 +195,7 @@ describe("Movie Controller Tests", () => { expect(mockFind).toHaveBeenCalledWith({ genres: { $regex: new RegExp("Action", "i") }, - year: 2024, + year: 2010, "imdb.rating": { $gte: 7.0 }, }); expect(mockCreateSuccessResponse).toHaveBeenCalledWith( @@ -203,6 +203,45 @@ describe("Movie Controller Tests", () => { "Found 1 movies" ); }); + + it("should return 400 for year before 1800", async () => { + mockRequest.query = { year: "1700" }; + + await getAllMovies(mockRequest as Request, mockResponse as Response); + + expect(mockStatus).toHaveBeenCalledWith(400); + expect(mockCreateErrorResponse).toHaveBeenCalledWith( + "Invalid year: 1700. Year must be 1800 or later.", + "INVALID_YEAR" + ); + }); + + it("should include warning message for year after 2015", async () => { + mockRequest.query = { year: "2020" }; + mockToArray.mockResolvedValue([]); + + await getAllMovies(mockRequest as Request, mockResponse as Response); + + expect(mockFind).toHaveBeenCalledWith({ year: 2020 }); + expect(mockCreateSuccessResponse).toHaveBeenCalledWith( + [], + "Found 0 movies. Note: The sample_mflix dataset only contains movies up to 2015. Your search for year 2020 may return no results." + ); + }); + + it("should not include warning message for year 2015 or earlier", async () => { + const testMovies = [{ _id: TEST_MOVIE_ID, title: "Old Movie" }]; + mockRequest.query = { year: "2015" }; + mockToArray.mockResolvedValue(testMovies); + + await getAllMovies(mockRequest as Request, mockResponse as Response); + + expect(mockFind).toHaveBeenCalledWith({ year: 2015 }); + expect(mockCreateSuccessResponse).toHaveBeenCalledWith( + testMovies, + "Found 1 movies" + ); + }); }); describe("getMovieById", () => { diff --git a/mflix/server/python-fastapi/src/routers/movies.py b/mflix/server/python-fastapi/src/routers/movies.py index bb30c32..76843de 100644 --- a/mflix/server/python-fastapi/src/routers/movies.py +++ b/mflix/server/python-fastapi/src/routers/movies.py @@ -546,6 +546,11 @@ async def get_all_movies( sort_by:str = Query(default="title", alias="sortBy"), sort_order:str = Query(default="asc", alias="sortOrder") ): + # The sample_mflix dataset only contains movies up to 2015 + MAX_DATASET_YEAR = 2015 + MIN_VALID_YEAR = 1800 + year_warning = None + movies_collection = get_collection("movies") filter_dict = {} if q: @@ -554,7 +559,16 @@ async def get_all_movies( filter_dict["title"] = {"$regex": title, "$options": "i"} if genre: filter_dict["genres"] = {"$regex": genre, "$options": "i"} - if year: + if isinstance(year, int): + # Validate year is within reasonable bounds + if year < MIN_VALID_YEAR: + raise HTTPException( + status_code=400, + detail=f"Invalid year: {year}. Year must be {MIN_VALID_YEAR} or later." + ) + # Warn if searching for years beyond the dataset's range + if year > MAX_DATASET_YEAR: + year_warning = f"Note: The sample_mflix dataset only contains movies up to {MAX_DATASET_YEAR}. Your search for year {year} may return no results." filter_dict["year"] = year if min_rating is not None or max_rating is not None: rating_filter = {} @@ -593,8 +607,14 @@ async def get_all_movies( movie["year"] = None movies.append(movie) + + # Build response message, including year warning if applicable + message = f"Found {len(movies)} movies." + if year_warning: + message = f"{message} {year_warning}" + # Return the results wrapped in a SuccessResponse - return create_success_response(movies, f"Found {len(movies)} movies.") + return create_success_response(movies, message) """ POST /api/movies/ diff --git a/mflix/server/python-fastapi/tests/test_movie_routes.py b/mflix/server/python-fastapi/tests/test_movie_routes.py index 5d74779..58862c4 100644 --- a/mflix/server/python-fastapi/tests/test_movie_routes.py +++ b/mflix/server/python-fastapi/tests/test_movie_routes.py @@ -394,13 +394,73 @@ async def test_get_all_movies_database_error(self, mock_get_collection): # Call the route handler from src.routers.movies import get_all_movies - with pytest.raises(HTTPException) as e: + with pytest.raises(HTTPException) as e: await get_all_movies() # Assertions assert e.value.status_code == 500 assert "error" in str(e.value.detail.lower()) + async def test_get_all_movies_invalid_year_before_1800(self): + """Should return 400 error when year is before 1800.""" + from src.routers.movies import get_all_movies + + with pytest.raises(HTTPException) as e: + await get_all_movies(year=1700) + + assert e.value.status_code == 400 + assert "1800" in str(e.value.detail) + assert "1700" in str(e.value.detail) + + @patch('src.routers.movies.get_collection') + async def test_get_all_movies_year_after_2015_includes_warning(self, mock_get_collection): + """Should include warning message when searching for year after 2015.""" + # Setup mock with proper cursor chaining + mock_collection = MagicMock() + mock_cursor = MagicMock() + + mock_cursor.sort.return_value = mock_cursor + mock_cursor.skip.return_value = mock_cursor + mock_cursor.limit.return_value = mock_cursor + mock_cursor.__aiter__.return_value = iter([]) + + mock_collection.find.return_value = mock_cursor + mock_get_collection.return_value = mock_collection + + from src.routers.movies import get_all_movies + result = await get_all_movies(year=2020) + + # Assertions + assert result.success is True + assert "2015" in result.message + assert "2020" in result.message + assert "sample_mflix" in result.message.lower() + + @patch('src.routers.movies.get_collection') + async def test_get_all_movies_year_2015_no_warning(self, mock_get_collection): + """Should not include warning message when searching for year 2015 or earlier.""" + # Setup mock with proper cursor chaining + mock_collection = MagicMock() + mock_cursor = MagicMock() + + mock_cursor.sort.return_value = mock_cursor + mock_cursor.skip.return_value = mock_cursor + mock_cursor.limit.return_value = mock_cursor + mock_cursor.__aiter__.return_value = iter([ + {"_id": ObjectId(TEST_MOVIE_ID), "title": "Old Movie", "year": 2015} + ]) + + mock_collection.find.return_value = mock_cursor + mock_get_collection.return_value = mock_collection + + from src.routers.movies import get_all_movies + result = await get_all_movies(year=2015) + + # Assertions + assert result.success is True + assert "sample_mflix" not in result.message.lower() + assert "Found 1 movies" in result.message + @pytest.mark.unit @pytest.mark.asyncio From 556d9e50058f27f80904f59ea7be4b3fc9aac9a8 Mon Sep 17 00:00:00 2001 From: Cory Bullinger Date: Fri, 30 Jan 2026 09:26:50 -0500 Subject: [PATCH 05/22] Refactor year validation to use dynamic detection from database - Remove hardcoded year bounds (1800-2030) from all three backends - Backend aggregations now only validate year field is numeric (: number) - Add fetchYearBounds() on client to dynamically detect min/max years from data - Move dataset warning above Year field label in FilterBar - Update tests to reflect removed year bound validation Backends modified: Java Spring, Express, Python FastAPI Client modified: FilterBar.tsx, api.ts --- .../app/components/FilterBar/FilterBar.tsx | 50 ++++++++++++---- mflix/client/app/lib/api.ts | 21 ++++++- .../controller/MovieControllerImpl.java | 25 -------- .../samplemflix/service/MovieServiceImpl.java | 6 +- .../controller/MovieControllerTest.java | 41 ------------- .../src/controllers/movieController.ts | 41 ++----------- .../tests/controllers/movieController.test.ts | 38 ------------ .../python-fastapi/src/routers/movies.py | 26 ++------ .../python-fastapi/tests/test_movie_routes.py | 60 ------------------- 9 files changed, 70 insertions(+), 238 deletions(-) diff --git a/mflix/client/app/components/FilterBar/FilterBar.tsx b/mflix/client/app/components/FilterBar/FilterBar.tsx index 0711c7c..8f6b45d 100644 --- a/mflix/client/app/components/FilterBar/FilterBar.tsx +++ b/mflix/client/app/components/FilterBar/FilterBar.tsx @@ -2,7 +2,7 @@ import { useState, useCallback, useEffect, useRef } from 'react'; import styles from './FilterBar.module.css'; -import { fetchGenres, type MovieFilterParams } from '@/lib/api'; +import { fetchGenres, fetchYearBounds, type MovieFilterParams } from '@/lib/api'; const SORT_OPTIONS = [ { value: 'title', label: 'Title' }, @@ -10,9 +10,6 @@ const SORT_OPTIONS = [ { value: 'imdb.rating', label: 'IMDB Rating' }, ]; -// The sample_mflix dataset only contains movies up to 2015 -const MAX_DATASET_YEAR = 2015; - interface FilterBarProps { onFilterChange: (filters: MovieFilterParams) => void; isLoading?: boolean; @@ -42,6 +39,8 @@ export default function FilterBar({ const [filters, setFilters] = useState(initialFilters); const [genres, setGenres] = useState([]); const [isLoadingGenres, setIsLoadingGenres] = useState(true); + const [maxDatasetYear, setMaxDatasetYear] = useState(null); + const [minDatasetYear, setMinDatasetYear] = useState(null); // Track previous initialFilters to detect changes const prevInitialFiltersRef = useRef(initialFilters); @@ -57,6 +56,28 @@ export default function FilterBar({ loadGenres(); }, []); + // Fetch year bounds from the API on mount + useEffect(() => { + async function loadYearBounds() { + console.log('FilterBar: Fetching year bounds...'); + const result = await fetchYearBounds(); + console.log('FilterBar: Year bounds result:', result); + if (result.success) { + if (result.maxYear) { + console.log('FilterBar: Setting maxDatasetYear to', result.maxYear); + setMaxDatasetYear(result.maxYear); + } + if (result.minYear) { + console.log('FilterBar: Setting minDatasetYear to', result.minYear); + setMinDatasetYear(result.minYear); + } + } else { + console.warn('FilterBar: Failed to fetch year bounds:', result.error); + } + } + loadYearBounds(); + }, []); + // Sync internal state when initialFilters changes (e.g. from URL navigation) useEffect(() => { if (!areFiltersEqual(prevInitialFiltersRef.current, initialFilters)) { @@ -137,22 +158,27 @@ export default function FilterBar({
+ {maxDatasetYear && filters.year && filters.year > maxDatasetYear && ( + + Dataset only contains movies up to {maxDatasetYear} + + )} + {minDatasetYear && filters.year && filters.year < minDatasetYear && ( + + Dataset only contains movies from {minDatasetYear} onwards + + )} MAX_DATASET_YEAR ? styles.inputWarning : ''}`} + className={`${styles.filterInput} ${(maxDatasetYear && filters.year && filters.year > maxDatasetYear) || (minDatasetYear && filters.year && filters.year < minDatasetYear) ? styles.inputWarning : ''}`} placeholder="e.g. 2010" value={filters.year || ''} onChange={(e) => handleFilterChange('year', e.target.value ? parseInt(e.target.value) : undefined)} disabled={isLoading} - min={1900} - max={2030} + min={minDatasetYear || undefined} + max={maxDatasetYear || undefined} /> - {filters.year && filters.year > MAX_DATASET_YEAR && ( - - Dataset only contains movies up to {MAX_DATASET_YEAR} - - )}
diff --git a/mflix/client/app/lib/api.ts b/mflix/client/app/lib/api.ts index 7ac8976..9fe4375 100644 --- a/mflix/client/app/lib/api.ts +++ b/mflix/client/app/lib/api.ts @@ -585,13 +585,30 @@ export async function fetchMoviesByYear(): Promise<{ success: boolean; error?: s error: 'Request timed out after 15 seconds' }; } - return { - success: false, + return { + success: false, error: error instanceof Error ? error.message : 'Network error occurred while fetching movies by year' }; } } +/** + * Fetch the min and max year bounds from the available movie data. + * This allows dynamic detection of the dataset's year range. + */ +export async function fetchYearBounds(): Promise<{ success: boolean; minYear?: number; maxYear?: number; error?: string }> { + const result = await fetchMoviesByYear(); + if (!result.success || !result.data || result.data.length === 0) { + return { success: false, error: result.error || 'No year data available' }; + } + const years = result.data.map(stat => stat.year); + return { + success: true, + minYear: Math.min(...years), + maxYear: Math.max(...years) + }; +} + /** * Fetch directors with most movies and their statistics */ diff --git a/mflix/server/java-spring/src/main/java/com/mongodb/samplemflix/controller/MovieControllerImpl.java b/mflix/server/java-spring/src/main/java/com/mongodb/samplemflix/controller/MovieControllerImpl.java index 22d0c26..519f13b 100644 --- a/mflix/server/java-spring/src/main/java/com/mongodb/samplemflix/controller/MovieControllerImpl.java +++ b/mflix/server/java-spring/src/main/java/com/mongodb/samplemflix/controller/MovieControllerImpl.java @@ -1,6 +1,5 @@ package com.mongodb.samplemflix.controller; -import com.mongodb.samplemflix.exception.ValidationException; import com.mongodb.samplemflix.model.Movie; import com.mongodb.samplemflix.model.dto.BatchInsertResponse; import com.mongodb.samplemflix.model.dto.BatchUpdateResponse; @@ -87,26 +86,6 @@ public ResponseEntity>> getAllMovies( @Parameter(description = "Sort order: 'asc' or 'desc' (default: asc)") @RequestParam(defaultValue = "asc") String sortOrder) { - // The sample_mflix dataset only contains movies up to 2015 - final int MAX_DATASET_YEAR = 2015; - final int MIN_VALID_YEAR = 1800; - String yearWarning = null; - - // Validate year if provided - if (year != null) { - if (year < MIN_VALID_YEAR) { - throw new ValidationException( - String.format("Invalid year: %d. Year must be %d or later.", year, MIN_VALID_YEAR) - ); - } - if (year > MAX_DATASET_YEAR) { - yearWarning = String.format( - "Note: The sample_mflix dataset only contains movies up to %d. Your search for year %d may return no results.", - MAX_DATASET_YEAR, year - ); - } - } - MovieSearchQuery query = MovieSearchQuery.builder() .q(q) .genre(genre) @@ -121,11 +100,7 @@ public ResponseEntity>> getAllMovies( List movies = movieService.getAllMovies(query); - // Build response message, including year warning if applicable String message = "Found " + movies.size() + " movies"; - if (yearWarning != null) { - message = message + ". " + yearWarning; - } SuccessResponse> response = SuccessResponse.>builder() .success(true) diff --git a/mflix/server/java-spring/src/main/java/com/mongodb/samplemflix/service/MovieServiceImpl.java b/mflix/server/java-spring/src/main/java/com/mongodb/samplemflix/service/MovieServiceImpl.java index d293b23..3ccb9d5 100644 --- a/mflix/server/java-spring/src/main/java/com/mongodb/samplemflix/service/MovieServiceImpl.java +++ b/mflix/server/java-spring/src/main/java/com/mongodb/samplemflix/service/MovieServiceImpl.java @@ -376,7 +376,7 @@ public List getMoviesWithMostRecentComments(Integer lim int resultLimit = Math.clamp(limit != null ? limit : 10, 1, 50); // Build match criteria - Criteria matchCriteria = Criteria.where(Movie.Fields.YEAR).type(16).gte(1800).lte(2030); + Criteria matchCriteria = Criteria.where(Movie.Fields.YEAR).type(16); // Add movie ID filter if provided if (movieId != null && !movieId.trim().isEmpty()) { @@ -461,7 +461,7 @@ public List getMoviesByYearWithStats() { Aggregation aggregation = Aggregation.newAggregation( // STAGE 1: Match movies with valid year data Aggregation.match( - Criteria.where(Movie.Fields.YEAR).type(16).gte(1800).lte(2030) + Criteria.where(Movie.Fields.YEAR).type(16) ), // STAGE 2: Group by year and calculate statistics @@ -512,7 +512,7 @@ public List getDirectorsWithMostMovies(Integer limit) // STAGE 1: Match movies with directors and valid year Aggregation.match( Criteria.where(Movie.Fields.DIRECTORS).exists(true).ne(null).ne(List.of()) - .and(Movie.Fields.YEAR).type(16).gte(1800).lte(2030) + .and(Movie.Fields.YEAR).type(16) ), // STAGE 2: Unwind directors array diff --git a/mflix/server/java-spring/src/test/java/com/mongodb/samplemflix/controller/MovieControllerTest.java b/mflix/server/java-spring/src/test/java/com/mongodb/samplemflix/controller/MovieControllerTest.java index be1a7ec..1add6ed 100644 --- a/mflix/server/java-spring/src/test/java/com/mongodb/samplemflix/controller/MovieControllerTest.java +++ b/mflix/server/java-spring/src/test/java/com/mongodb/samplemflix/controller/MovieControllerTest.java @@ -125,47 +125,6 @@ void testGetAllMovies_WithQueryParams() throws Exception { .andExpect(jsonPath("$.data").isArray()); } - @Test - @DisplayName("GET /api/movies - Should return 400 for year before 1800") - void testGetAllMovies_InvalidYearBefore1800() throws Exception { - // Act & Assert - mockMvc.perform(get("/api/movies") - .param("year", "1700")) - .andExpect(status().isBadRequest()) - .andExpect(jsonPath("$.success").value(false)) - .andExpect(jsonPath("$.error.code").value("VALIDATION_ERROR")); - } - - @Test - @DisplayName("GET /api/movies - Should include warning for year after 2015") - void testGetAllMovies_YearAfter2015IncludesWarning() throws Exception { - // Arrange - List movies = Arrays.asList(); - when(movieService.getAllMovies(any(MovieSearchQuery.class))).thenReturn(movies); - - // Act & Assert - mockMvc.perform(get("/api/movies") - .param("year", "2020")) - .andExpect(status().isOk()) - .andExpect(jsonPath("$.success").value(true)) - .andExpect(jsonPath("$.message", containsString("2015"))); - } - - @Test - @DisplayName("GET /api/movies - Should not include warning for year 2015 or earlier") - void testGetAllMovies_Year2015NoWarning() throws Exception { - // Arrange - List movies = Arrays.asList(testMovie); - when(movieService.getAllMovies(any(MovieSearchQuery.class))).thenReturn(movies); - - // Act & Assert - mockMvc.perform(get("/api/movies") - .param("year", "2015")) - .andExpect(status().isOk()) - .andExpect(jsonPath("$.success").value(true)) - .andExpect(jsonPath("$.message", not(containsString("sample_mflix")))); - } - // ==================== GET MOVIE BY ID TESTS ==================== @Test diff --git a/mflix/server/js-express/src/controllers/movieController.ts b/mflix/server/js-express/src/controllers/movieController.ts index 294612c..26801e4 100644 --- a/mflix/server/js-express/src/controllers/movieController.ts +++ b/mflix/server/js-express/src/controllers/movieController.ts @@ -87,32 +87,9 @@ export async function getAllMovies(req: Request, res: Response): Promise { filter.genres = { $regex: new RegExp(genre, "i") }; } - // Year filtering and validation - // The sample_mflix dataset only contains movies up to 2015 - const MAX_DATASET_YEAR = 2015; - const MIN_VALID_YEAR = 1800; - let yearWarning: string | undefined; - + // Year filtering if (year) { - const yearNum = parseInt(year); - - // Validate year is within reasonable bounds - if (yearNum < MIN_VALID_YEAR) { - res.status(400).json( - createErrorResponse( - `Invalid year: ${yearNum}. Year must be ${MIN_VALID_YEAR} or later.`, - "INVALID_YEAR" - ) - ); - return; - } - - // Warn if searching for years beyond the dataset's range - if (yearNum > MAX_DATASET_YEAR) { - yearWarning = `Note: The sample_mflix dataset only contains movies up to ${MAX_DATASET_YEAR}. Your search for year ${yearNum} may return no results.`; - } - - filter.year = yearNum; + filter.year = parseInt(year); } // Rating range filtering @@ -154,14 +131,8 @@ export async function getAllMovies(req: Request, res: Response): Promise { .skip(skipNum) .toArray(); - // Build response message, including year warning if applicable - let message = `Found ${movies.length} movies`; - if (yearWarning) { - message = `${message}. ${yearWarning}`; - } - // Return successful response - res.json(createSuccessResponse(movies, message)); + res.json(createSuccessResponse(movies, `Found ${movies.length} movies`)); } /** @@ -996,7 +967,7 @@ export async function getMoviesWithMostRecentComments( // the collection { $match: { - year: { $type: "number", $gte: 1800, $lte: 2030 }, + year: { $type: "number" }, }, }, ]; @@ -1134,7 +1105,7 @@ export async function getMoviesByYearWithStats( // STAGE 1: Data quality filter { $match: { - year: { $type: "number", $gte: 1800, $lte: 2030 }, + year: { $type: "number" }, }, }, // STAGE 2: Group by year and calculate statistics @@ -1238,7 +1209,7 @@ export async function getDirectorsWithMostMovies( { $match: { directors: { $exists: true, $ne: null, $not: { $eq: [] } }, - year: { $type: "number", $gte: 1800, $lte: 2030 }, + year: { $type: "number" }, }, }, // STAGE 2: Unwind directors array diff --git a/mflix/server/js-express/tests/controllers/movieController.test.ts b/mflix/server/js-express/tests/controllers/movieController.test.ts index a77c44e..433994b 100644 --- a/mflix/server/js-express/tests/controllers/movieController.test.ts +++ b/mflix/server/js-express/tests/controllers/movieController.test.ts @@ -204,44 +204,6 @@ describe("Movie Controller Tests", () => { ); }); - it("should return 400 for year before 1800", async () => { - mockRequest.query = { year: "1700" }; - - await getAllMovies(mockRequest as Request, mockResponse as Response); - - expect(mockStatus).toHaveBeenCalledWith(400); - expect(mockCreateErrorResponse).toHaveBeenCalledWith( - "Invalid year: 1700. Year must be 1800 or later.", - "INVALID_YEAR" - ); - }); - - it("should include warning message for year after 2015", async () => { - mockRequest.query = { year: "2020" }; - mockToArray.mockResolvedValue([]); - - await getAllMovies(mockRequest as Request, mockResponse as Response); - - expect(mockFind).toHaveBeenCalledWith({ year: 2020 }); - expect(mockCreateSuccessResponse).toHaveBeenCalledWith( - [], - "Found 0 movies. Note: The sample_mflix dataset only contains movies up to 2015. Your search for year 2020 may return no results." - ); - }); - - it("should not include warning message for year 2015 or earlier", async () => { - const testMovies = [{ _id: TEST_MOVIE_ID, title: "Old Movie" }]; - mockRequest.query = { year: "2015" }; - mockToArray.mockResolvedValue(testMovies); - - await getAllMovies(mockRequest as Request, mockResponse as Response); - - expect(mockFind).toHaveBeenCalledWith({ year: 2015 }); - expect(mockCreateSuccessResponse).toHaveBeenCalledWith( - testMovies, - "Found 1 movies" - ); - }); }); describe("getMovieById", () => { diff --git a/mflix/server/python-fastapi/src/routers/movies.py b/mflix/server/python-fastapi/src/routers/movies.py index 76843de..1da9b6a 100644 --- a/mflix/server/python-fastapi/src/routers/movies.py +++ b/mflix/server/python-fastapi/src/routers/movies.py @@ -546,11 +546,6 @@ async def get_all_movies( sort_by:str = Query(default="title", alias="sortBy"), sort_order:str = Query(default="asc", alias="sortOrder") ): - # The sample_mflix dataset only contains movies up to 2015 - MAX_DATASET_YEAR = 2015 - MIN_VALID_YEAR = 1800 - year_warning = None - movies_collection = get_collection("movies") filter_dict = {} if q: @@ -560,15 +555,6 @@ async def get_all_movies( if genre: filter_dict["genres"] = {"$regex": genre, "$options": "i"} if isinstance(year, int): - # Validate year is within reasonable bounds - if year < MIN_VALID_YEAR: - raise HTTPException( - status_code=400, - detail=f"Invalid year: {year}. Year must be {MIN_VALID_YEAR} or later." - ) - # Warn if searching for years beyond the dataset's range - if year > MAX_DATASET_YEAR: - year_warning = f"Note: The sample_mflix dataset only contains movies up to {MAX_DATASET_YEAR}. Your search for year {year} may return no results." filter_dict["year"] = year if min_rating is not None or max_rating is not None: rating_filter = {} @@ -608,12 +594,8 @@ async def get_all_movies( movies.append(movie) - # Build response message, including year warning if applicable - message = f"Found {len(movies)} movies." - if year_warning: - message = f"{message} {year_warning}" - # Return the results wrapped in a SuccessResponse + message = f"Found {len(movies)} movies." return create_success_response(movies, message) """ @@ -1034,7 +1016,7 @@ async def aggregate_movies_recent_commented( # Filter movies to only those with valid year data { "$match": { - "year": {"$type": "number", "$gte": 1800, "$lte": 2030} + "year": {"$type": "number"} } } ] @@ -1180,7 +1162,7 @@ async def aggregate_movies_by_year(): # Tip: Filter early to reduce dataset size and improve performance { "$match": { - "year": {"$type": "number", "$gte": 1800, "$lte": 2030} + "year": {"$type": "number"} } }, @@ -1309,7 +1291,7 @@ async def aggregate_directors_most_movies( { "$match": { "directors": {"$exists": True, "$ne": None, "$ne": []}, # Has directors array - "year": {"$type": "number", "$gte": 1800, "$lte": 2030} # Valid year range + "year": {"$type": "number"} # Valid year (numeric) } }, diff --git a/mflix/server/python-fastapi/tests/test_movie_routes.py b/mflix/server/python-fastapi/tests/test_movie_routes.py index 58862c4..8bb335d 100644 --- a/mflix/server/python-fastapi/tests/test_movie_routes.py +++ b/mflix/server/python-fastapi/tests/test_movie_routes.py @@ -401,66 +401,6 @@ async def test_get_all_movies_database_error(self, mock_get_collection): assert e.value.status_code == 500 assert "error" in str(e.value.detail.lower()) - async def test_get_all_movies_invalid_year_before_1800(self): - """Should return 400 error when year is before 1800.""" - from src.routers.movies import get_all_movies - - with pytest.raises(HTTPException) as e: - await get_all_movies(year=1700) - - assert e.value.status_code == 400 - assert "1800" in str(e.value.detail) - assert "1700" in str(e.value.detail) - - @patch('src.routers.movies.get_collection') - async def test_get_all_movies_year_after_2015_includes_warning(self, mock_get_collection): - """Should include warning message when searching for year after 2015.""" - # Setup mock with proper cursor chaining - mock_collection = MagicMock() - mock_cursor = MagicMock() - - mock_cursor.sort.return_value = mock_cursor - mock_cursor.skip.return_value = mock_cursor - mock_cursor.limit.return_value = mock_cursor - mock_cursor.__aiter__.return_value = iter([]) - - mock_collection.find.return_value = mock_cursor - mock_get_collection.return_value = mock_collection - - from src.routers.movies import get_all_movies - result = await get_all_movies(year=2020) - - # Assertions - assert result.success is True - assert "2015" in result.message - assert "2020" in result.message - assert "sample_mflix" in result.message.lower() - - @patch('src.routers.movies.get_collection') - async def test_get_all_movies_year_2015_no_warning(self, mock_get_collection): - """Should not include warning message when searching for year 2015 or earlier.""" - # Setup mock with proper cursor chaining - mock_collection = MagicMock() - mock_cursor = MagicMock() - - mock_cursor.sort.return_value = mock_cursor - mock_cursor.skip.return_value = mock_cursor - mock_cursor.limit.return_value = mock_cursor - mock_cursor.__aiter__.return_value = iter([ - {"_id": ObjectId(TEST_MOVIE_ID), "title": "Old Movie", "year": 2015} - ]) - - mock_collection.find.return_value = mock_cursor - mock_get_collection.return_value = mock_collection - - from src.routers.movies import get_all_movies - result = await get_all_movies(year=2015) - - # Assertions - assert result.success is True - assert "sample_mflix" not in result.message.lower() - assert "Found 1 movies" in result.message - @pytest.mark.unit @pytest.mark.asyncio From 9be645df93245290851e18200eefbe91796b46c1 Mon Sep 17 00:00:00 2001 From: Cory Bullinger Date: Fri, 30 Jan 2026 10:26:41 -0500 Subject: [PATCH 06/22] Fix Express CI tests: add directConnection=true to MongoDB URI The Atlas CLI local deployment creates a replica set (myLocalRs1) that advertises hostname 'mylocalrs1'. Without directConnection=true, the MongoDB driver attempts server discovery and fails to resolve this hostname in CI, causing all tests to fail with: MongoServerSelectionError: getaddrinfo EAI_AGAIN mylocalrs1 --- .github/workflows/run-express-tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/run-express-tests.yml b/.github/workflows/run-express-tests.yml index d434da2..90672cf 100644 --- a/.github/workflows/run-express-tests.yml +++ b/.github/workflows/run-express-tests.yml @@ -54,13 +54,13 @@ jobs: working-directory: mflix/server/js-express run: npm run test:unit -- --json --outputFile=test-results-unit.json || true env: - MONGODB_URI: mongodb://localhost:27017/sample_mflix + MONGODB_URI: mongodb://localhost:27017/sample_mflix?directConnection=true - name: Run integration tests working-directory: mflix/server/js-express run: npm run test:integration -- --json --outputFile=test-results-integration.json || true env: - MONGODB_URI: mongodb://localhost:27017/sample_mflix + MONGODB_URI: mongodb://localhost:27017/sample_mflix?directConnection=true ENABLE_SEARCH_TESTS: true # Note: Vector search tests will be skipped without VOYAGE_API_KEY # Run these tests locally with a valid API key From 56a2f3c3754f3b17bc932b82b3101c8e8d540dab Mon Sep 17 00:00:00 2001 From: Cory Bullinger Date: Fri, 30 Jan 2026 11:04:39 -0500 Subject: [PATCH 07/22] Fix generate-test-summary-jest.sh: quote GITHUB_STEP_SUMMARY variable - Quote all references to $GITHUB_STEP_SUMMARY to prevent bash syntax errors when the variable is empty or unset - Add guard at script start to gracefully skip summary generation if GITHUB_STEP_SUMMARY is not set This fixes the 'Generate Test Summary' step failure in CI where unquoted variable references caused 'echo >> ' syntax errors with set -e enabled. --- .github/scripts/generate-test-summary-jest.sh | 58 ++++++++++--------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/.github/scripts/generate-test-summary-jest.sh b/.github/scripts/generate-test-summary-jest.sh index 48e86bf..cb40ff7 100644 --- a/.github/scripts/generate-test-summary-jest.sh +++ b/.github/scripts/generate-test-summary-jest.sh @@ -5,11 +5,17 @@ set -e # Shows breakdown by test type (unit vs integration) # Usage: ./generate-test-summary-jest.sh +# Guard: skip if GITHUB_STEP_SUMMARY is not set +if [ -z "$GITHUB_STEP_SUMMARY" ]; then + echo "Warning: GITHUB_STEP_SUMMARY not set, skipping summary generation" + exit 0 +fi + UNIT_JSON="${1:-}" INTEGRATION_JSON="${2:-}" -echo "## Test Results" >> $GITHUB_STEP_SUMMARY -echo "" >> $GITHUB_STEP_SUMMARY +echo "## Test Results" >> "$GITHUB_STEP_SUMMARY" +echo "" >> "$GITHUB_STEP_SUMMARY" # Function to parse Jest JSON file parse_json() { @@ -55,37 +61,37 @@ total_failed=$((unit_failed + int_failed)) total_skipped=$((unit_skipped + int_skipped)) # Display detailed breakdown -echo "### Summary by Test Type" >> $GITHUB_STEP_SUMMARY -echo "" >> $GITHUB_STEP_SUMMARY -echo "| Test Type | Passed | Failed | Skipped | Total |" >> $GITHUB_STEP_SUMMARY -echo "|-----------|--------|--------|---------|-------|" >> $GITHUB_STEP_SUMMARY +echo "### Summary by Test Type" >> "$GITHUB_STEP_SUMMARY" +echo "" >> "$GITHUB_STEP_SUMMARY" +echo "| Test Type | Passed | Failed | Skipped | Total |" >> "$GITHUB_STEP_SUMMARY" +echo "|-----------|--------|--------|---------|-------|" >> "$GITHUB_STEP_SUMMARY" if [ -f "$UNIT_JSON" ]; then - echo "| 🔧 Unit Tests | $unit_passed | $unit_failed | $unit_skipped | $unit_tests |" >> $GITHUB_STEP_SUMMARY + echo "| 🔧 Unit Tests | $unit_passed | $unit_failed | $unit_skipped | $unit_tests |" >> "$GITHUB_STEP_SUMMARY" fi if [ -f "$INTEGRATION_JSON" ]; then - echo "| 🔗 Integration Tests | $int_passed | $int_failed | $int_skipped | $int_tests |" >> $GITHUB_STEP_SUMMARY + echo "| 🔗 Integration Tests | $int_passed | $int_failed | $int_skipped | $int_tests |" >> "$GITHUB_STEP_SUMMARY" fi -echo "| **Total** | **$total_passed** | **$total_failed** | **$total_skipped** | **$total_tests** |" >> $GITHUB_STEP_SUMMARY -echo "" >> $GITHUB_STEP_SUMMARY +echo "| **Total** | **$total_passed** | **$total_failed** | **$total_skipped** | **$total_tests** |" >> "$GITHUB_STEP_SUMMARY" +echo "" >> "$GITHUB_STEP_SUMMARY" # Overall status -echo "### Overall Status" >> $GITHUB_STEP_SUMMARY -echo "" >> $GITHUB_STEP_SUMMARY -echo "| Status | Count |" >> $GITHUB_STEP_SUMMARY -echo "|--------|-------|" >> $GITHUB_STEP_SUMMARY -echo "| ✅ Passed | $total_passed |" >> $GITHUB_STEP_SUMMARY -echo "| ❌ Failed | $total_failed |" >> $GITHUB_STEP_SUMMARY -echo "| ⏭️ Skipped | $total_skipped |" >> $GITHUB_STEP_SUMMARY -echo "| **Total** | **$total_tests** |" >> $GITHUB_STEP_SUMMARY -echo "" >> $GITHUB_STEP_SUMMARY +echo "### Overall Status" >> "$GITHUB_STEP_SUMMARY" +echo "" >> "$GITHUB_STEP_SUMMARY" +echo "| Status | Count |" >> "$GITHUB_STEP_SUMMARY" +echo "|--------|-------|" >> "$GITHUB_STEP_SUMMARY" +echo "| ✅ Passed | $total_passed |" >> "$GITHUB_STEP_SUMMARY" +echo "| ❌ Failed | $total_failed |" >> "$GITHUB_STEP_SUMMARY" +echo "| ⏭️ Skipped | $total_skipped |" >> "$GITHUB_STEP_SUMMARY" +echo "| **Total** | **$total_tests** |" >> "$GITHUB_STEP_SUMMARY" +echo "" >> "$GITHUB_STEP_SUMMARY" # List failed tests if any if [ $total_failed -gt 0 ]; then - echo "### ❌ Failed Tests" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY + echo "### ❌ Failed Tests" >> "$GITHUB_STEP_SUMMARY" + echo "" >> "$GITHUB_STEP_SUMMARY" failed_tests_file=$(mktemp) @@ -107,16 +113,16 @@ if [ $total_failed -gt 0 ]; then if [ -s "$failed_tests_file" ]; then while IFS= read -r test; do - echo "- \`$test\`" >> $GITHUB_STEP_SUMMARY + echo "- \`$test\`" >> "$GITHUB_STEP_SUMMARY" done < "$failed_tests_file" else - echo "_Unable to parse individual test names_" >> $GITHUB_STEP_SUMMARY + echo "_Unable to parse individual test names_" >> "$GITHUB_STEP_SUMMARY" fi - echo "" >> $GITHUB_STEP_SUMMARY - echo "❌ **Tests failed!**" >> $GITHUB_STEP_SUMMARY + echo "" >> "$GITHUB_STEP_SUMMARY" + echo "❌ **Tests failed!**" >> "$GITHUB_STEP_SUMMARY" rm -f "$failed_tests_file" exit 1 else - echo "✅ **All tests passed!**" >> $GITHUB_STEP_SUMMARY + echo "✅ **All tests passed!**" >> "$GITHUB_STEP_SUMMARY" fi From 819f84e67004ccd81e72a6f25c5afe02fbc19f7d Mon Sep 17 00:00:00 2001 From: Cory Bullinger Date: Fri, 30 Jan 2026 11:25:20 -0500 Subject: [PATCH 08/22] Add index creation step to CI for aggregation performance Create index on comments.movie_id after data restore to fix the /reportingByComments aggregation timeout. Without this index, the $lookup operation performs a full collection scan (41K comments x 21K movies) causing 5+ minute response times in CI vs ~700ms locally. --- .github/workflows/run-express-tests.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/run-express-tests.yml b/.github/workflows/run-express-tests.yml index 90672cf..22f1075 100644 --- a/.github/workflows/run-express-tests.yml +++ b/.github/workflows/run-express-tests.yml @@ -41,6 +41,10 @@ jobs: - name: Add sample data to database run: mongorestore --archive=sampledata.archive --port=27017 + - name: Create indexes for aggregation performance + run: | + mongosh "mongodb://localhost:27017/sample_mflix?directConnection=true" --eval "db.comments.createIndex({ movie_id: 1 })" + - name: Set up Node.js uses: actions/setup-node@v4 with: From 680adf00ec2781caea383c07d5709b8068be35c7 Mon Sep 17 00:00:00 2001 From: Cory Bullinger Date: Fri, 30 Jan 2026 11:30:39 -0500 Subject: [PATCH 09/22] Install mongosh in CI workflow for index creation The previous commit added an index creation step that requires mongosh, but mongosh is not installed on the Ubuntu runner by default. This adds a step to download and install mongosh-2.3.8-linux-x64. --- .github/workflows/run-express-tests.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/run-express-tests.yml b/.github/workflows/run-express-tests.yml index 22f1075..eb1b2aa 100644 --- a/.github/workflows/run-express-tests.yml +++ b/.github/workflows/run-express-tests.yml @@ -41,6 +41,12 @@ jobs: - name: Add sample data to database run: mongorestore --archive=sampledata.archive --port=27017 + - name: Install MongoDB Shell (mongosh) + run: | + curl https://downloads.mongodb.com/compass/mongosh-2.3.8-linux-x64.tgz -o mongosh.tgz + tar -xzf mongosh.tgz + sudo cp mongosh-2.3.8-linux-x64/bin/* /usr/local/bin/ + - name: Create indexes for aggregation performance run: | mongosh "mongodb://localhost:27017/sample_mflix?directConnection=true" --eval "db.comments.createIndex({ movie_id: 1 })" From 62d9c02830c3abbdd828a131ddc76eca70d43aba Mon Sep 17 00:00:00 2001 From: cory <115956901+cbullinger@users.noreply.github.com> Date: Fri, 30 Jan 2026 11:34:29 -0500 Subject: [PATCH 10/22] Apply suggestions from code review Co-authored-by: Dachary --- mflix/README-JAVA-SPRING.md | 2 +- mflix/README-JAVASCRIPT-EXPRESS.md | 2 +- mflix/README-PYTHON-FASTAPI.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mflix/README-JAVA-SPRING.md b/mflix/README-JAVA-SPRING.md index 523d749..245afc5 100644 --- a/mflix/README-JAVA-SPRING.md +++ b/mflix/README-JAVA-SPRING.md @@ -16,7 +16,7 @@ This is a full-stack movie browsing application built with Java Spring Boot and ## Data Limitations -The `sample_mflix` dataset contains movies released up to **2015**. Searching for movies from 2016 or later will return no results. This is a limitation of the sample dataset, not the application. +The `sample_mflix` dataset contains movies released up to **2016**. Searching for movies from 2017 or later will return no results. This is a limitation of the sample dataset, not the application. ## Prerequisites diff --git a/mflix/README-JAVASCRIPT-EXPRESS.md b/mflix/README-JAVASCRIPT-EXPRESS.md index 0ecb764..f3c531c 100644 --- a/mflix/README-JAVASCRIPT-EXPRESS.md +++ b/mflix/README-JAVASCRIPT-EXPRESS.md @@ -16,7 +16,7 @@ This is a full-stack movie browsing application built with Express.js and Next.j ## Data Limitations -The `sample_mflix` dataset contains movies released up to **2015**. Searching for movies from 2016 or later will return no results. This is a limitation of the sample dataset, not the application. +The `sample_mflix` dataset contains movies released up to **2016**. Searching for movies from 2017 or later will return no results. This is a limitation of the sample dataset, not the application. ## Prerequisites diff --git a/mflix/README-PYTHON-FASTAPI.md b/mflix/README-PYTHON-FASTAPI.md index 1934680..3d79f3b 100644 --- a/mflix/README-PYTHON-FASTAPI.md +++ b/mflix/README-PYTHON-FASTAPI.md @@ -19,7 +19,7 @@ This is a full-stack movie browsing application built with Python FastAPI and Ne ## Data Limitations -The `sample_mflix` dataset contains movies released up to **2015**. Searching for movies from 2016 or later will return no results. This is a limitation of the sample dataset, not the application. +The `sample_mflix` dataset contains movies released up to **2016**. Searching for movies from 2017 or later will return no results. This is a limitation of the sample dataset, not the application. ## Prerequisites From 2dd639a2049d84b888e72032c0077efe9fa5399a Mon Sep 17 00:00:00 2001 From: Cory Bullinger Date: Sat, 31 Jan 2026 13:36:02 -0500 Subject: [PATCH 11/22] Address PR feedback #1-#5: Improve UI consistency and visual hierarchy - #1 Movie Cards: Make entire card clickable, enforce consistent heights, tone down checkbox - #2 Top Toolbar: Remove batch buttons, add contextual bottom selection bar - #3 Filters Bar: Replace mint/green with neutral gray borders and backgrounds - #4 Navbar: Remove full-width green border and animated underline effect - #5 Aggregations: Use light gray for row hover, tone down comment pills and show more button - Additional: Remove bright green border from aggregations section headers All changes improve visual hierarchy and reduce competing visual elements per reviewer feedback on PR #75. --- Run Express Tests/0_Run Express Tests.txt | 2419 +++++++++++++++++ Run Express Tests/10_Run unit tests.txt | 91 + .../11_Run integration tests.txt | 1852 +++++++++++++ Run Express Tests/12_Upload test results.txt | 26 + .../13_Generate Test Summary.txt | 8 + Run Express Tests/1_Set up job.txt | 46 + Run Express Tests/26_Post Checkout code.txt | 14 + Run Express Tests/27_Complete job.txt | 1 + Run Express Tests/2_Checkout code.txt | 88 + Run Express Tests/3_Install Atlas CLI.txt | 58 + ... up a local deployment using Atlas CLI.txt | 20 + ...oDB Database Tools to load sample data.txt | 59 + Run Express Tests/6_Download sample data.txt | 17 + .../7_Add sample data to database.txt | 110 + Run Express Tests/8_Set up Node.js.txt | 13 + Run Express Tests/9_Install dependencies.txt | 16 + Run Express Tests/system.txt | 8 + .../app/aggregations/aggregations.module.css | 7 +- .../ExpandableTable.module.css | 30 +- .../components/FilterBar/FilterBar.module.css | 16 +- .../components/MovieCard/MovieCard.module.css | 60 +- .../app/components/MovieCard/MovieCard.tsx | 19 +- mflix/client/app/layout.module.css | 16 - mflix/client/app/movies/movies.module.css | 122 + mflix/client/app/movies/page.tsx | 67 +- 25 files changed, 5073 insertions(+), 110 deletions(-) create mode 100644 Run Express Tests/0_Run Express Tests.txt create mode 100644 Run Express Tests/10_Run unit tests.txt create mode 100644 Run Express Tests/11_Run integration tests.txt create mode 100644 Run Express Tests/12_Upload test results.txt create mode 100644 Run Express Tests/13_Generate Test Summary.txt create mode 100644 Run Express Tests/1_Set up job.txt create mode 100644 Run Express Tests/26_Post Checkout code.txt create mode 100644 Run Express Tests/27_Complete job.txt create mode 100644 Run Express Tests/2_Checkout code.txt create mode 100644 Run Express Tests/3_Install Atlas CLI.txt create mode 100644 Run Express Tests/4_Set up a local deployment using Atlas CLI.txt create mode 100644 Run Express Tests/5_Install MongoDB Database Tools to load sample data.txt create mode 100644 Run Express Tests/6_Download sample data.txt create mode 100644 Run Express Tests/7_Add sample data to database.txt create mode 100644 Run Express Tests/8_Set up Node.js.txt create mode 100644 Run Express Tests/9_Install dependencies.txt create mode 100644 Run Express Tests/system.txt diff --git a/Run Express Tests/0_Run Express Tests.txt b/Run Express Tests/0_Run Express Tests.txt new file mode 100644 index 0000000..e7ddaab --- /dev/null +++ b/Run Express Tests/0_Run Express Tests.txt @@ -0,0 +1,2419 @@ +2026-01-30T15:27:35.4021994Z Current runner version: '2.331.0' +2026-01-30T15:27:35.4044853Z ##[group]Runner Image Provisioner +2026-01-30T15:27:35.4045768Z Hosted Compute Agent +2026-01-30T15:27:35.4046303Z Version: 20260123.484 +2026-01-30T15:27:35.4046962Z Commit: 6bd6555ca37d84114959e1c76d2c01448ff61c5d +2026-01-30T15:27:35.4047652Z Build Date: 2026-01-23T19:41:17Z +2026-01-30T15:27:35.4048259Z Worker ID: {1c5318de-9485-4f85-b747-b92f544a1cd0} +2026-01-30T15:27:35.4048984Z Azure Region: westus +2026-01-30T15:27:35.4049553Z ##[endgroup] +2026-01-30T15:27:35.4050861Z ##[group]Operating System +2026-01-30T15:27:35.4051543Z Ubuntu +2026-01-30T15:27:35.4051975Z 24.04.3 +2026-01-30T15:27:35.4052600Z LTS +2026-01-30T15:27:35.4053065Z ##[endgroup] +2026-01-30T15:27:35.4053609Z ##[group]Runner Image +2026-01-30T15:27:35.4054105Z Image: ubuntu-24.04 +2026-01-30T15:27:35.4054639Z Version: 20260126.10.1 +2026-01-30T15:27:35.4055795Z Included Software: https://github.com/actions/runner-images/blob/ubuntu24/20260126.10/images/ubuntu/Ubuntu2404-Readme.md +2026-01-30T15:27:35.4057373Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu24%2F20260126.10 +2026-01-30T15:27:35.4058247Z ##[endgroup] +2026-01-30T15:27:35.4060846Z ##[group]GITHUB_TOKEN Permissions +2026-01-30T15:27:35.4063610Z Actions: write +2026-01-30T15:27:35.4064181Z ArtifactMetadata: write +2026-01-30T15:27:35.4064680Z Attestations: write +2026-01-30T15:27:35.4065293Z Checks: write +2026-01-30T15:27:35.4065776Z Contents: write +2026-01-30T15:27:35.4066235Z Deployments: write +2026-01-30T15:27:35.4066831Z Discussions: write +2026-01-30T15:27:35.4067279Z Issues: write +2026-01-30T15:27:35.4067730Z Metadata: read +2026-01-30T15:27:35.4068231Z Models: read +2026-01-30T15:27:35.4068705Z Packages: write +2026-01-30T15:27:35.4069158Z Pages: write +2026-01-30T15:27:35.4069817Z PullRequests: write +2026-01-30T15:27:35.4070347Z RepositoryProjects: write +2026-01-30T15:27:35.4070861Z SecurityEvents: write +2026-01-30T15:27:35.4071423Z Statuses: write +2026-01-30T15:27:35.4071886Z ##[endgroup] +2026-01-30T15:27:35.4074279Z Secret source: Actions +2026-01-30T15:27:35.4075190Z Prepare workflow directory +2026-01-30T15:27:35.4388167Z Prepare all required actions +2026-01-30T15:27:35.4425058Z Getting action download info +2026-01-30T15:27:35.9628867Z Download action repository 'actions/checkout@v5' (SHA:93cb6efe18208431cddfb8368fd83d5badbf9bfd) +2026-01-30T15:27:36.0508213Z Download action repository 'actions/setup-node@v4' (SHA:49933ea5288caeca8642d1e84afbd3f7d6820020) +2026-01-30T15:27:36.1435399Z Download action repository 'actions/upload-artifact@v4' (SHA:ea165f8d65b6e75b540449e92b4886f43607fa02) +2026-01-30T15:27:36.3648163Z Complete job name: Run Express Tests +2026-01-30T15:27:36.4368854Z ##[group]Run actions/checkout@v5 +2026-01-30T15:27:36.4369741Z with: +2026-01-30T15:27:36.4370192Z repository: mongodb/docs-sample-apps +2026-01-30T15:27:36.4370926Z token: *** +2026-01-30T15:27:36.4371333Z ssh-strict: true +2026-01-30T15:27:36.4371755Z ssh-user: git +2026-01-30T15:27:36.4372348Z persist-credentials: true +2026-01-30T15:27:36.4372862Z clean: true +2026-01-30T15:27:36.4373292Z sparse-checkout-cone-mode: true +2026-01-30T15:27:36.4373811Z fetch-depth: 1 +2026-01-30T15:27:36.4374236Z fetch-tags: false +2026-01-30T15:27:36.4374711Z show-progress: true +2026-01-30T15:27:36.4375152Z lfs: false +2026-01-30T15:27:36.4375542Z submodules: false +2026-01-30T15:27:36.4375978Z set-safe-directory: true +2026-01-30T15:27:36.4376697Z ##[endgroup] +2026-01-30T15:27:36.5281503Z Syncing repository: mongodb/docs-sample-apps +2026-01-30T15:27:36.5283644Z ##[group]Getting Git version info +2026-01-30T15:27:36.5284609Z Working directory is '/home/runner/work/docs-sample-apps/docs-sample-apps' +2026-01-30T15:27:36.5285729Z [command]/usr/bin/git version +2026-01-30T15:27:36.5360665Z git version 2.52.0 +2026-01-30T15:27:36.5381776Z ##[endgroup] +2026-01-30T15:27:36.5397406Z Temporarily overriding HOME='/home/runner/work/_temp/0dfb3aa4-9072-4dfc-b117-396528f81849' before making global git config changes +2026-01-30T15:27:36.5400144Z Adding repository directory to the temporary git global config as a safe directory +2026-01-30T15:27:36.5403278Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/docs-sample-apps/docs-sample-apps +2026-01-30T15:27:36.5442355Z Deleting the contents of '/home/runner/work/docs-sample-apps/docs-sample-apps' +2026-01-30T15:27:36.5446260Z ##[group]Initializing the repository +2026-01-30T15:27:36.5450999Z [command]/usr/bin/git init /home/runner/work/docs-sample-apps/docs-sample-apps +2026-01-30T15:27:36.5556519Z hint: Using 'master' as the name for the initial branch. This default branch name +2026-01-30T15:27:36.5557767Z hint: will change to "main" in Git 3.0. To configure the initial branch name +2026-01-30T15:27:36.5558834Z hint: to use in all of your new repositories, which will suppress this warning, +2026-01-30T15:27:36.5559573Z hint: call: +2026-01-30T15:27:36.5559959Z hint: +2026-01-30T15:27:36.5560816Z hint: git config --global init.defaultBranch +2026-01-30T15:27:36.5561677Z hint: +2026-01-30T15:27:36.5562554Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and +2026-01-30T15:27:36.5564429Z hint: 'development'. The just-created branch can be renamed via this command: +2026-01-30T15:27:36.5565937Z hint: +2026-01-30T15:27:36.5566752Z hint: git branch -m +2026-01-30T15:27:36.5567720Z hint: +2026-01-30T15:27:36.5568890Z hint: Disable this message with "git config set advice.defaultBranchName false" +2026-01-30T15:27:36.5571016Z Initialized empty Git repository in /home/runner/work/docs-sample-apps/docs-sample-apps/.git/ +2026-01-30T15:27:36.5574683Z [command]/usr/bin/git remote add origin https://github.com/mongodb/docs-sample-apps +2026-01-30T15:27:36.5609606Z ##[endgroup] +2026-01-30T15:27:36.5610980Z ##[group]Disabling automatic garbage collection +2026-01-30T15:27:36.5613955Z [command]/usr/bin/git config --local gc.auto 0 +2026-01-30T15:27:36.5641011Z ##[endgroup] +2026-01-30T15:27:36.5642597Z ##[group]Setting up auth +2026-01-30T15:27:36.5648211Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand +2026-01-30T15:27:36.5679041Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :" +2026-01-30T15:27:36.6022069Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader +2026-01-30T15:27:36.6052732Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :" +2026-01-30T15:27:36.6274525Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir: +2026-01-30T15:27:36.6303067Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url +2026-01-30T15:27:36.6516188Z [command]/usr/bin/git config --local http.https://github.com/.extraheader AUTHORIZATION: basic *** +2026-01-30T15:27:36.6547061Z ##[endgroup] +2026-01-30T15:27:36.6555148Z ##[group]Fetching the repository +2026-01-30T15:27:36.6556576Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +41eb43c3e700e94de5fbb4c1db03d66579c7306b:refs/remotes/pull/80/merge +2026-01-30T15:27:37.1060485Z From https://github.com/mongodb/docs-sample-apps +2026-01-30T15:27:37.1062427Z * [new ref] 41eb43c3e700e94de5fbb4c1db03d66579c7306b -> pull/80/merge +2026-01-30T15:27:37.1093060Z ##[endgroup] +2026-01-30T15:27:37.1094897Z ##[group]Determining the checkout info +2026-01-30T15:27:37.1097079Z ##[endgroup] +2026-01-30T15:27:37.1101745Z [command]/usr/bin/git sparse-checkout disable +2026-01-30T15:27:37.1142679Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig +2026-01-30T15:27:37.1167695Z ##[group]Checking out the ref +2026-01-30T15:27:37.1172687Z [command]/usr/bin/git checkout --progress --force refs/remotes/pull/80/merge +2026-01-30T15:27:37.1321827Z Note: switching to 'refs/remotes/pull/80/merge'. +2026-01-30T15:27:37.1323334Z +2026-01-30T15:27:37.1324352Z You are in 'detached HEAD' state. You can look around, make experimental +2026-01-30T15:27:37.1326763Z changes and commit them, and you can discard any commits you make in this +2026-01-30T15:27:37.1328418Z state without impacting any branches by switching back to a branch. +2026-01-30T15:27:37.1329847Z +2026-01-30T15:27:37.1330828Z If you want to create a new branch to retain commits you create, you may +2026-01-30T15:27:37.1333138Z do so (now or later) by using -c with the switch command. Example: +2026-01-30T15:27:37.1334115Z +2026-01-30T15:27:37.1334495Z git switch -c +2026-01-30T15:27:37.1335093Z +2026-01-30T15:27:37.1335417Z Or undo this operation with: +2026-01-30T15:27:37.1335957Z +2026-01-30T15:27:37.1336243Z git switch - +2026-01-30T15:27:37.1336652Z +2026-01-30T15:27:37.1337353Z Turn off this advice by setting config variable advice.detachedHead to false +2026-01-30T15:27:37.1338501Z +2026-01-30T15:27:37.1339822Z HEAD is now at 41eb43c Merge 9be645df93245290851e18200eefbe91796b46c1 into ce1e9b24def0b15691baec44174a9a7a044d554d +2026-01-30T15:27:37.1343930Z ##[endgroup] +2026-01-30T15:27:37.1364968Z [command]/usr/bin/git log -1 --format=%H +2026-01-30T15:27:37.1386695Z 41eb43c3e700e94de5fbb4c1db03d66579c7306b +2026-01-30T15:27:37.1617523Z ##[group]Run curl https://fastdl.mongodb.org/mongocli/mongodb-atlas-cli_1.47.0_linux_x86_64.deb --output atlas-cli.deb +2026-01-30T15:27:37.1621210Z curl https://fastdl.mongodb.org/mongocli/mongodb-atlas-cli_1.47.0_linux_x86_64.deb --output atlas-cli.deb +2026-01-30T15:27:37.1624041Z sudo apt install ./atlas-cli.deb +2026-01-30T15:27:37.1662581Z shell: /usr/bin/bash -e {0} +2026-01-30T15:27:37.1663674Z ##[endgroup] +2026-01-30T15:27:37.1793739Z % Total % Received % Xferd Average Speed Time Time Time Current +2026-01-30T15:27:37.1796272Z Dload Upload Total Spent Left Speed +2026-01-30T15:27:37.1797394Z +2026-01-30T15:27:37.3083084Z 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 +2026-01-30T15:27:37.3084862Z 100 15.3M 100 15.3M 0 0 118M 0 --:--:-- --:--:-- --:--:-- 118M +2026-01-30T15:27:37.3234233Z +2026-01-30T15:27:37.3235626Z WARNING: apt does not have a stable CLI interface. Use with caution in scripts. +2026-01-30T15:27:37.3237051Z +2026-01-30T15:27:37.3618069Z Reading package lists... +2026-01-30T15:27:37.5325438Z Building dependency tree... +2026-01-30T15:27:37.5332920Z Reading state information... +2026-01-30T15:27:37.7056766Z The following NEW packages will be installed: +2026-01-30T15:27:37.7058939Z mongodb-atlas-cli +2026-01-30T15:27:37.7308589Z 0 upgraded, 1 newly installed, 0 to remove and 65 not upgraded. +2026-01-30T15:27:37.8233723Z Need to get 0 B/16.1 MB of archives. +2026-01-30T15:27:37.8237877Z After this operation, 52.6 MB of additional disk space will be used. +2026-01-30T15:27:37.8242348Z Get:1 /home/runner/work/docs-sample-apps/docs-sample-apps/atlas-cli.deb mongodb-atlas-cli amd64 1.47.0 [16.1 MB] +2026-01-30T15:27:38.1043873Z Selecting previously unselected package mongodb-atlas-cli. +2026-01-30T15:27:38.1367661Z (Reading database ... +2026-01-30T15:27:38.1369131Z (Reading database ... 5% +2026-01-30T15:27:38.1370344Z (Reading database ... 10% +2026-01-30T15:27:38.1371751Z (Reading database ... 15% +2026-01-30T15:27:38.1373251Z (Reading database ... 20% +2026-01-30T15:27:38.1374574Z (Reading database ... 25% +2026-01-30T15:27:38.1375779Z (Reading database ... 30% +2026-01-30T15:27:38.1377126Z (Reading database ... 35% +2026-01-30T15:27:38.1378134Z (Reading database ... 40% +2026-01-30T15:27:38.1379106Z (Reading database ... 45% +2026-01-30T15:27:38.1380069Z (Reading database ... 50% +2026-01-30T15:27:38.1545678Z (Reading database ... 55% +2026-01-30T15:27:38.2799976Z (Reading database ... 60% +2026-01-30T15:27:38.3781343Z (Reading database ... 65% +2026-01-30T15:27:38.4457403Z (Reading database ... 70% +2026-01-30T15:27:38.5334976Z (Reading database ... 75% +2026-01-30T15:27:38.6852065Z (Reading database ... 80% +2026-01-30T15:27:38.8245926Z (Reading database ... 85% +2026-01-30T15:27:38.9423870Z (Reading database ... 90% +2026-01-30T15:27:39.0925788Z (Reading database ... 95% +2026-01-30T15:27:39.0926236Z (Reading database ... 100% +2026-01-30T15:27:39.0926661Z (Reading database ... 217639 files and directories currently installed.) +2026-01-30T15:27:39.0974960Z Preparing to unpack .../docs-sample-apps/atlas-cli.deb ... +2026-01-30T15:27:39.1002732Z Unpacking mongodb-atlas-cli (1.47.0) ... +2026-01-30T15:27:39.3569215Z Setting up mongodb-atlas-cli (1.47.0) ... +2026-01-30T15:27:40.0594326Z +2026-01-30T15:27:40.0594951Z Running kernel seems to be up-to-date. +2026-01-30T15:27:40.0597035Z +2026-01-30T15:27:40.0597302Z No services need to be restarted. +2026-01-30T15:27:40.0597735Z +2026-01-30T15:27:40.0598120Z No containers need to be restarted. +2026-01-30T15:27:40.0598424Z +2026-01-30T15:27:40.0598621Z No user sessions are running outdated binaries. +2026-01-30T15:27:40.0599010Z +2026-01-30T15:27:40.0599478Z No VM guests are running outdated hypervisor (qemu) binaries on this host. +2026-01-30T15:27:40.9036476Z ##[group]Run atlas deployments setup myLocalRs1 --type local --port 27017 --force +2026-01-30T15:27:40.9037100Z atlas deployments setup myLocalRs1 --type local --port 27017 --force +2026-01-30T15:27:40.9069690Z shell: /usr/bin/bash -e {0} +2026-01-30T15:27:40.9069944Z ##[endgroup] +2026-01-30T15:27:40.9429886Z +2026-01-30T15:27:40.9430487Z Warning: Secure storage is not available, falling back to insecure storage +2026-01-30T15:27:40.9431357Z To disable this alert, run "atlas config set silence_storage_warning true" +2026-01-30T15:27:43.2827646Z +2026-01-30T15:27:43.2828080Z [Default Settings] +2026-01-30T15:27:43.2828610Z Deployment Name myLocalRs1 +2026-01-30T15:27:43.2829054Z MongoDB Version 8.0 +2026-01-30T15:27:43.2829273Z +2026-01-30T15:27:43.3804860Z Creating your cluster myLocalRs1 +2026-01-30T15:27:43.3806463Z 1/3: Starting your local environment... +2026-01-30T15:27:43.3942607Z 2/3: Downloading the latest MongoDB image to your local environment... +2026-01-30T15:27:58.3714397Z 3/3: Creating your deployment myLocalRs1... +2026-01-30T15:28:07.7721550Z Deployment created! +2026-01-30T15:28:07.7721838Z +2026-01-30T15:28:07.7721994Z connection skipped +2026-01-30T15:28:07.7722924Z Connection string: "mongodb://localhost:27017/?directConnection=true" +2026-01-30T15:28:07.7816626Z ##[group]Run curl https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2204-x86_64-100.13.0.deb --output mdb-db-tools.deb +2026-01-30T15:28:07.7817661Z curl https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2204-x86_64-100.13.0.deb --output mdb-db-tools.deb +2026-01-30T15:28:07.7818270Z sudo apt install ./mdb-db-tools.deb +2026-01-30T15:28:07.7850788Z shell: /usr/bin/bash -e {0} +2026-01-30T15:28:07.7851036Z ##[endgroup] +2026-01-30T15:28:07.7956736Z % Total % Received % Xferd Average Speed Time Time Time Current +2026-01-30T15:28:07.7958829Z Dload Upload Total Spent Left Speed +2026-01-30T15:28:07.7959409Z +2026-01-30T15:28:07.9015237Z 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 +2026-01-30T15:28:08.0314466Z 37 56.1M 37 20.8M 0 0 196M 0 --:--:-- --:--:-- --:--:-- 196M +2026-01-30T15:28:08.0315277Z 100 56.1M 100 56.1M 0 0 238M 0 --:--:-- --:--:-- --:--:-- 237M +2026-01-30T15:28:08.0440908Z +2026-01-30T15:28:08.0441418Z WARNING: apt does not have a stable CLI interface. Use with caution in scripts. +2026-01-30T15:28:08.0441784Z +2026-01-30T15:28:08.0863637Z Reading package lists... +2026-01-30T15:28:08.3362134Z Building dependency tree... +2026-01-30T15:28:08.3370186Z Reading state information... +2026-01-30T15:28:08.6238860Z The following NEW packages will be installed: +2026-01-30T15:28:08.6240442Z mongodb-database-tools +2026-01-30T15:28:08.6508089Z 0 upgraded, 1 newly installed, 0 to remove and 65 not upgraded. +2026-01-30T15:28:08.9299090Z Need to get 0 B/58.9 MB of archives. +2026-01-30T15:28:08.9299894Z After this operation, 0 B of additional disk space will be used. +2026-01-30T15:28:08.9300819Z Get:1 /home/runner/work/docs-sample-apps/docs-sample-apps/mdb-db-tools.deb mongodb-database-tools amd64 100.13.0 [58.9 MB] +2026-01-30T15:28:09.2262685Z Selecting previously unselected package mongodb-database-tools. +2026-01-30T15:28:09.2316709Z (Reading database ... +2026-01-30T15:28:09.2317157Z (Reading database ... 5% +2026-01-30T15:28:09.2317562Z (Reading database ... 10% +2026-01-30T15:28:09.2322915Z (Reading database ... 15% +2026-01-30T15:28:09.2323334Z (Reading database ... 20% +2026-01-30T15:28:09.2323734Z (Reading database ... 25% +2026-01-30T15:28:09.2324013Z (Reading database ... 30% +2026-01-30T15:28:09.2324265Z (Reading database ... 35% +2026-01-30T15:28:09.2324505Z (Reading database ... 40% +2026-01-30T15:28:09.2324750Z (Reading database ... 45% +2026-01-30T15:28:09.2324985Z (Reading database ... 50% +2026-01-30T15:28:09.2340414Z (Reading database ... 55% +2026-01-30T15:28:09.2460057Z (Reading database ... 60% +2026-01-30T15:28:09.2485715Z (Reading database ... 65% +2026-01-30T15:28:09.2503977Z (Reading database ... 70% +2026-01-30T15:28:09.2529842Z (Reading database ... 75% +2026-01-30T15:28:09.2571291Z (Reading database ... 80% +2026-01-30T15:28:09.2746073Z (Reading database ... 85% +2026-01-30T15:28:09.2799680Z (Reading database ... 90% +2026-01-30T15:28:09.3126218Z (Reading database ... 95% +2026-01-30T15:28:09.3126680Z (Reading database ... 100% +2026-01-30T15:28:09.3127187Z (Reading database ... 217642 files and directories currently installed.) +2026-01-30T15:28:09.3174212Z Preparing to unpack .../mdb-db-tools.deb ... +2026-01-30T15:28:09.3187806Z Unpacking mongodb-database-tools (100.13.0) ... +2026-01-30T15:28:10.3334069Z Setting up mongodb-database-tools (100.13.0) ... +2026-01-30T15:28:10.9204512Z +2026-01-30T15:28:10.9205288Z Running kernel seems to be up-to-date. +2026-01-30T15:28:10.9205691Z +2026-01-30T15:28:10.9205848Z No services need to be restarted. +2026-01-30T15:28:10.9206166Z +2026-01-30T15:28:10.9206322Z No containers need to be restarted. +2026-01-30T15:28:10.9206606Z +2026-01-30T15:28:10.9206790Z No user sessions are running outdated binaries. +2026-01-30T15:28:10.9207118Z +2026-01-30T15:28:10.9207423Z No VM guests are running outdated hypervisor (qemu) binaries on this host. +2026-01-30T15:28:12.1495205Z ##[group]Run curl https://atlas-education.s3.amazonaws.com/sampledata.archive -o sampledata.archive +2026-01-30T15:28:12.1495961Z curl https://atlas-education.s3.amazonaws.com/sampledata.archive -o sampledata.archive +2026-01-30T15:28:12.1527533Z shell: /usr/bin/bash -e {0} +2026-01-30T15:28:12.1527782Z ##[endgroup] +2026-01-30T15:28:12.1628537Z % Total % Received % Xferd Average Speed Time Time Time Current +2026-01-30T15:28:12.1629272Z Dload Upload Total Spent Left Speed +2026-01-30T15:28:12.1629665Z +2026-01-30T15:28:12.9531067Z 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 +2026-01-30T15:28:13.9110912Z 0 353M 0 1715k 0 0 2170k 0 0:02:46 --:--:-- 0:02:46 2168k +2026-01-30T15:28:14.9238775Z 12 353M 12 44.6M 0 0 25.5M 0 0:00:13 0:00:01 0:00:12 25.5M +2026-01-30T15:28:15.9462854Z 26 353M 26 93.3M 0 0 33.7M 0 0:00:10 0:00:02 0:00:08 33.7M +2026-01-30T15:28:16.9007807Z 39 353M 39 140M 0 0 37.2M 0 0:00:09 0:00:03 0:00:06 37.2M +2026-01-30T15:28:17.9010198Z 53 353M 53 187M 0 0 39.5M 0 0:00:08 0:00:04 0:00:04 39.5M +2026-01-30T15:28:18.9011085Z 66 353M 66 234M 0 0 40.7M 0 0:00:08 0:00:05 0:00:03 46.9M +2026-01-30T15:28:19.9010571Z 79 353M 79 282M 0 0 41.9M 0 0:00:08 0:00:06 0:00:02 47.6M +2026-01-30T15:28:20.4463657Z 93 353M 93 329M 0 0 42.6M 0 0:00:08 0:00:07 0:00:01 47.5M +2026-01-30T15:28:20.4464604Z 100 353M 100 353M 0 0 42.6M 0 0:00:08 0:00:08 --:--:-- 47.1M +2026-01-30T15:28:20.4518846Z ##[group]Run mongorestore --archive=sampledata.archive --port=27017 +2026-01-30T15:28:20.4519359Z mongorestore --archive=sampledata.archive --port=27017 +2026-01-30T15:28:20.4550551Z shell: /usr/bin/bash -e {0} +2026-01-30T15:28:20.4550792Z ##[endgroup] +2026-01-30T15:28:20.4745833Z 2026-01-30T15:28:20.474+0000 preparing collections to restore from +2026-01-30T15:28:20.4771992Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.companies from archive 'sampledata.archive' +2026-01-30T15:28:20.4773522Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.embedded_movies from archive 'sampledata.archive' +2026-01-30T15:28:20.4774814Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_weatherdata.data from archive 'sampledata.archive' +2026-01-30T15:28:20.4776081Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.inspections from archive 'sampledata.archive' +2026-01-30T15:28:20.4777447Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.grades from archive 'sampledata.archive' +2026-01-30T15:28:20.4778673Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.routes from archive 'sampledata.archive' +2026-01-30T15:28:20.4779962Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_airbnb.listingsAndReviews from archive 'sampledata.archive' +2026-01-30T15:28:20.4781201Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.theaters from archive 'sampledata.archive' +2026-01-30T15:28:20.4782442Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_guides.planets from archive 'sampledata.archive' +2026-01-30T15:28:20.4783547Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_supplies.sales from archive 'sampledata.archive' +2026-01-30T15:28:20.4784526Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.zips from archive 'sampledata.archive' +2026-01-30T15:28:20.4785558Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.movies from archive 'sampledata.archive' +2026-01-30T15:28:20.4786645Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.users from archive 'sampledata.archive' +2026-01-30T15:28:20.4787859Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_restaurants.neighborhoods from archive 'sampledata.archive' +2026-01-30T15:28:20.4789027Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_analytics.transactions from archive 'sampledata.archive' +2026-01-30T15:28:20.4790133Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_analytics.accounts from archive 'sampledata.archive' +2026-01-30T15:28:20.4791268Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_analytics.customers from archive 'sampledata.archive' +2026-01-30T15:28:20.4792542Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.trips from archive 'sampledata.archive' +2026-01-30T15:28:20.4793431Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.posts from archive 'sampledata.archive' +2026-01-30T15:28:20.4794149Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_geospatial.shipwrecks from archive 'sampledata.archive' +2026-01-30T15:28:20.4794817Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.comments from archive 'sampledata.archive' +2026-01-30T15:28:20.4795477Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.sessions from archive 'sampledata.archive' +2026-01-30T15:28:20.4796149Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_restaurants.restaurants from archive 'sampledata.archive' +2026-01-30T15:28:20.4856545Z 2026-01-30T15:28:20.485+0000 restoring sample_airbnb.listingsAndReviews from archive 'sampledata.archive' +2026-01-30T15:28:21.1878962Z 2026-01-30T15:28:21.187+0000 finished restoring sample_airbnb.listingsAndReviews (5555 documents, 0 failures) +2026-01-30T15:28:21.1956611Z 2026-01-30T15:28:21.195+0000 restoring sample_analytics.transactions from archive 'sampledata.archive' +2026-01-30T15:28:21.3166838Z 2026-01-30T15:28:21.316+0000 finished restoring sample_analytics.transactions (1746 documents, 0 failures) +2026-01-30T15:28:21.3270090Z 2026-01-30T15:28:21.326+0000 restoring sample_analytics.customers from archive 'sampledata.archive' +2026-01-30T15:28:21.3397708Z 2026-01-30T15:28:21.339+0000 finished restoring sample_analytics.customers (500 documents, 0 failures) +2026-01-30T15:28:21.3477493Z 2026-01-30T15:28:21.347+0000 restoring sample_analytics.accounts from archive 'sampledata.archive' +2026-01-30T15:28:21.3672074Z 2026-01-30T15:28:21.367+0000 finished restoring sample_analytics.accounts (1746 documents, 0 failures) +2026-01-30T15:28:21.3756604Z 2026-01-30T15:28:21.375+0000 restoring sample_geospatial.shipwrecks from archive 'sampledata.archive' +2026-01-30T15:28:21.5239796Z 2026-01-30T15:28:21.523+0000 finished restoring sample_geospatial.shipwrecks (11095 documents, 0 failures) +2026-01-30T15:28:21.5316552Z 2026-01-30T15:28:21.531+0000 restoring sample_guides.planets from archive 'sampledata.archive' +2026-01-30T15:28:21.5437970Z 2026-01-30T15:28:21.543+0000 finished restoring sample_guides.planets (8 documents, 0 failures) +2026-01-30T15:28:21.5528588Z 2026-01-30T15:28:21.552+0000 restoring sample_mflix.theaters from archive 'sampledata.archive' +2026-01-30T15:28:21.5771220Z 2026-01-30T15:28:21.576+0000 finished restoring sample_mflix.theaters (1564 documents, 0 failures) +2026-01-30T15:28:21.5856986Z 2026-01-30T15:28:21.585+0000 restoring sample_mflix.comments from archive 'sampledata.archive' +2026-01-30T15:28:22.1558574Z 2026-01-30T15:28:22.155+0000 finished restoring sample_mflix.comments (41079 documents, 0 failures) +2026-01-30T15:28:22.1615890Z 2026-01-30T15:28:22.161+0000 restoring sample_mflix.embedded_movies from archive 'sampledata.archive' +2026-01-30T15:28:22.4586106Z 2026-01-30T15:28:22.458+0000 finished restoring sample_mflix.embedded_movies (3483 documents, 0 failures) +2026-01-30T15:28:22.4647484Z 2026-01-30T15:28:22.464+0000 restoring sample_mflix.movies from archive 'sampledata.archive' +2026-01-30T15:28:23.0024272Z 2026-01-30T15:28:23.002+0000 finished restoring sample_mflix.movies (21349 documents, 0 failures) +2026-01-30T15:28:23.0092392Z 2026-01-30T15:28:23.009+0000 restoring sample_mflix.sessions from archive 'sampledata.archive' +2026-01-30T15:28:23.0211974Z 2026-01-30T15:28:23.020+0000 finished restoring sample_mflix.sessions (1 document, 0 failures) +2026-01-30T15:28:23.0297549Z 2026-01-30T15:28:23.029+0000 restoring sample_mflix.users from archive 'sampledata.archive' +2026-01-30T15:28:23.0402561Z 2026-01-30T15:28:23.039+0000 finished restoring sample_mflix.users (185 documents, 0 failures) +2026-01-30T15:28:23.0488212Z 2026-01-30T15:28:23.048+0000 restoring sample_restaurants.neighborhoods from archive 'sampledata.archive' +2026-01-30T15:28:23.0782579Z 2026-01-30T15:28:23.078+0000 finished restoring sample_restaurants.neighborhoods (195 documents, 0 failures) +2026-01-30T15:28:23.0867526Z 2026-01-30T15:28:23.086+0000 restoring sample_restaurants.restaurants from archive 'sampledata.archive' +2026-01-30T15:28:23.4687012Z 2026-01-30T15:28:23.468+0000 sample_restaurants.restaurants 10.1MB +2026-01-30T15:28:23.4720305Z 2026-01-30T15:28:23.471+0000 sample_restaurants.restaurants 10.1MB +2026-01-30T15:28:23.4721355Z 2026-01-30T15:28:23.471+0000 finished restoring sample_restaurants.restaurants (25359 documents, 0 failures) +2026-01-30T15:28:23.4786234Z 2026-01-30T15:28:23.478+0000 restoring sample_supplies.sales from archive 'sampledata.archive' +2026-01-30T15:28:23.5635449Z 2026-01-30T15:28:23.563+0000 finished restoring sample_supplies.sales (5000 documents, 0 failures) +2026-01-30T15:28:23.5706582Z 2026-01-30T15:28:23.570+0000 restoring sample_training.routes from archive 'sampledata.archive' +2026-01-30T15:28:24.3381979Z 2026-01-30T15:28:24.337+0000 finished restoring sample_training.routes (66985 documents, 0 failures) +2026-01-30T15:28:24.3437376Z 2026-01-30T15:28:24.343+0000 restoring sample_training.trips from archive 'sampledata.archive' +2026-01-30T15:28:24.4834244Z 2026-01-30T15:28:24.483+0000 finished restoring sample_training.trips (10000 documents, 0 failures) +2026-01-30T15:28:24.4896038Z 2026-01-30T15:28:24.489+0000 restoring sample_training.posts from archive 'sampledata.archive' +2026-01-30T15:28:24.5911641Z 2026-01-30T15:28:24.590+0000 finished restoring sample_training.posts (500 documents, 0 failures) +2026-01-30T15:28:24.5966069Z 2026-01-30T15:28:24.596+0000 restoring sample_training.companies from archive 'sampledata.archive' +2026-01-30T15:28:24.9876997Z 2026-01-30T15:28:24.987+0000 finished restoring sample_training.companies (9500 documents, 0 failures) +2026-01-30T15:28:24.9936909Z 2026-01-30T15:28:24.993+0000 restoring sample_training.inspections from archive 'sampledata.archive' +2026-01-30T15:28:26.0450226Z 2026-01-30T15:28:26.044+0000 finished restoring sample_training.inspections (80047 documents, 0 failures) +2026-01-30T15:28:26.0508960Z 2026-01-30T15:28:26.050+0000 restoring sample_training.zips from archive 'sampledata.archive' +2026-01-30T15:28:26.3560828Z 2026-01-30T15:28:26.355+0000 finished restoring sample_training.zips (29470 documents, 0 failures) +2026-01-30T15:28:26.3697689Z 2026-01-30T15:28:26.369+0000 restoring sample_training.grades from archive 'sampledata.archive' +2026-01-30T15:28:26.4682888Z 2026-01-30T15:28:26.468+0000 sample_training.grades 1.96MB +2026-01-30T15:28:27.5184549Z 2026-01-30T15:28:27.518+0000 sample_training.grades 22.2MB +2026-01-30T15:28:27.5185499Z 2026-01-30T15:28:27.518+0000 finished restoring sample_training.grades (100000 documents, 0 failures) +2026-01-30T15:28:27.5264711Z 2026-01-30T15:28:27.526+0000 restoring sample_weatherdata.data from archive 'sampledata.archive' +2026-01-30T15:28:27.7636523Z 2026-01-30T15:28:27.763+0000 finished restoring sample_weatherdata.data (10000 documents, 0 failures) +2026-01-30T15:28:27.7637638Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_guides.planets +2026-01-30T15:28:27.7643175Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_analytics.transactions +2026-01-30T15:28:27.7644122Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_analytics.accounts +2026-01-30T15:28:27.7645116Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_analytics.customers +2026-01-30T15:28:27.7646192Z 2026-01-30T15:28:27.763+0000 restoring indexes for collection sample_geospatial.shipwrecks from metadata +2026-01-30T15:28:27.7648394Z 2026-01-30T15:28:27.763+0000 index: &idx.IndexDocument{Options:primitive.M{"2dsphereIndexVersion":3, "background":true, "name":"coordinates_2dsphere", "v":2}, Key:primitive.D{primitive.E{Key:"coordinates", Value:"2dsphere"}}, PartialFilterExpression:primitive.D(nil)} +2026-01-30T15:28:27.7650439Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_supplies.sales +2026-01-30T15:28:27.7651351Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.trips +2026-01-30T15:28:27.7652431Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.posts +2026-01-30T15:28:27.7653542Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.companies +2026-01-30T15:28:27.7654524Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.inspections +2026-01-30T15:28:27.7655466Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.grades +2026-01-30T15:28:27.7656381Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.routes +2026-01-30T15:28:27.7657259Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.zips +2026-01-30T15:28:27.7658218Z 2026-01-30T15:28:27.763+0000 restoring indexes for collection sample_mflix.theaters from metadata +2026-01-30T15:28:27.7660088Z 2026-01-30T15:28:27.763+0000 index: &idx.IndexDocument{Options:primitive.M{"2dsphereIndexVersion":3, "name":"geo index", "v":2}, Key:primitive.D{primitive.E{Key:"location.geo", Value:"2dsphere"}}, PartialFilterExpression:primitive.D(nil)} +2026-01-30T15:28:27.7662012Z 2026-01-30T15:28:27.763+0000 restoring indexes for collection sample_mflix.movies from metadata +2026-01-30T15:28:27.7665763Z 2026-01-30T15:28:27.763+0000 index: &idx.IndexDocument{Options:primitive.M{"default_language":"english", "language_override":"language", "name":"cast_text_fullplot_text_genres_text_title_text", "textIndexVersion":3, "v":2, "weights":primitive.M{"cast":1, "fullplot":1, "genres":1, "title":1}}, Key:primitive.D{primitive.E{Key:"_fts", Value:"text"}, primitive.E{Key:"_ftsx", Value:1}}, PartialFilterExpression:primitive.D(nil)} +2026-01-30T15:28:27.7675541Z 2026-01-30T15:28:27.764+0000 restoring indexes for collection sample_mflix.users from metadata +2026-01-30T15:28:27.7677455Z 2026-01-30T15:28:27.764+0000 index: &idx.IndexDocument{Options:primitive.M{"name":"email_1", "unique":true, "v":2}, Key:primitive.D{primitive.E{Key:"email", Value:1}}, PartialFilterExpression:primitive.D(nil)} +2026-01-30T15:28:27.8810296Z 2026-01-30T15:28:27.880+0000 no indexes to restore for collection sample_mflix.comments +2026-01-30T15:28:27.8812628Z 2026-01-30T15:28:27.880+0000 restoring indexes for collection sample_mflix.sessions from metadata +2026-01-30T15:28:27.8814439Z 2026-01-30T15:28:27.880+0000 index: &idx.IndexDocument{Options:primitive.M{"name":"user_id_1", "unique":true, "v":2}, Key:primitive.D{primitive.E{Key:"user_id", Value:1}}, PartialFilterExpression:primitive.D(nil)} +2026-01-30T15:28:27.9074686Z 2026-01-30T15:28:27.907+0000 no indexes to restore for collection sample_mflix.embedded_movies +2026-01-30T15:28:27.9075931Z 2026-01-30T15:28:27.907+0000 no indexes to restore for collection sample_weatherdata.data +2026-01-30T15:28:27.9077186Z 2026-01-30T15:28:27.907+0000 restoring indexes for collection sample_airbnb.listingsAndReviews from metadata +2026-01-30T15:28:27.9079471Z 2026-01-30T15:28:27.907+0000 index: &idx.IndexDocument{Options:primitive.M{"2dsphereIndexVersion":3, "background":true, "name":"address.location_2dsphere", "v":2}, Key:primitive.D{primitive.E{Key:"address.location", Value:"2dsphere"}}, PartialFilterExpression:primitive.D(nil)} +2026-01-30T15:28:27.9083262Z 2026-01-30T15:28:27.907+0000 index: &idx.IndexDocument{Options:primitive.M{"background":true, "name":"property_type_1_room_type_1_beds_1", "v":2}, Key:primitive.D{primitive.E{Key:"property_type", Value:1}, primitive.E{Key:"room_type", Value:1}, primitive.E{Key:"beds", Value:1}}, PartialFilterExpression:primitive.D(nil)} +2026-01-30T15:28:27.9086309Z 2026-01-30T15:28:27.907+0000 index: &idx.IndexDocument{Options:primitive.M{"background":true, "name":"name_1", "v":2}, Key:primitive.D{primitive.E{Key:"name", Value:1}}, PartialFilterExpression:primitive.D(nil)} +2026-01-30T15:28:27.9162098Z 2026-01-30T15:28:27.915+0000 no indexes to restore for collection sample_restaurants.neighborhoods +2026-01-30T15:28:27.9163261Z 2026-01-30T15:28:27.916+0000 no indexes to restore for collection sample_restaurants.restaurants +2026-01-30T15:28:30.0014365Z 2026-01-30T15:28:30.001+0000 425367 document(s) restored successfully. 0 document(s) failed to restore. +2026-01-30T15:28:30.0169943Z ##[group]Run actions/setup-node@v4 +2026-01-30T15:28:30.0170235Z with: +2026-01-30T15:28:30.0170420Z node-version: 20 +2026-01-30T15:28:30.0170638Z always-auth: false +2026-01-30T15:28:30.0170833Z check-latest: false +2026-01-30T15:28:30.0171163Z token: *** +2026-01-30T15:28:30.0171343Z ##[endgroup] +2026-01-30T15:28:30.2006783Z Found in cache @ /opt/hostedtoolcache/node/20.20.0/x64 +2026-01-30T15:28:30.2013936Z ##[group]Environment details +2026-01-30T15:28:30.5684087Z node: v20.20.0 +2026-01-30T15:28:30.5684444Z npm: 10.8.2 +2026-01-30T15:28:30.5684730Z yarn: 1.22.22 +2026-01-30T15:28:30.5686085Z ##[endgroup] +2026-01-30T15:28:30.5799341Z ##[group]Run npm install +2026-01-30T15:28:30.5799624Z npm install +2026-01-30T15:28:30.5841696Z shell: /usr/bin/bash -e {0} +2026-01-30T15:28:30.5841953Z ##[endgroup] +2026-01-30T15:28:40.1229025Z npm warn deprecated lodash.get@4.4.2: This package is deprecated. Use the optional chaining (?.) operator instead. +2026-01-30T15:28:40.2170997Z npm warn deprecated lodash.isequal@4.5.0: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. +2026-01-30T15:28:40.8518734Z npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. +2026-01-30T15:28:41.1380118Z npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported +2026-01-30T15:28:41.5227163Z npm warn deprecated glob@7.1.6: Glob versions prior to v9 are no longer supported +2026-01-30T15:28:43.3037437Z +2026-01-30T15:28:43.3038659Z added 456 packages, and audited 457 packages in 13s +2026-01-30T15:28:43.3039418Z +2026-01-30T15:28:43.3040002Z 63 packages are looking for funding +2026-01-30T15:28:43.3046748Z run `npm fund` for details +2026-01-30T15:28:43.3053074Z +2026-01-30T15:28:43.3053358Z found 0 vulnerabilities +2026-01-30T15:28:43.3388365Z ##[group]Run npm run test:unit -- --json --outputFile=test-results-unit.json || true +2026-01-30T15:28:43.3388968Z npm run test:unit -- --json --outputFile=test-results-unit.json || true +2026-01-30T15:28:43.3421476Z shell: /usr/bin/bash -e {0} +2026-01-30T15:28:43.3421711Z env: +2026-01-30T15:28:43.3422026Z MONGODB_URI: mongodb://localhost:27017/sample_mflix?directConnection=true +2026-01-30T15:28:43.3422569Z ##[endgroup] +2026-01-30T15:28:43.4503848Z +2026-01-30T15:28:43.4504526Z > sample-mflix-express-backend@1.0.0 test:unit +2026-01-30T15:28:43.4505467Z > jest tests/controllers --json --outputFile=test-results-unit.json +2026-01-30T15:28:43.4506007Z +2026-01-30T15:28:46.3899426Z PASS tests/controllers/movieController.test.ts +2026-01-30T15:28:46.3904386Z Movie Controller Tests +2026-01-30T15:28:46.3904782Z getAllMovies +2026-01-30T15:28:46.3907676Z ✓ should successfully retrieve movies (3 ms) +2026-01-30T15:28:46.3908480Z ✓ should handle empty results (1 ms) +2026-01-30T15:28:46.3909094Z ✓ should handle database errors (20 ms) +2026-01-30T15:28:46.3909799Z ✓ should handle query parameters for filtering (1 ms) +2026-01-30T15:28:46.3910324Z getMovieById +2026-01-30T15:28:46.3910954Z ✓ should successfully retrieve a movie by valid ID (1 ms) +2026-01-30T15:28:46.3911766Z ✓ should return 400 for invalid ObjectId format (1 ms) +2026-01-30T15:28:46.3912673Z ✓ should return 404 when movie not found (1 ms) +2026-01-30T15:28:46.3913376Z ✓ should handle database errors (1 ms) +2026-01-30T15:28:46.3913842Z createMovie +2026-01-30T15:28:46.3914348Z ✓ should successfully create a movie (1 ms) +2026-01-30T15:28:46.3914973Z ✓ should handle validation errors +2026-01-30T15:28:46.3915689Z ✓ should handle insert acknowledgment failure (14 ms) +2026-01-30T15:28:46.3916211Z createMoviesBatch +2026-01-30T15:28:46.3916800Z ✓ should successfully create multiple movies (1 ms) +2026-01-30T15:28:46.3917606Z ✓ should return 400 for invalid input (not an array) (1 ms) +2026-01-30T15:28:46.3918286Z ✓ should return 400 for empty array +2026-01-30T15:28:46.3918770Z updateMovie +2026-01-30T15:28:46.3919276Z ✓ should successfully update a movie (2 ms) +2026-01-30T15:28:46.3919959Z ✓ should return 400 for invalid ObjectId (1 ms) +2026-01-30T15:28:46.3920602Z ✓ should return 400 for empty update data +2026-01-30T15:28:46.3921220Z ✓ should return 404 when movie not found +2026-01-30T15:28:46.3921664Z deleteMovie +2026-01-30T15:28:46.3922153Z ✓ should successfully delete a movie (1 ms) +2026-01-30T15:28:46.3922943Z ✓ should return 400 for invalid ObjectId +2026-01-30T15:28:46.3923546Z ✓ should return 404 when movie not found +2026-01-30T15:28:46.3924141Z ✓ should handle database errors (1 ms) +2026-01-30T15:28:46.3924589Z updateMoviesBatch +2026-01-30T15:28:46.3925126Z ✓ should successfully update multiple movies +2026-01-30T15:28:46.3925830Z ✓ should return 400 when filter is missing (1 ms) +2026-01-30T15:28:46.3926465Z ✓ should return 400 when update is empty +2026-01-30T15:28:46.3926917Z deleteMoviesBatch +2026-01-30T15:28:46.3927475Z ✓ should successfully delete multiple movies (1 ms) +2026-01-30T15:28:46.3928582Z ✓ should return 400 when filter is missing +2026-01-30T15:28:46.3929244Z ✓ should return 400 when filter is empty (1 ms) +2026-01-30T15:28:46.3929740Z findAndDeleteMovie +2026-01-30T15:28:46.3930319Z ✓ should successfully find and delete a movie +2026-01-30T15:28:46.3931009Z ✓ should return 400 for invalid ObjectId (1 ms) +2026-01-30T15:28:46.3931677Z ✓ should return 404 when movie not found +2026-01-30T15:28:46.3932447Z ✓ should handle database errors (1 ms) +2026-01-30T15:28:46.3932918Z searchMovies +2026-01-30T15:28:46.3933297Z ✓ should successfully search movies by plot (1 ms) +2026-01-30T15:28:46.3933723Z ✓ should handle search with multiple fields +2026-01-30T15:28:46.3934427Z ✓ should return 400 when no search parameters provided +2026-01-30T15:28:46.3934902Z ✓ should return 400 for invalid search operator +2026-01-30T15:28:46.3935290Z ✓ should handle pagination parameters +2026-01-30T15:28:46.3935697Z ✓ should return empty results when no matches found +2026-01-30T15:28:46.3936002Z vectorSearchMovies +2026-01-30T15:28:46.3936343Z ✓ should successfully perform vector search (2 ms) +2026-01-30T15:28:46.3936741Z ✓ should return 400 when query is missing (1 ms) +2026-01-30T15:28:46.3937140Z ✓ should return 400 when query is empty +2026-01-30T15:28:46.3937574Z ✓ should return 400 when VOYAGE_API_KEY is not configured (1 ms) +2026-01-30T15:28:46.3938114Z ✓ should handle Voyage AI authentication errors with 401 status (1 ms) +2026-01-30T15:28:46.3938631Z ✓ should handle other Voyage AI API errors with 503 status +2026-01-30T15:28:46.3939068Z ✓ should use default limit when not provided (1 ms) +2026-01-30T15:28:46.3939434Z getMoviesWithMostRecentComments +2026-01-30T15:28:46.3939831Z ✓ should successfully get movies with comments (1 ms) +2026-01-30T15:28:46.3940259Z ✓ should filter by specific movieId when provided +2026-01-30T15:28:46.3940668Z ✓ should return 400 for invalid movieId format +2026-01-30T15:28:46.3941015Z ✓ should handle empty results +2026-01-30T15:28:46.3941379Z ✓ should use default limit when not provided (1 ms) +2026-01-30T15:28:46.3941689Z getMoviesByYearWithStats +2026-01-30T15:28:46.3942427Z ✓ should successfully get movies statistics by year +2026-01-30T15:28:46.3942960Z ✓ should handle empty results (1 ms) +2026-01-30T15:28:46.3943314Z ✓ should handle database errors (1 ms) +2026-01-30T15:28:46.3943610Z getDirectorsWithMostMovies +2026-01-30T15:28:46.3943952Z ✓ should successfully get directors statistics +2026-01-30T15:28:46.3944316Z ✓ should handle custom limit parameter +2026-01-30T15:28:46.3944676Z ✓ should use default limit when not provided +2026-01-30T15:28:46.3945028Z ✓ should handle empty results +2026-01-30T15:28:46.3945347Z ✓ should handle database errors (4 ms) +2026-01-30T15:28:46.3945524Z +2026-01-30T15:28:46.3953961Z Test Suites: 1 passed, 1 total +2026-01-30T15:28:46.3954990Z Tests: 58 passed, 58 total +2026-01-30T15:28:46.3955473Z Snapshots: 0 total +2026-01-30T15:28:46.3955831Z Time: 2.529 s +2026-01-30T15:28:46.3956328Z Ran all test suites matching /tests\/controllers/i. +2026-01-30T15:28:46.3972469Z Test results written to: test-results-unit.json +2026-01-30T15:28:46.4385359Z ##[group]Run npm run test:integration -- --json --outputFile=test-results-integration.json || true +2026-01-30T15:28:46.4386072Z npm run test:integration -- --json --outputFile=test-results-integration.json || true +2026-01-30T15:28:46.4417524Z shell: /usr/bin/bash -e {0} +2026-01-30T15:28:46.4417763Z env: +2026-01-30T15:28:46.4418086Z MONGODB_URI: mongodb://localhost:27017/sample_mflix?directConnection=true +2026-01-30T15:28:46.4418481Z ENABLE_SEARCH_TESTS: true +2026-01-30T15:28:46.4418700Z ##[endgroup] +2026-01-30T15:28:46.5490415Z +2026-01-30T15:28:46.5491258Z > sample-mflix-express-backend@1.0.0 test:integration +2026-01-30T15:28:46.5492759Z > jest --config jest.integration.config.json --json --outputFile=test-results-integration.json +2026-01-30T15:28:46.5493927Z +2026-01-30T15:28:53.7775652Z PASS tests/integration/mongodbSearch.integration.test.ts (6.259 s) +2026-01-30T15:28:53.8839873Z ● Console +2026-01-30T15:28:53.8845107Z +2026-01-30T15:28:53.8849225Z console.log +2026-01-30T15:28:53.8853292Z [dotenv@17.2.3] injecting env (0) from .env -- tip: ⚙️ specify custom .env file path with { path: '/custom/path/.env' } +2026-01-30T15:28:53.8856254Z +2026-01-30T15:28:53.8858642Z at _log (node_modules/dotenv/lib/main.js:142:11) +2026-01-30T15:28:53.8861157Z +2026-01-30T15:28:53.8863382Z console.log +2026-01-30T15:28:53.8866199Z [dotenv@17.2.3] injecting env (0) from .env -- tip: 📡 add observability to secrets: https://dotenvx.com/ops +2026-01-30T15:28:53.8873985Z +2026-01-30T15:28:53.8874302Z at _log (node_modules/dotenv/lib/main.js:142:11) +2026-01-30T15:28:53.8874688Z +2026-01-30T15:28:53.8874829Z console.error +2026-01-30T15:28:53.8876052Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":"Connected to database: sample_mflix","level":"debug"} +2026-01-30T15:28:53.8877058Z +2026-01-30T15:28:53.8877800Z   42 | database = client.db("sample_mflix"); +2026-01-30T15:28:53.8878594Z  43 | +2026-01-30T15:28:53.8879760Z > 44 | logger.debug(`Connected to database: ${database.databaseName}`); +2026-01-30T15:28:53.8880879Z  | ^ +2026-01-30T15:28:53.8881389Z  45 | +2026-01-30T15:28:53.8881961Z  46 | return database; +2026-01-30T15:28:53.8894519Z  47 | } catch (error) { +2026-01-30T15:28:53.8894906Z +2026-01-30T15:28:53.8895404Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.8896791Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.8898360Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.8899647Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.8900786Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.8902091Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.8903678Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:81:14) +2026-01-30T15:28:53.8904637Z at _connectToDatabase (src/config/database.ts:44:12) +2026-01-30T15:28:53.8905320Z at connectToDatabase (src/config/database.ts:62:10) +2026-01-30T15:28:53.8906037Z at Object. (tests/integration/setup.ts:110:5) +2026-01-30T15:28:53.8906464Z +2026-01-30T15:28:53.8906600Z console.error +2026-01-30T15:28:53.8909016Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"detective mystery"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=detective%20mystery"} +2026-01-30T15:28:53.8910618Z +2026-01-30T15:28:53.8910849Z   32 | +2026-01-30T15:28:53.8911648Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:53.8913644Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:53.8921664Z  | ^ +2026-01-30T15:28:53.8922516Z  35 | headers: { +2026-01-30T15:28:53.8923633Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:53.8925480Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:53.8926190Z +2026-01-30T15:28:53.8926697Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.8928021Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.8929579Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.8931094Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.8932094Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.8936152Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.8937460Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:53.8938574Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:53.8939577Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:53.8940377Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.8941119Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.8941720Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.8942618Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.8943301Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.8943963Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.8944824Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:53.8945754Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.8946518Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.8947118Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.8947738Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.8948394Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.8949029Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.8949768Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:28:53.8950601Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.8951344Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.8951928Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.8952708Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.8953370Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.8953982Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:28:53.8954587Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:28:53.8955239Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:28:53.8955894Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:28:53.8957025Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:28:53.8958065Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:28:53.8959058Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.8960166Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.8960926Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.8961568Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.8962350Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.8963022Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:28:53.8963835Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:28:53.8964854Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:28:53.8965282Z +2026-01-30T15:28:53.8965417Z console.error +2026-01-30T15:28:53.8966687Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=detective%20mystery 200 - 210ms"} +2026-01-30T15:28:53.8967748Z +2026-01-30T15:28:53.8969253Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:53.8970541Z  166 | +2026-01-30T15:28:53.8971854Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:53.8973317Z  | ^ +2026-01-30T15:28:53.8973818Z  168 | } +2026-01-30T15:28:53.8974168Z  169 | +2026-01-30T15:28:53.8974861Z  170 | export default logger; +2026-01-30T15:28:53.8975333Z +2026-01-30T15:28:53.8975825Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.8977166Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.8978740Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.8979991Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.8980978Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.8982539Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.8983792Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:53.8984578Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:53.8985364Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:53.8985889Z +2026-01-30T15:28:53.8986031Z console.error +2026-01-30T15:28:53.8987979Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"xyzabc123nonexistent"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=xyzabc123nonexistent"} +2026-01-30T15:28:53.8989629Z +2026-01-30T15:28:53.8989836Z   32 | +2026-01-30T15:28:53.8990636Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:53.8992063Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:53.8993304Z  | ^ +2026-01-30T15:28:53.8993925Z  35 | headers: { +2026-01-30T15:28:53.8995225Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:53.8996766Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:53.8997495Z +2026-01-30T15:28:53.8997981Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.8999320Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9000893Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9002149Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9003579Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9004893Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9006144Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:53.9007263Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:53.9008253Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:53.9009051Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9009808Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9010408Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9011037Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9011691Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9012575Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9013448Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:53.9014433Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9015188Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9015786Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9016406Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9017050Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9017691Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9018437Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:28:53.9019282Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9020077Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9020683Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9021312Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9021957Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9022720Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:28:53.9023310Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:28:53.9023967Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:28:53.9024622Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:28:53.9025263Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:28:53.9026003Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:28:53.9026792Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9027538Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9028135Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9028774Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9029410Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9030074Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:28:53.9031365Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:28:53.9032376Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:28:53.9032823Z +2026-01-30T15:28:53.9032959Z console.error +2026-01-30T15:28:53.9034421Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=xyzabc123nonexistent 200 - 10ms"} +2026-01-30T15:28:53.9035671Z +2026-01-30T15:28:53.9037626Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:53.9039116Z  166 | +2026-01-30T15:28:53.9040630Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:53.9041834Z  | ^ +2026-01-30T15:28:53.9042612Z  168 | } +2026-01-30T15:28:53.9043022Z  169 | +2026-01-30T15:28:53.9043702Z  170 | export default logger; +2026-01-30T15:28:53.9044187Z +2026-01-30T15:28:53.9044668Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9046017Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9047601Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9048842Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9049841Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9051148Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9052534Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:53.9053331Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:53.9054109Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:53.9054626Z +2026-01-30T15:28:53.9054760Z console.error +2026-01-30T15:28:53.9056599Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"directors":"Spielberg"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?directors=Spielberg"} +2026-01-30T15:28:53.9058143Z +2026-01-30T15:28:53.9058341Z   32 | +2026-01-30T15:28:53.9059149Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:53.9060560Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:53.9061623Z  | ^ +2026-01-30T15:28:53.9062384Z  35 | headers: { +2026-01-30T15:28:53.9063585Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:53.9065098Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:53.9065807Z +2026-01-30T15:28:53.9066296Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9067623Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9069208Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9070460Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9071651Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9073148Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9074393Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:53.9075507Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:53.9076488Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:53.9077286Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9078048Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9078831Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9079639Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9080482Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9081310Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9082542Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:53.9083659Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9084981Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9085762Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9086380Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9087029Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9087662Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9088422Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:28:53.9089263Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9090017Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9090926Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9091566Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9092334Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9093048Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:28:53.9093629Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:28:53.9094288Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:28:53.9094937Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:28:53.9095600Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:28:53.9096491Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:28:53.9097469Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9098237Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9098829Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9099460Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9100107Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9100762Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:28:53.9101572Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:28:53.9102527Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:28:53.9102954Z +2026-01-30T15:28:53.9103089Z console.error +2026-01-30T15:28:53.9104294Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?directors=Spielberg 200 - 15ms"} +2026-01-30T15:28:53.9105323Z +2026-01-30T15:28:53.9106801Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:53.9108095Z  166 | +2026-01-30T15:28:53.9109639Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:53.9110866Z  | ^ +2026-01-30T15:28:53.9111384Z  168 | } +2026-01-30T15:28:53.9111771Z  169 | +2026-01-30T15:28:53.9112604Z  170 | export default logger; +2026-01-30T15:28:53.9113081Z +2026-01-30T15:28:53.9113615Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9114948Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9116726Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9117974Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9118962Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9120260Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9121481Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:53.9122419Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:53.9123214Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:53.9123733Z +2026-01-30T15:28:53.9123871Z console.error +2026-01-30T15:28:53.9125670Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"cast":"Tom Hanks"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?cast=Tom%20Hanks"} +2026-01-30T15:28:53.9127145Z +2026-01-30T15:28:53.9127347Z   32 | +2026-01-30T15:28:53.9128148Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:53.9129573Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:53.9130875Z  | ^ +2026-01-30T15:28:53.9131501Z  35 | headers: { +2026-01-30T15:28:53.9132784Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:53.9134301Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:53.9135032Z +2026-01-30T15:28:53.9135515Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9136854Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9138425Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9139679Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9140675Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9142111Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9143646Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:53.9144917Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:53.9146083Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:53.9146872Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9147629Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9148422Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9149064Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9149719Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9150350Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9151191Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:53.9152120Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9153049Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9153656Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9154465Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9155103Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9155734Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9156487Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:28:53.9157315Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9158058Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9158646Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9159255Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9159898Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9160492Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:28:53.9161074Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:28:53.9161728Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:28:53.9162535Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:28:53.9163182Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:28:53.9163928Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:28:53.9164712Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9165462Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9166052Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9166658Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9167297Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9167966Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:28:53.9168775Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:28:53.9169590Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:28:53.9170016Z +2026-01-30T15:28:53.9170161Z console.error +2026-01-30T15:28:53.9171329Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?cast=Tom%20Hanks 200 - 9ms"} +2026-01-30T15:28:53.9172470Z +2026-01-30T15:28:53.9173929Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:53.9175213Z  166 | +2026-01-30T15:28:53.9176485Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:53.9177692Z  | ^ +2026-01-30T15:28:53.9178212Z  168 | } +2026-01-30T15:28:53.9178596Z  169 | +2026-01-30T15:28:53.9179272Z  170 | export default logger; +2026-01-30T15:28:53.9179745Z +2026-01-30T15:28:53.9180237Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9181567Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9183487Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9184750Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9185736Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9187026Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9188255Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:53.9189039Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:53.9189989Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:53.9190509Z +2026-01-30T15:28:53.9190640Z console.error +2026-01-30T15:28:53.9192758Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"adventure","limit":"5"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=adventure&limit=5"} +2026-01-30T15:28:53.9194351Z +2026-01-30T15:28:53.9194572Z   32 | +2026-01-30T15:28:53.9195360Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:53.9196788Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:53.9197850Z  | ^ +2026-01-30T15:28:53.9198453Z  35 | headers: { +2026-01-30T15:28:53.9199532Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:53.9201025Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:53.9201739Z +2026-01-30T15:28:53.9202375Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9203731Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9205310Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9206560Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9207557Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9208862Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9209960Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:53.9211084Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:53.9212083Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:53.9213088Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9213912Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9214513Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9215134Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9215784Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9216420Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9217252Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:53.9218189Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9218943Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9219528Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9220387Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9221059Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9221697Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9222634Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:28:53.9223479Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9224224Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9224825Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9225440Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9226084Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9226876Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:28:53.9227451Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:28:53.9228101Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:28:53.9228750Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:28:53.9229400Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:28:53.9230322Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:28:53.9231577Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9232599Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9233218Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9233857Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9234510Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9235464Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:28:53.9236290Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:28:53.9237093Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:28:53.9237529Z +2026-01-30T15:28:53.9237660Z console.error +2026-01-30T15:28:53.9238891Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=adventure&limit=5 200 - 8ms"} +2026-01-30T15:28:53.9239934Z +2026-01-30T15:28:53.9241699Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:53.9243180Z  166 | +2026-01-30T15:28:53.9244778Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:53.9246015Z  | ^ +2026-01-30T15:28:53.9246530Z  168 | } +2026-01-30T15:28:53.9246922Z  169 | +2026-01-30T15:28:53.9247597Z  170 | export default logger; +2026-01-30T15:28:53.9248073Z +2026-01-30T15:28:53.9248568Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9249909Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9251478Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9252893Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9254194Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9255653Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9257060Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:53.9257854Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:53.9258855Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:53.9259391Z +2026-01-30T15:28:53.9259525Z console.error +2026-01-30T15:28:53.9261535Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"adventure","limit":"5","skip":"0"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=adventure&limit=5&skip=0"} +2026-01-30T15:28:53.9263365Z +2026-01-30T15:28:53.9263582Z   32 | +2026-01-30T15:28:53.9264380Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:53.9265796Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:53.9267061Z  | ^ +2026-01-30T15:28:53.9267663Z  35 | headers: { +2026-01-30T15:28:53.9268746Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:53.9270240Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:53.9270952Z +2026-01-30T15:28:53.9271463Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9273084Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9274798Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9276410Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9277648Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9279066Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9280490Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:53.9281731Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:53.9283071Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:53.9284067Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9285214Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9285935Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9286748Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9287546Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9288339Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9289355Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:53.9306180Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9307011Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9307627Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9308294Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9308957Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9309598Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9310367Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:28:53.9311223Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9311985Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9312803Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9313442Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9314135Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9315028Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:28:53.9315628Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:28:53.9316294Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:28:53.9316957Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:28:53.9317598Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:28:53.9318329Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:28:53.9319124Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9319873Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9320670Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9321297Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9321940Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9322787Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:28:53.9323595Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:28:53.9324411Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:28:53.9324842Z +2026-01-30T15:28:53.9324982Z console.error +2026-01-30T15:28:53.9326269Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=adventure&limit=5&skip=0 200 - 13ms"} +2026-01-30T15:28:53.9327350Z +2026-01-30T15:28:53.9328872Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:53.9330167Z  166 | +2026-01-30T15:28:53.9331752Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:53.9333176Z  | ^ +2026-01-30T15:28:53.9333695Z  168 | } +2026-01-30T15:28:53.9334087Z  169 | +2026-01-30T15:28:53.9334766Z  170 | export default logger; +2026-01-30T15:28:53.9335246Z +2026-01-30T15:28:53.9335725Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9337058Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9338622Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9339864Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9340855Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9342152Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9343546Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:53.9344344Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:53.9345128Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:53.9345654Z +2026-01-30T15:28:53.9345786Z console.error +2026-01-30T15:28:53.9347809Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"adventure","limit":"5","skip":"5"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=adventure&limit=5&skip=5"} +2026-01-30T15:28:53.9349484Z +2026-01-30T15:28:53.9349690Z   32 | +2026-01-30T15:28:53.9350493Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:53.9352114Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:53.9353477Z  | ^ +2026-01-30T15:28:53.9354095Z  35 | headers: { +2026-01-30T15:28:53.9355166Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:53.9356667Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:53.9357376Z +2026-01-30T15:28:53.9357869Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9359378Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9360940Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9362341Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9363348Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9364650Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9365882Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:53.9366990Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:53.9367982Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:53.9368785Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9369573Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9370170Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9370802Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9371448Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9372086Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9373071Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:53.9373997Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9374750Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9375344Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9375956Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9376602Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9377245Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9377983Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:28:53.9378821Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9379584Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9380174Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9380791Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9381431Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9382024Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:28:53.9382762Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:28:53.9383418Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:28:53.9384064Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:28:53.9384715Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:28:53.9385717Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:28:53.9386501Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9387249Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9388056Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9388701Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9389350Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9390000Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:28:53.9390809Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:28:53.9391612Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:28:53.9392032Z +2026-01-30T15:28:53.9392341Z console.error +2026-01-30T15:28:53.9393616Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=adventure&limit=5&skip=5 200 - 14ms"} +2026-01-30T15:28:53.9394927Z +2026-01-30T15:28:53.9396384Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:53.9397672Z  166 | +2026-01-30T15:28:53.9398943Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:53.9400141Z  | ^ +2026-01-30T15:28:53.9400661Z  168 | } +2026-01-30T15:28:53.9401047Z  169 | +2026-01-30T15:28:53.9401730Z  170 | export default logger; +2026-01-30T15:28:53.9402370Z +2026-01-30T15:28:53.9402863Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9404215Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9405784Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9407038Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9408018Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9409308Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9410532Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:53.9411306Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:53.9412083Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:53.9412737Z +2026-01-30T15:28:53.9412891Z console.error +2026-01-30T15:28:53.9415277Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"detective","directors":"Nolan","searchOperator":"must"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=detective&directors=Nolan&searchOperator=must"} +2026-01-30T15:28:53.9417261Z +2026-01-30T15:28:53.9417463Z   32 | +2026-01-30T15:28:53.9418261Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:53.9419671Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:53.9420713Z  | ^ +2026-01-30T15:28:53.9421332Z  35 | headers: { +2026-01-30T15:28:53.9422551Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:53.9424050Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:53.9424780Z +2026-01-30T15:28:53.9425448Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9427205Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9428784Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9430020Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9431191Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9432702Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9434152Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:53.9435262Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:53.9436258Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:53.9437054Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9437802Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9438399Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9439013Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9439659Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9440285Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9441122Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:53.9442053Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9442977Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9443578Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9444204Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9444852Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9445450Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9446169Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:28:53.9446996Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9447743Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9448335Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9448947Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9449590Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9450189Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:28:53.9462687Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:28:53.9463410Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:28:53.9464091Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:28:53.9464801Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:28:53.9465563Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:28:53.9466360Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9467128Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9467731Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9468353Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9469001Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9469664Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:28:53.9470669Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:28:53.9471699Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:28:53.9472134Z +2026-01-30T15:28:53.9472438Z console.error +2026-01-30T15:28:53.9474122Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=detective&directors=Nolan&searchOperator=must 200 - 9ms"} +2026-01-30T15:28:53.9475369Z +2026-01-30T15:28:53.9477189Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:53.9478495Z  166 | +2026-01-30T15:28:53.9479784Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:53.9481325Z  | ^ +2026-01-30T15:28:53.9482055Z  168 | } +2026-01-30T15:28:53.9482649Z  169 | +2026-01-30T15:28:53.9483338Z  170 | export default logger; +2026-01-30T15:28:53.9483807Z +2026-01-30T15:28:53.9484311Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9485639Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9487546Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9488799Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9489784Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9491064Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9492442Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:53.9493233Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:53.9494021Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:53.9494566Z +2026-01-30T15:28:54.1870447Z PASS tests/integration/movie.integration.test.ts (6.74 s) +2026-01-30T15:28:54.2238630Z ● Console +2026-01-30T15:28:54.2241902Z +2026-01-30T15:28:54.2242060Z console.log +2026-01-30T15:28:54.2243393Z [dotenv@17.2.3] injecting env (0) from .env -- tip: 🗂️ backup and recover secrets: https://dotenvx.com/ops +2026-01-30T15:28:54.2244119Z +2026-01-30T15:28:54.2244399Z at _log (node_modules/dotenv/lib/main.js:142:11) +2026-01-30T15:28:54.2244779Z +2026-01-30T15:28:54.2244912Z console.log +2026-01-30T15:28:54.2245923Z [dotenv@17.2.3] injecting env (0) from .env -- tip: 📡 add observability to secrets: https://dotenvx.com/ops +2026-01-30T15:28:54.2246672Z +2026-01-30T15:28:54.2246945Z at _log (node_modules/dotenv/lib/main.js:142:11) +2026-01-30T15:28:54.2247311Z +2026-01-30T15:28:54.2247455Z console.error +2026-01-30T15:28:54.2248631Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":"Connected to database: sample_mflix","level":"debug"} +2026-01-30T15:28:54.2249640Z +2026-01-30T15:28:54.2250324Z   42 | database = client.db("sample_mflix"); +2026-01-30T15:28:54.2251232Z  43 | +2026-01-30T15:28:54.2252551Z > 44 | logger.debug(`Connected to database: ${database.databaseName}`); +2026-01-30T15:28:54.2253658Z  | ^ +2026-01-30T15:28:54.2254166Z  45 | +2026-01-30T15:28:54.2254733Z  46 | return database; +2026-01-30T15:28:54.2255442Z  47 | } catch (error) { +2026-01-30T15:28:54.2255794Z +2026-01-30T15:28:54.2256281Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2258025Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2259631Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2261295Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2262418Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2263720Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2265096Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:81:14) +2026-01-30T15:28:54.2266046Z at _connectToDatabase (src/config/database.ts:44:12) +2026-01-30T15:28:54.2266968Z at connectToDatabase (src/config/database.ts:62:10) +2026-01-30T15:28:54.2267682Z at Object. (tests/integration/setup.ts:110:5) +2026-01-30T15:28:54.2268099Z +2026-01-30T15:28:54.2268234Z console.error +2026-01-30T15:28:54.2269941Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} +2026-01-30T15:28:54.2271319Z +2026-01-30T15:28:54.2271533Z   32 | +2026-01-30T15:28:54.2272649Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:54.2274075Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:54.2275119Z  | ^ +2026-01-30T15:28:54.2275747Z  35 | headers: { +2026-01-30T15:28:54.2276830Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:54.2278324Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:54.2279027Z +2026-01-30T15:28:54.2279515Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2280825Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2282557Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2283799Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2284792Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2286081Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2287299Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:54.2288406Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:54.2289381Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:54.2290175Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2290930Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2291524Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2292155Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2292950Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2293591Z at read (node_modules/body-parser/lib/read.js:42:5) +2026-01-30T15:28:54.2294440Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:54.2295356Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2296100Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2296885Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2297517Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2298169Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2298777Z at node_modules/body-parser/lib/read.js:171:5 +2026-01-30T15:28:54.2299453Z at invokeCallback (node_modules/raw-body/index.js:238:16) +2026-01-30T15:28:54.2300132Z at done (node_modules/raw-body/index.js:227:7) +2026-01-30T15:28:54.2300857Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) +2026-01-30T15:28:54.2301326Z +2026-01-30T15:28:54.2301461Z console.error +2026-01-30T15:28:54.2302646Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 16ms"} +2026-01-30T15:28:54.2303702Z +2026-01-30T15:28:54.2305170Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:54.2306436Z  166 | +2026-01-30T15:28:54.2307708Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:54.2308897Z  | ^ +2026-01-30T15:28:54.2309406Z  168 | } +2026-01-30T15:28:54.2309807Z  169 | +2026-01-30T15:28:54.2310494Z  170 | export default logger; +2026-01-30T15:28:54.2310967Z +2026-01-30T15:28:54.2311452Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2312970Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2314552Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2315799Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2316781Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2318087Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2319312Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:54.2320098Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:54.2320875Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:54.2321392Z +2026-01-30T15:28:54.2321535Z console.error +2026-01-30T15:28:54.2323329Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} +2026-01-30T15:28:54.2324719Z +2026-01-30T15:28:54.2324915Z   32 | +2026-01-30T15:28:54.2325703Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:54.2327098Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:54.2328150Z  | ^ +2026-01-30T15:28:54.2328763Z  35 | headers: { +2026-01-30T15:28:54.2329831Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:54.2331304Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:54.2332017Z +2026-01-30T15:28:54.2332627Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2334135Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2336197Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2337443Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2338423Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2339707Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2340927Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:54.2342402Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:54.2343383Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:54.2344190Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2344943Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2345535Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2346164Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2346807Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2347436Z at read (node_modules/body-parser/lib/read.js:42:5) +2026-01-30T15:28:54.2348275Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:54.2349199Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2349946Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2350548Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2351159Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2351852Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2352606Z at node_modules/body-parser/lib/read.js:171:5 +2026-01-30T15:28:54.2353299Z at invokeCallback (node_modules/raw-body/index.js:238:16) +2026-01-30T15:28:54.2353975Z at done (node_modules/raw-body/index.js:227:7) +2026-01-30T15:28:54.2354698Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) +2026-01-30T15:28:54.2355183Z +2026-01-30T15:28:54.2355317Z console.error +2026-01-30T15:28:54.2394827Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":"Error occurred: Missing required fields: title","stack":"ValidationError: Missing required fields: title\n at validateRequiredFields (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/src/utils/errorHandler.ts:209:11)\n at createMovie (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/src/controllers/movieController.ts:211:25)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/src/utils/errorHandler.ts:142:7\n at Layer.handleRequest (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/layer.js:152:17)\n at next (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/route.js:157:13)\n at Route.dispatch (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/route.js:117:3)\n at handle (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:435:11)\n at Layer.handleRequest (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/layer.js:152:17)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:295:15\n at processParams (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:582:12)\n at next (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:291:5)\n at Function.handle (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:186:3)\n at router (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:60:12)\n at Layer.handleRequest (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/layer.js:152:17)\n at trimPrefix (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:342:13)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:297:9\n at processParams (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:582:12)\n at next (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:291:5)\n at requestLogger (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/src/middleware/requestLogger.ts:49:3)\n at Layer.handleRequest (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/layer.js:152:17)\n at trimPrefix (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:342:13)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:297:9\n at processParams (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:582:12)\n at next (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:291:5)\n at read (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/body-parser/lib/read.js:42:5)\n at urlencodedParser (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/body-parser/lib/types/urlencoded.js:57:5)\n at Layer.handleRequest (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/layer.js:152:17)\n at trimPrefix (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:342:13)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:297:9\n at processParams (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:582:12)\n at next (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:291:5)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/body-parser/lib/read.js:171:5\n at AsyncResource.runInAsyncScope (node:async_hooks:206:9)\n at invokeCallback (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/raw-body/index.js:238:16)\n at done (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/raw-body/index.js:227:7)\n at IncomingMessage.onEnd (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/raw-body/index.js:287:7)\n at IncomingMessage.emit (node:events:524:28)\n at endReadableNT (node:internal/streams/readable:1698:12)\n at processTicksAndRejections (node:internal/process/task_queues:82:21)","url":"/api/movies","method":"POST","level":"error"} +2026-01-30T15:28:54.2428510Z +2026-01-30T15:28:54.2429145Z   40 | // Log the error for debugging purposes +2026-01-30T15:28:54.2430272Z  41 | // The logger automatically handles environment-specific behavior +2026-01-30T15:28:54.2431545Z > 42 | logger.error("Error occurred:", { +2026-01-30T15:28:54.2432583Z  | ^ +2026-01-30T15:28:54.2433562Z  43 | message: err.message, +2026-01-30T15:28:54.2434436Z  44 | stack: err.stack, +2026-01-30T15:28:54.2435267Z  45 | url: req.url, +2026-01-30T15:28:54.2435678Z +2026-01-30T15:28:54.2436167Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2437484Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2439050Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2440461Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2441441Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2442880Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2444105Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:54.2445206Z at DerivedLogger. [as error] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:54.2446145Z at errorHandler (src/utils/errorHandler.ts:42:10) +2026-01-30T15:28:54.2446884Z at Layer.handleError (node_modules/router/lib/layer.js:116:17) +2026-01-30T15:28:54.2447639Z at trimPrefix (node_modules/router/index.js:340:13) +2026-01-30T15:28:54.2448253Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2448887Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2449542Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2450115Z at node_modules/router/index.js:688:15 +2026-01-30T15:28:54.2450682Z at next (node_modules/router/index.js:276:14) +2026-01-30T15:28:54.2451303Z at next (node_modules/router/lib/route.js:132:14) +2026-01-30T15:28:54.2451733Z +2026-01-30T15:28:54.2451869Z console.error +2026-01-30T15:28:54.2453109Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"warn","message":"POST /api/movies 400 - 29ms"} +2026-01-30T15:28:54.2454081Z +2026-01-30T15:28:54.2455490Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:54.2456763Z  166 | +2026-01-30T15:28:54.2458036Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:54.2459231Z  | ^ +2026-01-30T15:28:54.2459735Z  168 | } +2026-01-30T15:28:54.2460121Z  169 | +2026-01-30T15:28:54.2461126Z  170 | export default logger; +2026-01-30T15:28:54.2461596Z +2026-01-30T15:28:54.2462076Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2463542Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2465104Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2466333Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2467314Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2468606Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2469812Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:54.2470775Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:54.2471565Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:54.2472080Z +2026-01-30T15:28:54.2472357Z console.error +2026-01-30T15:28:54.2474078Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies/batch"} +2026-01-30T15:28:54.2475485Z +2026-01-30T15:28:54.2475694Z   32 | +2026-01-30T15:28:54.2476482Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:54.2478070Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:54.2479120Z  | ^ +2026-01-30T15:28:54.2479727Z  35 | headers: { +2026-01-30T15:28:54.2480804Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:54.2482467Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:54.2483181Z +2026-01-30T15:28:54.2483668Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2484986Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2486538Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2487809Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2488800Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2490095Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2491313Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:54.2492549Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:54.2493539Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:54.2494328Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2495077Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2495669Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2496294Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2496935Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2497573Z at read (node_modules/body-parser/lib/read.js:42:5) +2026-01-30T15:28:54.2498418Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:54.2499338Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2500087Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2500679Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2501289Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2501930Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2502668Z at node_modules/body-parser/lib/read.js:171:5 +2026-01-30T15:28:54.2503345Z at invokeCallback (node_modules/raw-body/index.js:238:16) +2026-01-30T15:28:54.2504018Z at done (node_modules/raw-body/index.js:227:7) +2026-01-30T15:28:54.2504757Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) +2026-01-30T15:28:54.2505228Z +2026-01-30T15:28:54.2505363Z console.error +2026-01-30T15:28:54.2506586Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST /batch 201 - 8ms"} +2026-01-30T15:28:54.2507492Z +2026-01-30T15:28:54.2508901Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:54.2510180Z  166 | +2026-01-30T15:28:54.2511446Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:54.2512782Z  | ^ +2026-01-30T15:28:54.2513298Z  168 | } +2026-01-30T15:28:54.2513882Z  169 | +2026-01-30T15:28:54.2514561Z  170 | export default logger; +2026-01-30T15:28:54.2515027Z +2026-01-30T15:28:54.2515508Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2516840Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2518391Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2519623Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2520598Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2521876Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2523243Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:54.2524035Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:54.2524811Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:54.2525324Z +2026-01-30T15:28:54.2525464Z console.error +2026-01-30T15:28:54.2527145Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies/batch"} +2026-01-30T15:28:54.2528555Z +2026-01-30T15:28:54.2528750Z   32 | +2026-01-30T15:28:54.2529547Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:54.2530948Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:54.2531981Z  | ^ +2026-01-30T15:28:54.2532751Z  35 | headers: { +2026-01-30T15:28:54.2533823Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:54.2535301Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:54.2536018Z +2026-01-30T15:28:54.2536493Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2537816Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2539364Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2540601Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2541582Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2543008Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2544227Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:54.2545554Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:54.2546554Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:54.2547345Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2548090Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2548680Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2549299Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2549942Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2550576Z at read (node_modules/body-parser/lib/read.js:42:5) +2026-01-30T15:28:54.2551582Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:54.2552695Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2553435Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2554036Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2554655Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2555286Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2555894Z at node_modules/body-parser/lib/read.js:171:5 +2026-01-30T15:28:54.2556575Z at invokeCallback (node_modules/raw-body/index.js:238:16) +2026-01-30T15:28:54.2557239Z at done (node_modules/raw-body/index.js:227:7) +2026-01-30T15:28:54.2557967Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) +2026-01-30T15:28:54.2558442Z +2026-01-30T15:28:54.2558580Z console.error +2026-01-30T15:28:54.2559623Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"warn","message":"POST /batch 400 - 1ms"} +2026-01-30T15:28:54.2560823Z +2026-01-30T15:28:54.2562139Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:54.2563612Z  166 | +2026-01-30T15:28:54.2564885Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:54.2566084Z  | ^ +2026-01-30T15:28:54.2566595Z  168 | } +2026-01-30T15:28:54.2566981Z  169 | +2026-01-30T15:28:54.2567660Z  170 | export default logger; +2026-01-30T15:28:54.2568133Z +2026-01-30T15:28:54.2568620Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2569941Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2571510Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2572888Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2573872Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2575158Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2576373Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:54.2577150Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:54.2577913Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:54.2578438Z +2026-01-30T15:28:54.2578571Z console.error +2026-01-30T15:28:54.2580401Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} +2026-01-30T15:28:54.2581783Z +2026-01-30T15:28:54.2581991Z   32 | +2026-01-30T15:28:54.2582927Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:54.2584340Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:54.2585388Z  | ^ +2026-01-30T15:28:54.2586002Z  35 | headers: { +2026-01-30T15:28:54.2587072Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:54.2588740Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:54.2589456Z +2026-01-30T15:28:54.2589941Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2591275Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2592984Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2594221Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2595215Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2596502Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2597717Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:54.2598836Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:54.2599823Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:54.2600613Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2601365Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2601967Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2602754Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2603401Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2604033Z at read (node_modules/body-parser/lib/read.js:42:5) +2026-01-30T15:28:54.2604870Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:54.2605797Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2606550Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2607135Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2607757Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2608392Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2608996Z at node_modules/body-parser/lib/read.js:171:5 +2026-01-30T15:28:54.2609678Z at invokeCallback (node_modules/raw-body/index.js:238:16) +2026-01-30T15:28:54.2610350Z at done (node_modules/raw-body/index.js:227:7) +2026-01-30T15:28:54.2611083Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) +2026-01-30T15:28:54.2611559Z +2026-01-30T15:28:54.2611701Z console.error +2026-01-30T15:28:54.2612846Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 8ms"} +2026-01-30T15:28:54.2613738Z +2026-01-30T15:28:54.2615001Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:54.2616299Z  166 | +2026-01-30T15:28:54.2617762Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:54.2618992Z  | ^ +2026-01-30T15:28:54.2619512Z  168 | } +2026-01-30T15:28:54.2619906Z  169 | +2026-01-30T15:28:54.2620577Z  170 | export default logger; +2026-01-30T15:28:54.2621051Z +2026-01-30T15:28:54.2621529Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2623017Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2624572Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2626003Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2627006Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2628296Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2629516Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:54.2630297Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:54.2631073Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:54.2631591Z +2026-01-30T15:28:54.2631724Z console.error +2026-01-30T15:28:54.2633472Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/697cce35e56c4fd35ac6c981"} +2026-01-30T15:28:54.2634777Z +2026-01-30T15:28:54.2634986Z   32 | +2026-01-30T15:28:54.2635775Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:54.2637183Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:54.2638236Z  | ^ +2026-01-30T15:28:54.2638839Z  35 | headers: { +2026-01-30T15:28:54.2639912Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:54.2641400Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:54.2642107Z +2026-01-30T15:28:54.2642721Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2644053Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2645628Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2646860Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2647843Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2649132Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2650346Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:54.2651442Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:54.2652640Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:54.2653461Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2654208Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2654808Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2655596Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2656263Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2656901Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:54.2657738Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:54.2658664Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2659410Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2660001Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2660743Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2661391Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2662325Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:54.2663084Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:28:54.2663925Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2664665Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2665257Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2665869Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2666507Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2667103Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:28:54.2667676Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:28:54.2668322Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:28:54.2668967Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:28:54.2669605Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:28:54.2670345Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:28:54.2671129Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2671871Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2672597Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2673209Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2673841Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2674500Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:28:54.2675300Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:28:54.2676099Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:28:54.2676517Z +2026-01-30T15:28:54.2676651Z console.error +2026-01-30T15:28:54.2677810Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /697cce35e56c4fd35ac6c981 200 - 5ms"} +2026-01-30T15:28:54.2678798Z +2026-01-30T15:28:54.2680209Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:54.2681486Z  166 | +2026-01-30T15:28:54.2682902Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:54.2684101Z  | ^ +2026-01-30T15:28:54.2684608Z  168 | } +2026-01-30T15:28:54.2685002Z  169 | +2026-01-30T15:28:54.2685671Z  170 | export default logger; +2026-01-30T15:28:54.2686145Z +2026-01-30T15:28:54.2686624Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2687952Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2689675Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2690934Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2691917Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2693358Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2694568Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:54.2695352Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:54.2696123Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:54.2696822Z +2026-01-30T15:28:54.2696957Z console.error +2026-01-30T15:28:54.2698509Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/697cce35e56c4fd35ac6c982"} +2026-01-30T15:28:54.2699810Z +2026-01-30T15:28:54.2700022Z   32 | +2026-01-30T15:28:54.2700815Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:54.2702392Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:54.2703213Z  | ^ +2026-01-30T15:28:54.2703580Z  35 | headers: { +2026-01-30T15:28:54.2704188Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:54.2704996Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:54.2705397Z +2026-01-30T15:28:54.2705669Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2706390Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2707229Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2707898Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2708432Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2709131Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2709790Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:54.2710398Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:54.2710949Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:54.2711394Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2711813Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2712150Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2712722Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2713080Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2713440Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:54.2713901Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:54.2714403Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2714818Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2715155Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2715492Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2715847Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2716336Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:54.2716752Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:28:54.2717205Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2717608Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2717934Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2718280Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2718627Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2718960Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:28:54.2719281Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:28:54.2719749Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:28:54.2720110Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:28:54.2720463Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:28:54.2720866Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:28:54.2721292Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2721704Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2722035Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2722589Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2722947Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2723308Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:28:54.2723752Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:28:54.2724205Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:28:54.2724433Z +2026-01-30T15:28:54.2724514Z console.error +2026-01-30T15:28:54.2725167Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"warn","message":"GET /697cce35e56c4fd35ac6c982 404 - 3ms"} +2026-01-30T15:28:54.2725763Z +2026-01-30T15:28:54.2726527Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:54.2727216Z  166 | +2026-01-30T15:28:54.2727907Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:54.2728556Z  | ^ +2026-01-30T15:28:54.2728840Z  168 | } +2026-01-30T15:28:54.2729062Z  169 | +2026-01-30T15:28:54.2729444Z  170 | export default logger; +2026-01-30T15:28:54.2729700Z +2026-01-30T15:28:54.2729967Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2730699Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2731548Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2732328Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2732866Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2733559Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2734216Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:54.2734645Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:54.2735070Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:54.2735348Z +2026-01-30T15:28:54.2735434Z console.error +2026-01-30T15:28:54.2736371Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/invalid-id"} +2026-01-30T15:28:54.2737051Z +2026-01-30T15:28:54.2737168Z   32 | +2026-01-30T15:28:54.2737616Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:54.2738382Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:54.2738961Z  | ^ +2026-01-30T15:28:54.2739304Z  35 | headers: { +2026-01-30T15:28:54.2740010Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:54.2740828Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:54.2741222Z +2026-01-30T15:28:54.2741489Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2742363Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2743237Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2743907Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2744441Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2745129Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2745797Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:54.2746406Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:54.2746950Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:54.2747424Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2747854Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2748185Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2748538Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2748897Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2749247Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:54.2749713Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:54.2750228Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2750642Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2750977Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2751328Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2751680Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2752067Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:54.2752595Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:28:54.2753056Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2753463Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2753799Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2754167Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2754537Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2754868Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:28:54.2755193Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:28:54.2755687Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:28:54.2756053Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:28:54.2756414Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:28:54.2756827Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:28:54.2757252Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2757665Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2757992Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2758324Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2758680Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2759173Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:28:54.2759623Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:28:54.2760075Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:28:54.2760304Z +2026-01-30T15:34:58.4859828Z FAIL tests/integration/advancedEndpoints.integration.test.ts (370.976 s) +2026-01-30T15:34:58.5544994Z ● Console +2026-01-30T15:34:58.5545532Z +2026-01-30T15:34:58.5565709Z console.log +2026-01-30T15:34:58.5566897Z [dotenv@17.2.3] injecting env (0) from .env -- tip: ⚙️ write to custom object with { processEnv: myObject } +2026-01-30T15:34:58.5567622Z +2026-01-30T15:34:58.5567901Z at _log (node_modules/dotenv/lib/main.js:142:11) +2026-01-30T15:34:58.5568282Z +2026-01-30T15:34:58.5568422Z console.log +2026-01-30T15:34:58.5569466Z [dotenv@17.2.3] injecting env (0) from .env -- tip: 🔑 add access controls to secrets: https://dotenvx.com/ops +2026-01-30T15:34:58.5570238Z +2026-01-30T15:34:58.5570511Z at _log (node_modules/dotenv/lib/main.js:142:11) +2026-01-30T15:34:58.5570887Z +2026-01-30T15:34:58.5571022Z console.log +2026-01-30T15:34:58.5571319Z +2026-01-30T15:34:58.5572095Z ⚠️ Vector Search tests skipped: VOYAGE_API_KEY environment variable is not set +2026-01-30T15:34:58.5573293Z To run Vector Search integration tests, set VOYAGE_API_KEY in your .env file +2026-01-30T15:34:58.5574243Z Example: VOYAGE_API_KEY=your-api-key npm run test:integration +2026-01-30T15:34:58.5574721Z +2026-01-30T15:34:58.5575259Z at Object..exports.describeVectorSearch (tests/integration/setup.ts:97:21) +2026-01-30T15:34:58.5575902Z +2026-01-30T15:34:58.5576044Z console.error +2026-01-30T15:34:58.5577213Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":"Connected to database: sample_mflix","level":"debug"} +2026-01-30T15:34:58.5578223Z +2026-01-30T15:34:58.5578920Z   42 | database = client.db("sample_mflix"); +2026-01-30T15:34:58.5579735Z  43 | +2026-01-30T15:34:58.5580869Z > 44 | logger.debug(`Connected to database: ${database.databaseName}`); +2026-01-30T15:34:58.5581993Z  | ^ +2026-01-30T15:34:58.5582648Z  45 | +2026-01-30T15:34:58.5583214Z  46 | return database; +2026-01-30T15:34:58.5583919Z  47 | } catch (error) { +2026-01-30T15:34:58.5584270Z +2026-01-30T15:34:58.5584760Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5586142Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5587732Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5589007Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5590001Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5591721Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5593301Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:81:14) +2026-01-30T15:34:58.5594278Z at _connectToDatabase (src/config/database.ts:44:12) +2026-01-30T15:34:58.5594964Z at connectToDatabase (src/config/database.ts:62:10) +2026-01-30T15:34:58.5595677Z at Object. (tests/integration/setup.ts:110:5) +2026-01-30T15:34:58.5596102Z +2026-01-30T15:34:58.5596250Z console.error +2026-01-30T15:34:58.5597932Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} +2026-01-30T15:34:58.5599581Z +2026-01-30T15:34:58.5599791Z   32 | +2026-01-30T15:34:58.5600605Z  33 | // Log request details at debug level when request starts +2026-01-30T15:34:58.5602032Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:34:58.5604503Z  | ^ +2026-01-30T15:34:58.5605140Z  35 | headers: { +2026-01-30T15:34:58.5606242Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:34:58.5607866Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:34:58.5608600Z +2026-01-30T15:34:58.5609088Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5610446Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5612029Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5613433Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5614438Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5615749Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5616993Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:34:58.5618121Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:34:58.5619111Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:34:58.5619926Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5621061Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5621649Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5622440Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5623117Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5623761Z at read (node_modules/body-parser/lib/read.js:42:5) +2026-01-30T15:34:58.5624622Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:34:58.5625562Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5626323Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5626928Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5627553Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5628209Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5628821Z at node_modules/body-parser/lib/read.js:171:5 +2026-01-30T15:34:58.5629513Z at invokeCallback (node_modules/raw-body/index.js:238:16) +2026-01-30T15:34:58.5630384Z at done (node_modules/raw-body/index.js:227:7) +2026-01-30T15:34:58.5631144Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) +2026-01-30T15:34:58.5631631Z +2026-01-30T15:34:58.5631779Z console.error +2026-01-30T15:34:58.5632945Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 23ms"} +2026-01-30T15:34:58.5633855Z +2026-01-30T15:34:58.5635296Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:34:58.5636593Z  166 | +2026-01-30T15:34:58.5638058Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:34:58.5639266Z  | ^ +2026-01-30T15:34:58.5639782Z  168 | } +2026-01-30T15:34:58.5640173Z  169 | +2026-01-30T15:34:58.5640863Z  170 | export default logger; +2026-01-30T15:34:58.5641338Z +2026-01-30T15:34:58.5641834Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5643425Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5645014Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5646239Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5647253Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5648566Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5649813Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:34:58.5650602Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:34:58.5651387Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:34:58.5651908Z +2026-01-30T15:34:58.5652047Z console.error +2026-01-30T15:34:58.5654143Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"limit":"10"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/aggregations/reportingByComments?limit=10"} +2026-01-30T15:34:58.5655704Z +2026-01-30T15:34:58.5655916Z   32 | +2026-01-30T15:34:58.5656725Z  33 | // Log request details at debug level when request starts +2026-01-30T15:34:58.5658151Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:34:58.5659217Z  | ^ +2026-01-30T15:34:58.5659827Z  35 | headers: { +2026-01-30T15:34:58.5660908Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:34:58.5662550Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:34:58.5663280Z +2026-01-30T15:34:58.5663763Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5665106Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5666695Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5667957Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5669146Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5670472Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5671747Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:34:58.5673037Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:34:58.5674033Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:34:58.5674825Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5675585Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5676367Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5676987Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5677642Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5678288Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:34:58.5679130Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:34:58.5680064Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5680808Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5681405Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5682024Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5682912Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5683543Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:34:58.5684300Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:34:58.5685140Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5685936Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5686541Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5687162Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5687819Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5688425Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:34:58.5689004Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:34:58.5689659Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:34:58.5690310Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:34:58.5690955Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:34:58.5691693Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:34:58.5692625Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5693385Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5693984Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5694601Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5695246Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5695906Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:34:58.5696715Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:34:58.5697532Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:34:58.5697952Z +2026-01-30T15:34:58.5698091Z console.error +2026-01-30T15:34:58.5699730Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} +2026-01-30T15:34:58.5701139Z +2026-01-30T15:34:58.5701345Z   32 | +2026-01-30T15:34:58.5702142Z  33 | // Log request details at debug level when request starts +2026-01-30T15:34:58.5703877Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:34:58.5704951Z  | ^ +2026-01-30T15:34:58.5705562Z  35 | headers: { +2026-01-30T15:34:58.5706662Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:34:58.5708163Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:34:58.5708894Z +2026-01-30T15:34:58.5709377Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5710724Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5712704Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5713978Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5714985Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5716290Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5717522Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:34:58.5718643Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:34:58.5719644Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:34:58.5720439Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5721430Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5722036Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5722789Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5723457Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5724092Z at read (node_modules/body-parser/lib/read.js:42:5) +2026-01-30T15:34:58.5724939Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:34:58.5725876Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5726628Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5727226Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5727852Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5728493Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5729098Z at node_modules/body-parser/lib/read.js:171:5 +2026-01-30T15:34:58.5729796Z at invokeCallback (node_modules/raw-body/index.js:238:16) +2026-01-30T15:34:58.5730466Z at done (node_modules/raw-body/index.js:227:7) +2026-01-30T15:34:58.5731209Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) +2026-01-30T15:34:58.5731693Z +2026-01-30T15:34:58.5731833Z console.error +2026-01-30T15:34:58.5732991Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 7ms"} +2026-01-30T15:34:58.5733888Z +2026-01-30T15:34:58.5735329Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:34:58.5736627Z  166 | +2026-01-30T15:34:58.5737908Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:34:58.5739126Z  | ^ +2026-01-30T15:34:58.5739642Z  168 | } +2026-01-30T15:34:58.5740024Z  169 | +2026-01-30T15:34:58.5740875Z  170 | export default logger; +2026-01-30T15:34:58.5741360Z +2026-01-30T15:34:58.5741850Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5743427Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5745011Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5746276Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5747276Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5748759Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5749996Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:34:58.5750800Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:34:58.5751577Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:34:58.5752102Z +2026-01-30T15:34:58.5752374Z console.error +2026-01-30T15:34:58.5754203Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"limit":"3"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/aggregations/reportingByComments?limit=3"} +2026-01-30T15:34:58.5755741Z +2026-01-30T15:34:58.5755947Z   32 | +2026-01-30T15:34:58.5756739Z  33 | // Log request details at debug level when request starts +2026-01-30T15:34:58.5758168Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:34:58.5759231Z  | ^ +2026-01-30T15:34:58.5759834Z  35 | headers: { +2026-01-30T15:34:58.5760920Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:34:58.5762572Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:34:58.5763308Z +2026-01-30T15:34:58.5763791Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5765144Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5766736Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5767987Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5768985Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5770297Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5771535Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:34:58.5772888Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:34:58.5773894Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:34:58.5774688Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5775448Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5776053Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5776682Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5777348Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5777990Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:34:58.5778998Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:34:58.5779946Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5780706Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5781294Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5781919Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5782711Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5783334Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:34:58.5784084Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:34:58.5784926Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5785841Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5786480Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5787093Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5787747Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5788351Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:34:58.5788927Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:34:58.5789587Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:34:58.5790239Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:34:58.5790885Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:34:58.5791627Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:34:58.5792565Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5793314Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5793918Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5794535Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5795175Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5795840Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:34:58.5796657Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:34:58.5797467Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:34:58.5797895Z +2026-01-30T15:34:58.5798028Z console.error +2026-01-30T15:34:58.5799671Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} +2026-01-30T15:34:58.5801059Z +2026-01-30T15:34:58.5801269Z   32 | +2026-01-30T15:34:58.5802066Z  33 | // Log request details at debug level when request starts +2026-01-30T15:34:58.5803640Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:34:58.5804693Z  | ^ +2026-01-30T15:34:58.5805306Z  35 | headers: { +2026-01-30T15:34:58.5806398Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:34:58.5807894Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:34:58.5808622Z +2026-01-30T15:34:58.5809108Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5810455Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5812051Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5813546Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5814719Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5816049Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5817285Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:34:58.5818401Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:34:58.5819395Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:34:58.5820185Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5821178Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5821999Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5822786Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5823446Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5824093Z at read (node_modules/body-parser/lib/read.js:42:5) +2026-01-30T15:34:58.5824935Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:34:58.5825871Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5826639Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5827231Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5827863Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5828511Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5829109Z at node_modules/body-parser/lib/read.js:171:5 +2026-01-30T15:34:58.5829817Z at invokeCallback (node_modules/raw-body/index.js:238:16) +2026-01-30T15:34:58.5830507Z at done (node_modules/raw-body/index.js:227:7) +2026-01-30T15:34:58.5831234Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) +2026-01-30T15:34:58.5831723Z +2026-01-30T15:34:58.5831855Z console.error +2026-01-30T15:34:58.5833141Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 6ms"} +2026-01-30T15:34:58.5834040Z +2026-01-30T15:34:58.5835491Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:34:58.5836797Z  166 | +2026-01-30T15:34:58.5838083Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:34:58.5839280Z  | ^ +2026-01-30T15:34:58.5839809Z  168 | } +2026-01-30T15:34:58.5840202Z  169 | +2026-01-30T15:34:58.5840875Z  170 | export default logger; +2026-01-30T15:34:58.5841356Z +2026-01-30T15:34:58.5841860Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5843381Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5844992Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5846266Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5847283Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5848609Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5849855Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:34:58.5850650Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:34:58.5851440Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:34:58.5852422Z +2026-01-30T15:34:58.5852578Z console.error +2026-01-30T15:34:58.5856301Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"limit":"100"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/aggregations/reportingByComments?limit=100"} +2026-01-30T15:34:58.5857885Z +2026-01-30T15:34:58.5858119Z   32 | +2026-01-30T15:34:58.5858933Z  33 | // Log request details at debug level when request starts +2026-01-30T15:34:58.5860362Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:34:58.5861644Z  | ^ +2026-01-30T15:34:58.5882627Z  35 | headers: { +2026-01-30T15:34:58.5883913Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:34:58.5885440Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:34:58.5886211Z +2026-01-30T15:34:58.5886712Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5888054Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5889624Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5890878Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5891890Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5893370Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5894612Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:34:58.5895729Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:34:58.5896713Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:34:58.5897516Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5898261Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5898860Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5899486Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5900129Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5900768Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:34:58.5901609Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:34:58.5902677Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5903436Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5904031Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5904642Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5905285Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5905912Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:34:58.5906647Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:34:58.5907481Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5908225Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5908818Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5909433Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5910083Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5910907Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:34:58.5911512Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:34:58.5912315Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:34:58.5912985Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:34:58.5913640Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:34:58.5914365Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:34:58.5915144Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5915890Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5916474Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5917307Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5917949Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5918599Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:34:58.5919401Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:34:58.5920214Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:34:58.5920893Z +2026-01-30T15:34:58.5921032Z console.error +2026-01-30T15:34:58.5922524Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /aggregations/reportingByComments?limit=10 200 - 288070ms"} +2026-01-30T15:34:58.5923674Z +2026-01-30T15:34:58.5925102Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:34:58.5926388Z  166 | +2026-01-30T15:34:58.5927658Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:34:58.5928853Z  | ^ +2026-01-30T15:34:58.5929372Z  168 | } +2026-01-30T15:34:58.5929753Z  169 | +2026-01-30T15:34:58.5930429Z  170 | export default logger; +2026-01-30T15:34:58.5930897Z +2026-01-30T15:34:58.5931375Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5933023Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5934607Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5935858Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5936857Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5938150Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5939372Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:34:58.5940144Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:34:58.5940919Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:34:58.5941435Z +2026-01-30T15:34:58.5941574Z console.error +2026-01-30T15:34:58.5943346Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} +2026-01-30T15:34:58.5944723Z +2026-01-30T15:34:58.5944928Z   32 | +2026-01-30T15:34:58.5945740Z  33 | // Log request details at debug level when request starts +2026-01-30T15:34:58.5947150Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:34:58.5948372Z  | ^ +2026-01-30T15:34:58.5949000Z  35 | headers: { +2026-01-30T15:34:58.5950077Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:34:58.5951537Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:34:58.5952392Z +2026-01-30T15:34:58.5952873Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5954191Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5955905Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5957151Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5958139Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5959416Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5960628Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:34:58.5961725Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:34:58.5962833Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:34:58.5963623Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5964369Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5964971Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5965599Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5966245Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5966874Z at read (node_modules/body-parser/lib/read.js:42:5) +2026-01-30T15:34:58.5967713Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:34:58.5968633Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5969369Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5969990Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5970620Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5971265Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5971869Z at node_modules/body-parser/lib/read.js:171:5 +2026-01-30T15:34:58.5972693Z at invokeCallback (node_modules/raw-body/index.js:238:16) +2026-01-30T15:34:58.5973375Z at done (node_modules/raw-body/index.js:227:7) +2026-01-30T15:34:58.5974111Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) +2026-01-30T15:34:58.5974593Z +2026-01-30T15:34:58.5974731Z console.error +2026-01-30T15:34:58.5975761Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 6ms"} +2026-01-30T15:34:58.5976654Z +2026-01-30T15:34:58.5978067Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:34:58.5979354Z  166 | +2026-01-30T15:34:58.5980634Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:34:58.5981843Z  | ^ +2026-01-30T15:34:58.5982498Z  168 | } +2026-01-30T15:34:58.5982886Z  169 | +2026-01-30T15:34:58.5983602Z  170 | export default logger; +2026-01-30T15:34:58.5984072Z +2026-01-30T15:34:58.5984730Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5986121Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5987731Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5988993Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5989978Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5991276Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5992891Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:34:58.5993673Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:34:58.5994457Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:34:58.5994979Z +2026-01-30T15:34:58.5995111Z console.error +2026-01-30T15:34:58.5996745Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} +2026-01-30T15:34:58.5998132Z +2026-01-30T15:34:58.5998333Z   32 | +2026-01-30T15:34:58.5999130Z  33 | // Log request details at debug level when request starts +2026-01-30T15:34:58.6000544Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:34:58.6001595Z  | ^ +2026-01-30T15:34:58.6002339Z  35 | headers: { +2026-01-30T15:34:58.6003437Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:34:58.6004919Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:34:58.6005636Z +2026-01-30T15:34:58.6006115Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.6007457Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.6009019Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.6010252Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.6011250Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.6012678Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.6013913Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:34:58.6015022Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:34:58.6016010Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:34:58.6016799Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.6017549Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.6018145Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.6018760Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.6019411Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.6020051Z at read (node_modules/body-parser/lib/read.js:42:5) +2026-01-30T15:34:58.6021104Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:34:58.6022392Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.6023183Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.6023781Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.6024407Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.6025047Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.6025652Z at node_modules/body-parser/lib/read.js:171:5 +2026-01-30T15:34:58.6026334Z at invokeCallback (node_modules/raw-body/index.js:238:16) +2026-01-30T15:34:58.6027002Z at done (node_modules/raw-body/index.js:227:7) +2026-01-30T15:34:58.6027734Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) +2026-01-30T15:34:58.6028367Z +2026-01-30T15:34:58.6028508Z console.error +2026-01-30T15:34:58.6029531Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 9ms"} +2026-01-30T15:34:58.6030412Z +2026-01-30T15:34:58.6031847Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:34:58.6033270Z  166 | +2026-01-30T15:34:58.6034545Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:34:58.6035734Z  | ^ +2026-01-30T15:34:58.6036242Z  168 | } +2026-01-30T15:34:58.6036624Z  169 | +2026-01-30T15:34:58.6037292Z  170 | export default logger; +2026-01-30T15:34:58.6037774Z +2026-01-30T15:34:58.6038255Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.6039590Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.6041152Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.6042525Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.6043514Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.6044806Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.6046026Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:34:58.6046807Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:34:58.6047582Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:34:58.6048102Z +2026-01-30T15:34:58.6048234Z console.error +2026-01-30T15:34:58.6050024Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"limit":"50"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/aggregations/reportingByYear?limit=50"} +2026-01-30T15:34:58.6051527Z +2026-01-30T15:34:58.6051726Z   32 | +2026-01-30T15:34:58.6052653Z  33 | // Log request details at debug level when request starts +2026-01-30T15:34:58.6054069Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:34:58.6055118Z  | ^ +2026-01-30T15:34:58.6055718Z  35 | headers: { +2026-01-30T15:34:58.6056791Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:34:58.6058277Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:34:58.6059004Z +2026-01-30T15:34:58.6059646Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.6060992Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.6062699Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.6063950Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.6064932Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.6066229Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.6067622Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:34:58.6068727Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:34:58.6069724Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:34:58.6070520Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.6071266Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.6071863Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.6072742Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.6073394Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.6074026Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:34:58.6074856Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:34:58.6075786Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.6076526Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.6077110Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.6077734Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.6078378Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.6079000Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:34:58.6079749Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:34:58.6080579Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.6081313Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.6081902Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.6082653Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.6083287Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.6083890Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:34:58.6084471Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:34:58.6085113Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:34:58.6085763Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:34:58.6086460Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:34:58.6087212Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:34:58.6087993Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.6088731Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.6089342Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.6089954Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.6090586Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.6091243Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:34:58.6092076Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:34:58.6093019Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:34:58.6093445Z +2026-01-30T15:34:58.6093581Z console.error +2026-01-30T15:34:58.6095035Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /aggregations/reportingByYear?limit=50 200 - 111ms"} +2026-01-30T15:34:58.6096147Z +2026-01-30T15:34:58.6097578Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:34:58.6098900Z  166 | +2026-01-30T15:34:58.6100193Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:34:58.6101689Z  | ^ +2026-01-30T15:34:58.6102456Z  168 | } +2026-01-30T15:34:58.6102892Z  169 | +2026-01-30T15:34:58.6103577Z  170 | export default logger; +2026-01-30T15:34:58.6104061Z +2026-01-30T15:34:58.6104539Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.6105870Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.6107444Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.6108679Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.6109667Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.6110968Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.6112326Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:34:58.6113124Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:34:58.6113907Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:34:58.6114425Z +2026-01-30T15:34:58.6115640Z ● Advanced Endpoints Integration Tests › GET /api/movies/aggregations/reportingByComments › should return movies with their most recent comments +2026-01-30T15:34:58.6116683Z +2026-01-30T15:34:58.6116961Z thrown: "Exceeded timeout of 120000 ms for a test. +2026-01-30T15:34:58.6118264Z Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." +2026-01-30T15:34:58.6119222Z +2026-01-30T15:34:58.6119430Z   66 | +2026-01-30T15:34:58.6120767Z  67 | describe("GET /api/movies/aggregations/reportingByComments", () => { +2026-01-30T15:34:58.6123159Z > 68 | test("should return movies with their most recent comments", async () => { +2026-01-30T15:34:58.6124382Z  | ^ +2026-01-30T15:34:58.6125078Z  69 | // Create test movie via API +2026-01-30T15:34:58.6125861Z  70 | const testMovie = { +2026-01-30T15:34:58.6126846Z  71 | title: "Test Aggregation Movie 1", +2026-01-30T15:34:58.6127389Z +2026-01-30T15:34:58.6127787Z at tests/integration/advancedEndpoints.integration.test.ts:68:5 +2026-01-30T15:34:58.6128679Z at tests/integration/advancedEndpoints.integration.test.ts:67:3 +2026-01-30T15:34:58.6129722Z at Object. (tests/integration/advancedEndpoints.integration.test.ts:25:20) +2026-01-30T15:34:58.6130377Z +2026-01-30T15:34:58.6131447Z ● Advanced Endpoints Integration Tests › GET /api/movies/aggregations/reportingByComments › should limit recent comments per movie +2026-01-30T15:34:58.6132539Z +2026-01-30T15:34:58.6132806Z thrown: "Exceeded timeout of 120000 ms for a test. +2026-01-30T15:34:58.6134280Z Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." +2026-01-30T15:34:58.6135247Z +2026-01-30T15:34:58.6135533Z   139 | }); +2026-01-30T15:34:58.6136010Z  140 | +2026-01-30T15:34:58.6137186Z > 141 | test("should limit recent comments per movie", async () => { +2026-01-30T15:34:58.6138291Z  | ^ +2026-01-30T15:34:58.6138953Z  142 | // Create test movie +2026-01-30T15:34:58.6139719Z  143 | const testMovie = { +2026-01-30T15:34:58.6140989Z  144 | title: "Test Aggregation Movie Limit", +2026-01-30T15:34:58.6141564Z +2026-01-30T15:34:58.6141970Z at tests/integration/advancedEndpoints.integration.test.ts:141:5 +2026-01-30T15:34:58.6143068Z at tests/integration/advancedEndpoints.integration.test.ts:67:3 +2026-01-30T15:34:58.6144109Z at Object. (tests/integration/advancedEndpoints.integration.test.ts:25:20) +2026-01-30T15:34:58.6144755Z +2026-01-30T15:34:58.6145807Z ● Advanced Endpoints Integration Tests › GET /api/movies/aggregations/reportingByComments › should handle movies with no comments +2026-01-30T15:34:58.6146756Z +2026-01-30T15:34:58.6147019Z thrown: "Exceeded timeout of 120000 ms for a test. +2026-01-30T15:34:58.6148304Z Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." +2026-01-30T15:34:58.6149259Z +2026-01-30T15:34:58.6149535Z   187 | }); +2026-01-30T15:34:58.6150004Z  188 | +2026-01-30T15:34:58.6151164Z > 189 | test("should handle movies with no comments", async () => { +2026-01-30T15:34:58.6153030Z  | ^ +2026-01-30T15:34:58.6153803Z  190 | // Create a movie without comments +2026-01-30T15:34:58.6154646Z  191 | const testMovie = { +2026-01-30T15:34:58.6155724Z  192 | title: "Test Aggregation Movie No Comments", +2026-01-30T15:34:58.6156349Z +2026-01-30T15:34:58.6156755Z at tests/integration/advancedEndpoints.integration.test.ts:189:5 +2026-01-30T15:34:58.6157654Z at tests/integration/advancedEndpoints.integration.test.ts:67:3 +2026-01-30T15:34:58.6158699Z at Object. (tests/integration/advancedEndpoints.integration.test.ts:25:20) +2026-01-30T15:34:58.6159353Z +2026-01-30T15:34:58.6586651Z Test Suites: 1 failed, 2 passed, 3 total +2026-01-30T15:34:58.6589624Z Tests: 3 failed, 4 skipped, 38 passed, 45 total +2026-01-30T15:34:58.6592445Z Snapshots: 0 total +2026-01-30T15:34:58.6594995Z Time: 371.746 s +2026-01-30T15:34:58.6597496Z Ran all test suites. +2026-01-30T15:34:58.6605521Z Test results written to: test-results-integration.json +2026-01-30T15:34:58.6906238Z ##[group]Run actions/upload-artifact@v4 +2026-01-30T15:34:58.6906689Z with: +2026-01-30T15:34:58.6906978Z name: test-results +2026-01-30T15:34:58.6908004Z path: mflix/server/js-express/coverage/ +mflix/server/js-express/test-results-unit.json +mflix/server/js-express/test-results-integration.json + +2026-01-30T15:34:58.6909141Z retention-days: 30 +2026-01-30T15:34:58.6909483Z if-no-files-found: warn +2026-01-30T15:34:58.6909850Z compression-level: 6 +2026-01-30T15:34:58.6910199Z overwrite: false +2026-01-30T15:34:58.6910546Z include-hidden-files: false +2026-01-30T15:34:58.6910929Z ##[endgroup] +2026-01-30T15:34:58.9130422Z Multiple search paths detected. Calculating the least common ancestor of all paths +2026-01-30T15:34:58.9136383Z The least common ancestor is /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express. This will be the root directory of the artifact +2026-01-30T15:34:58.9138183Z With the provided path, there will be 2 files uploaded +2026-01-30T15:34:58.9143759Z Artifact name is valid! +2026-01-30T15:34:58.9144873Z Root directory input is valid! +2026-01-30T15:34:59.2145814Z Beginning upload of artifact content to blob storage +2026-01-30T15:34:59.5225592Z Uploaded bytes 4995 +2026-01-30T15:34:59.6058936Z Finished uploading artifact content to blob storage! +2026-01-30T15:34:59.6061852Z SHA256 digest of uploaded artifact zip is 132af0a45ae192a2d928fa422d5dbc5071b42eb5af768a6d8822dcc36a18d581 +2026-01-30T15:34:59.6063866Z Finalizing artifact upload +2026-01-30T15:34:59.7514008Z Artifact test-results.zip successfully finalized. Artifact ID 5320296235 +2026-01-30T15:34:59.7515600Z Artifact test-results has been successfully uploaded! Final size is 4995 bytes. Artifact ID is 5320296235 +2026-01-30T15:34:59.7521660Z Artifact download URL: https://github.com/mongodb/docs-sample-apps/actions/runs/21521030923/artifacts/5320296235 +2026-01-30T15:34:59.7626389Z ##[group]Run chmod +x .github/scripts/generate-test-summary-jest.sh +2026-01-30T15:34:59.7627093Z chmod +x .github/scripts/generate-test-summary-jest.sh +2026-01-30T15:34:59.7627591Z .github/scripts/generate-test-summary-jest.sh \ +2026-01-30T15:34:59.7628129Z  mflix/server/js-express/test-results-unit.json \ +2026-01-30T15:34:59.7628596Z  mflix/server/js-express/test-results-integration.json +2026-01-30T15:34:59.7661908Z shell: /usr/bin/bash -e {0} +2026-01-30T15:34:59.7662468Z ##[endgroup] +2026-01-30T15:34:59.8107679Z ##[error]Process completed with exit code 1. +2026-01-30T15:34:59.8218985Z Post job cleanup. +2026-01-30T15:34:59.9199939Z [command]/usr/bin/git version +2026-01-30T15:34:59.9243522Z git version 2.52.0 +2026-01-30T15:34:59.9290095Z Temporarily overriding HOME='/home/runner/work/_temp/afc3ecc7-3169-4246-8b27-083c313fdabd' before making global git config changes +2026-01-30T15:34:59.9291649Z Adding repository directory to the temporary git global config as a safe directory +2026-01-30T15:34:59.9296689Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/docs-sample-apps/docs-sample-apps +2026-01-30T15:34:59.9341782Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand +2026-01-30T15:34:59.9376942Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :" +2026-01-30T15:34:59.9614114Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader +2026-01-30T15:34:59.9637751Z http.https://github.com/.extraheader +2026-01-30T15:34:59.9647915Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader +2026-01-30T15:34:59.9680848Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :" +2026-01-30T15:34:59.9911103Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir: +2026-01-30T15:34:59.9945502Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url +2026-01-30T15:35:00.0307615Z Cleaning up orphan processes diff --git a/Run Express Tests/10_Run unit tests.txt b/Run Express Tests/10_Run unit tests.txt new file mode 100644 index 0000000..c26a39e --- /dev/null +++ b/Run Express Tests/10_Run unit tests.txt @@ -0,0 +1,91 @@ +2026-01-30T15:28:43.3388355Z ##[group]Run npm run test:unit -- --json --outputFile=test-results-unit.json || true +2026-01-30T15:28:43.3388958Z npm run test:unit -- --json --outputFile=test-results-unit.json || true +2026-01-30T15:28:43.3421470Z shell: /usr/bin/bash -e {0} +2026-01-30T15:28:43.3421709Z env: +2026-01-30T15:28:43.3422023Z MONGODB_URI: mongodb://localhost:27017/sample_mflix?directConnection=true +2026-01-30T15:28:43.3422566Z ##[endgroup] +2026-01-30T15:28:43.4503823Z +2026-01-30T15:28:43.4504518Z > sample-mflix-express-backend@1.0.0 test:unit +2026-01-30T15:28:43.4505456Z > jest tests/controllers --json --outputFile=test-results-unit.json +2026-01-30T15:28:43.4506000Z +2026-01-30T15:28:46.3899393Z PASS tests/controllers/movieController.test.ts +2026-01-30T15:28:46.3904375Z Movie Controller Tests +2026-01-30T15:28:46.3904778Z getAllMovies +2026-01-30T15:28:46.3907666Z ✓ should successfully retrieve movies (3 ms) +2026-01-30T15:28:46.3908387Z ✓ should handle empty results (1 ms) +2026-01-30T15:28:46.3909090Z ✓ should handle database errors (20 ms) +2026-01-30T15:28:46.3909795Z ✓ should handle query parameters for filtering (1 ms) +2026-01-30T15:28:46.3910313Z getMovieById +2026-01-30T15:28:46.3910949Z ✓ should successfully retrieve a movie by valid ID (1 ms) +2026-01-30T15:28:46.3911762Z ✓ should return 400 for invalid ObjectId format (1 ms) +2026-01-30T15:28:46.3912668Z ✓ should return 404 when movie not found (1 ms) +2026-01-30T15:28:46.3913371Z ✓ should handle database errors (1 ms) +2026-01-30T15:28:46.3913838Z createMovie +2026-01-30T15:28:46.3914344Z ✓ should successfully create a movie (1 ms) +2026-01-30T15:28:46.3914969Z ✓ should handle validation errors +2026-01-30T15:28:46.3915684Z ✓ should handle insert acknowledgment failure (14 ms) +2026-01-30T15:28:46.3916207Z createMoviesBatch +2026-01-30T15:28:46.3916796Z ✓ should successfully create multiple movies (1 ms) +2026-01-30T15:28:46.3917585Z ✓ should return 400 for invalid input (not an array) (1 ms) +2026-01-30T15:28:46.3918281Z ✓ should return 400 for empty array +2026-01-30T15:28:46.3918766Z updateMovie +2026-01-30T15:28:46.3919271Z ✓ should successfully update a movie (2 ms) +2026-01-30T15:28:46.3919954Z ✓ should return 400 for invalid ObjectId (1 ms) +2026-01-30T15:28:46.3920598Z ✓ should return 400 for empty update data +2026-01-30T15:28:46.3921208Z ✓ should return 404 when movie not found +2026-01-30T15:28:46.3921660Z deleteMovie +2026-01-30T15:28:46.3922148Z ✓ should successfully delete a movie (1 ms) +2026-01-30T15:28:46.3922938Z ✓ should return 400 for invalid ObjectId +2026-01-30T15:28:46.3923542Z ✓ should return 404 when movie not found +2026-01-30T15:28:46.3924137Z ✓ should handle database errors (1 ms) +2026-01-30T15:28:46.3924585Z updateMoviesBatch +2026-01-30T15:28:46.3925121Z ✓ should successfully update multiple movies +2026-01-30T15:28:46.3925810Z ✓ should return 400 when filter is missing (1 ms) +2026-01-30T15:28:46.3926460Z ✓ should return 400 when update is empty +2026-01-30T15:28:46.3926914Z deleteMoviesBatch +2026-01-30T15:28:46.3927472Z ✓ should successfully delete multiple movies (1 ms) +2026-01-30T15:28:46.3928576Z ✓ should return 400 when filter is missing +2026-01-30T15:28:46.3929238Z ✓ should return 400 when filter is empty (1 ms) +2026-01-30T15:28:46.3929736Z findAndDeleteMovie +2026-01-30T15:28:46.3930314Z ✓ should successfully find and delete a movie +2026-01-30T15:28:46.3931004Z ✓ should return 400 for invalid ObjectId (1 ms) +2026-01-30T15:28:46.3931673Z ✓ should return 404 when movie not found +2026-01-30T15:28:46.3932442Z ✓ should handle database errors (1 ms) +2026-01-30T15:28:46.3932913Z searchMovies +2026-01-30T15:28:46.3933294Z ✓ should successfully search movies by plot (1 ms) +2026-01-30T15:28:46.3933721Z ✓ should handle search with multiple fields +2026-01-30T15:28:46.3934165Z ✓ should return 400 when no search parameters provided +2026-01-30T15:28:46.3934899Z ✓ should return 400 for invalid search operator +2026-01-30T15:28:46.3935287Z ✓ should handle pagination parameters +2026-01-30T15:28:46.3935694Z ✓ should return empty results when no matches found +2026-01-30T15:28:46.3936000Z vectorSearchMovies +2026-01-30T15:28:46.3936340Z ✓ should successfully perform vector search (2 ms) +2026-01-30T15:28:46.3936739Z ✓ should return 400 when query is missing (1 ms) +2026-01-30T15:28:46.3937137Z ✓ should return 400 when query is empty +2026-01-30T15:28:46.3937571Z ✓ should return 400 when VOYAGE_API_KEY is not configured (1 ms) +2026-01-30T15:28:46.3938111Z ✓ should handle Voyage AI authentication errors with 401 status (1 ms) +2026-01-30T15:28:46.3938628Z ✓ should handle other Voyage AI API errors with 503 status +2026-01-30T15:28:46.3939065Z ✓ should use default limit when not provided (1 ms) +2026-01-30T15:28:46.3939420Z getMoviesWithMostRecentComments +2026-01-30T15:28:46.3939829Z ✓ should successfully get movies with comments (1 ms) +2026-01-30T15:28:46.3940257Z ✓ should filter by specific movieId when provided +2026-01-30T15:28:46.3940665Z ✓ should return 400 for invalid movieId format +2026-01-30T15:28:46.3941013Z ✓ should handle empty results +2026-01-30T15:28:46.3941377Z ✓ should use default limit when not provided (1 ms) +2026-01-30T15:28:46.3941687Z getMoviesByYearWithStats +2026-01-30T15:28:46.3942419Z ✓ should successfully get movies statistics by year +2026-01-30T15:28:46.3942957Z ✓ should handle empty results (1 ms) +2026-01-30T15:28:46.3943311Z ✓ should handle database errors (1 ms) +2026-01-30T15:28:46.3943608Z getDirectorsWithMostMovies +2026-01-30T15:28:46.3943949Z ✓ should successfully get directors statistics +2026-01-30T15:28:46.3944314Z ✓ should handle custom limit parameter +2026-01-30T15:28:46.3944674Z ✓ should use default limit when not provided +2026-01-30T15:28:46.3945011Z ✓ should handle empty results +2026-01-30T15:28:46.3945345Z ✓ should handle database errors (4 ms) +2026-01-30T15:28:46.3945521Z +2026-01-30T15:28:46.3953954Z Test Suites: 1 passed, 1 total +2026-01-30T15:28:46.3954983Z Tests: 58 passed, 58 total +2026-01-30T15:28:46.3955468Z Snapshots: 0 total +2026-01-30T15:28:46.3955828Z Time: 2.529 s +2026-01-30T15:28:46.3956324Z Ran all test suites matching /tests\/controllers/i. +2026-01-30T15:28:46.3972456Z Test results written to: test-results-unit.json diff --git a/Run Express Tests/11_Run integration tests.txt b/Run Express Tests/11_Run integration tests.txt new file mode 100644 index 0000000..5fd2a52 --- /dev/null +++ b/Run Express Tests/11_Run integration tests.txt @@ -0,0 +1,1852 @@ +2026-01-30T15:28:46.4385347Z ##[group]Run npm run test:integration -- --json --outputFile=test-results-integration.json || true +2026-01-30T15:28:46.4386064Z npm run test:integration -- --json --outputFile=test-results-integration.json || true +2026-01-30T15:28:46.4417518Z shell: /usr/bin/bash -e {0} +2026-01-30T15:28:46.4417761Z env: +2026-01-30T15:28:46.4418076Z MONGODB_URI: mongodb://localhost:27017/sample_mflix?directConnection=true +2026-01-30T15:28:46.4418479Z ENABLE_SEARCH_TESTS: true +2026-01-30T15:28:46.4418697Z ##[endgroup] +2026-01-30T15:28:46.5490373Z +2026-01-30T15:28:46.5491246Z > sample-mflix-express-backend@1.0.0 test:integration +2026-01-30T15:28:46.5492737Z > jest --config jest.integration.config.json --json --outputFile=test-results-integration.json +2026-01-30T15:28:46.5493916Z +2026-01-30T15:28:53.7775617Z PASS tests/integration/mongodbSearch.integration.test.ts (6.259 s) +2026-01-30T15:28:53.8839831Z ● Console +2026-01-30T15:28:53.8845101Z +2026-01-30T15:28:53.8849146Z console.log +2026-01-30T15:28:53.8853284Z [dotenv@17.2.3] injecting env (0) from .env -- tip: ⚙️ specify custom .env file path with { path: '/custom/path/.env' } +2026-01-30T15:28:53.8856249Z +2026-01-30T15:28:53.8858637Z at _log (node_modules/dotenv/lib/main.js:142:11) +2026-01-30T15:28:53.8861153Z +2026-01-30T15:28:53.8863375Z console.log +2026-01-30T15:28:53.8866192Z [dotenv@17.2.3] injecting env (0) from .env -- tip: 📡 add observability to secrets: https://dotenvx.com/ops +2026-01-30T15:28:53.8873978Z +2026-01-30T15:28:53.8874297Z at _log (node_modules/dotenv/lib/main.js:142:11) +2026-01-30T15:28:53.8874685Z +2026-01-30T15:28:53.8874825Z console.error +2026-01-30T15:28:53.8876047Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":"Connected to database: sample_mflix","level":"debug"} +2026-01-30T15:28:53.8877054Z +2026-01-30T15:28:53.8877782Z   42 | database = client.db("sample_mflix"); +2026-01-30T15:28:53.8878590Z  43 | +2026-01-30T15:28:53.8879756Z > 44 | logger.debug(`Connected to database: ${database.databaseName}`); +2026-01-30T15:28:53.8880874Z  | ^ +2026-01-30T15:28:53.8881386Z  45 | +2026-01-30T15:28:53.8881957Z  46 | return database; +2026-01-30T15:28:53.8894506Z  47 | } catch (error) { +2026-01-30T15:28:53.8894901Z +2026-01-30T15:28:53.8895401Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.8896786Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.8898357Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.8899621Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.8900782Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.8902086Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.8903672Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:81:14) +2026-01-30T15:28:53.8904633Z at _connectToDatabase (src/config/database.ts:44:12) +2026-01-30T15:28:53.8905317Z at connectToDatabase (src/config/database.ts:62:10) +2026-01-30T15:28:53.8906034Z at Object. (tests/integration/setup.ts:110:5) +2026-01-30T15:28:53.8906460Z +2026-01-30T15:28:53.8906597Z console.error +2026-01-30T15:28:53.8908507Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"detective mystery"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=detective%20mystery"} +2026-01-30T15:28:53.8910614Z +2026-01-30T15:28:53.8910845Z   32 | +2026-01-30T15:28:53.8911644Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:53.8913638Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:53.8921651Z  | ^ +2026-01-30T15:28:53.8922512Z  35 | headers: { +2026-01-30T15:28:53.8923628Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:53.8925475Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:53.8926187Z +2026-01-30T15:28:53.8926685Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.8928017Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.8929575Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.8931088Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.8932090Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.8936138Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.8937455Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:53.8938570Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:53.8939566Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:53.8940373Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.8941115Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.8941716Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.8942613Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.8943297Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.8943959Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.8944820Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:53.8945750Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.8946515Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.8947114Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.8947735Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.8948385Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.8949026Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.8949764Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:28:53.8950597Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.8951334Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.8951924Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.8952703Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.8953367Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.8953979Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:28:53.8954583Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:28:53.8955236Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:28:53.8955891Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:28:53.8956543Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:28:53.8958059Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:28:53.8959054Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.8960161Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.8960921Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.8961564Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.8962347Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.8963019Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:28:53.8963831Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:28:53.8964850Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:28:53.8965278Z +2026-01-30T15:28:53.8965413Z console.error +2026-01-30T15:28:53.8966676Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=detective%20mystery 200 - 210ms"} +2026-01-30T15:28:53.8967745Z +2026-01-30T15:28:53.8969248Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:53.8970537Z  166 | +2026-01-30T15:28:53.8971849Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:53.8973313Z  | ^ +2026-01-30T15:28:53.8973813Z  168 | } +2026-01-30T15:28:53.8974163Z  169 | +2026-01-30T15:28:53.8974856Z  170 | export default logger; +2026-01-30T15:28:53.8975329Z +2026-01-30T15:28:53.8975816Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.8977162Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.8978736Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.8979988Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.8980975Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.8982421Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.8983779Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:53.8984575Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:53.8985361Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:53.8985880Z +2026-01-30T15:28:53.8986028Z console.error +2026-01-30T15:28:53.8987974Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"xyzabc123nonexistent"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=xyzabc123nonexistent"} +2026-01-30T15:28:53.8989626Z +2026-01-30T15:28:53.8989833Z   32 | +2026-01-30T15:28:53.8990633Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:53.8992059Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:53.8993299Z  | ^ +2026-01-30T15:28:53.8993922Z  35 | headers: { +2026-01-30T15:28:53.8995004Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:53.8996759Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:53.8997492Z +2026-01-30T15:28:53.8997977Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.8999317Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9000889Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9002146Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9003574Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9004890Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9006133Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:53.9007259Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:53.9008249Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:53.9009048Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9009805Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9010404Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9011034Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9011688Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9012569Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9013445Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:53.9014429Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9015177Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9015783Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9016403Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9017046Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9017689Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9018434Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:28:53.9019279Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9020074Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9020679Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9021309Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9021955Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9022716Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:28:53.9023300Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:28:53.9023965Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:28:53.9024620Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:28:53.9025260Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:28:53.9026000Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:28:53.9026789Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9027535Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9028132Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9028771Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9029407Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9030071Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:28:53.9031155Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:28:53.9032370Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:28:53.9032819Z +2026-01-30T15:28:53.9032955Z console.error +2026-01-30T15:28:53.9034415Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=xyzabc123nonexistent 200 - 10ms"} +2026-01-30T15:28:53.9035666Z +2026-01-30T15:28:53.9037611Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:53.9039111Z  166 | +2026-01-30T15:28:53.9040625Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:53.9041831Z  | ^ +2026-01-30T15:28:53.9042598Z  168 | } +2026-01-30T15:28:53.9043019Z  169 | +2026-01-30T15:28:53.9043699Z  170 | export default logger; +2026-01-30T15:28:53.9044184Z +2026-01-30T15:28:53.9044664Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9046014Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9047597Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9048839Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9049837Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9051145Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9052518Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:53.9053327Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:53.9054105Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:53.9054623Z +2026-01-30T15:28:53.9054758Z console.error +2026-01-30T15:28:53.9056594Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"directors":"Spielberg"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?directors=Spielberg"} +2026-01-30T15:28:53.9058140Z +2026-01-30T15:28:53.9058337Z   32 | +2026-01-30T15:28:53.9059145Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:53.9060556Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:53.9061612Z  | ^ +2026-01-30T15:28:53.9062377Z  35 | headers: { +2026-01-30T15:28:53.9063580Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:53.9065094Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:53.9065804Z +2026-01-30T15:28:53.9066293Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9067620Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9069204Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9070457Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9071442Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9073144Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9074389Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:53.9075503Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:53.9076484Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:53.9077283Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9078038Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9078827Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9079635Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9080478Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9081299Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9082537Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:53.9083654Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9084976Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9085758Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9086376Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9087025Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9087658Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9088418Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:28:53.9089260Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9090013Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9090913Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9091562Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9092330Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9093044Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:28:53.9093625Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:28:53.9094285Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:28:53.9094934Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:28:53.9095597Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:28:53.9096487Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:28:53.9097464Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9098233Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9098826Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9099450Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9100104Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9100759Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:28:53.9101569Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:28:53.9102523Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:28:53.9102950Z +2026-01-30T15:28:53.9103086Z console.error +2026-01-30T15:28:53.9104290Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?directors=Spielberg 200 - 15ms"} +2026-01-30T15:28:53.9105320Z +2026-01-30T15:28:53.9106796Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:53.9108092Z  166 | +2026-01-30T15:28:53.9109370Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:53.9110862Z  | ^ +2026-01-30T15:28:53.9111381Z  168 | } +2026-01-30T15:28:53.9111768Z  169 | +2026-01-30T15:28:53.9112599Z  170 | export default logger; +2026-01-30T15:28:53.9113078Z +2026-01-30T15:28:53.9113603Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9114944Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9116722Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9117971Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9118951Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9120256Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9121477Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:53.9122411Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:53.9123210Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:53.9123731Z +2026-01-30T15:28:53.9123868Z console.error +2026-01-30T15:28:53.9125665Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"cast":"Tom Hanks"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?cast=Tom%20Hanks"} +2026-01-30T15:28:53.9127142Z +2026-01-30T15:28:53.9127344Z   32 | +2026-01-30T15:28:53.9128139Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:53.9129569Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:53.9130870Z  | ^ +2026-01-30T15:28:53.9131498Z  35 | headers: { +2026-01-30T15:28:53.9132777Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:53.9134297Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:53.9135028Z +2026-01-30T15:28:53.9135512Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9136851Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9138415Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9139676Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9140671Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9142106Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9143642Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:53.9144912Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:53.9146072Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:53.9146869Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9147625Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9148221Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9149060Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9149715Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9150346Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9151187Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:53.9152116Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9153044Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9153652Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9154461Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9155100Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9155731Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9156477Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:28:53.9157311Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9158054Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9158643Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9159252Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9159894Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9160489Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:28:53.9161071Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:28:53.9161725Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:28:53.9162530Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:28:53.9163179Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:28:53.9163925Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:28:53.9164703Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9165458Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9166049Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9166655Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9167294Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9167963Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:28:53.9168771Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:28:53.9169587Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:28:53.9170013Z +2026-01-30T15:28:53.9170158Z console.error +2026-01-30T15:28:53.9171324Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?cast=Tom%20Hanks 200 - 9ms"} +2026-01-30T15:28:53.9172465Z +2026-01-30T15:28:53.9173918Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:53.9175209Z  166 | +2026-01-30T15:28:53.9176481Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:53.9177688Z  | ^ +2026-01-30T15:28:53.9178208Z  168 | } +2026-01-30T15:28:53.9178593Z  169 | +2026-01-30T15:28:53.9179268Z  170 | export default logger; +2026-01-30T15:28:53.9179743Z +2026-01-30T15:28:53.9180233Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9181563Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9183278Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9184746Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9185733Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9187023Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9188252Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:53.9189035Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:53.9189985Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:53.9190506Z +2026-01-30T15:28:53.9190637Z console.error +2026-01-30T15:28:53.9192744Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"adventure","limit":"5"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=adventure&limit=5"} +2026-01-30T15:28:53.9194347Z +2026-01-30T15:28:53.9194562Z   32 | +2026-01-30T15:28:53.9195356Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:53.9196784Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:53.9197840Z  | ^ +2026-01-30T15:28:53.9198449Z  35 | headers: { +2026-01-30T15:28:53.9199528Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:53.9201021Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:53.9201736Z +2026-01-30T15:28:53.9202365Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9203726Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9205307Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9206557Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9207553Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9208859Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9209952Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:53.9211079Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:53.9212073Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:53.9213083Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9213907Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9214509Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9215130Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9215781Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9216416Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9217248Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:53.9218186Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9218939Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9219525Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9220141Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9221056Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9221694Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9222630Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:28:53.9223476Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9224221Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9224821Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9225436Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9226080Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9226873Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:28:53.9227448Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:28:53.9228098Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:28:53.9228741Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:28:53.9229397Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:28:53.9230319Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:28:53.9231570Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9232595Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9233214Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9233853Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9234507Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9235460Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:28:53.9236286Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:28:53.9237090Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:28:53.9237526Z +2026-01-30T15:28:53.9237657Z console.error +2026-01-30T15:28:53.9238882Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=adventure&limit=5 200 - 8ms"} +2026-01-30T15:28:53.9239931Z +2026-01-30T15:28:53.9241693Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:53.9243174Z  166 | +2026-01-30T15:28:53.9244773Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:53.9246011Z  | ^ +2026-01-30T15:28:53.9246526Z  168 | } +2026-01-30T15:28:53.9246919Z  169 | +2026-01-30T15:28:53.9247594Z  170 | export default logger; +2026-01-30T15:28:53.9248070Z +2026-01-30T15:28:53.9248555Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9249905Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9251475Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9252888Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9254189Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9255642Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9257055Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:53.9257851Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:53.9258626Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:53.9259387Z +2026-01-30T15:28:53.9259522Z console.error +2026-01-30T15:28:53.9261530Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"adventure","limit":"5","skip":"0"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=adventure&limit=5&skip=0"} +2026-01-30T15:28:53.9263359Z +2026-01-30T15:28:53.9263579Z   32 | +2026-01-30T15:28:53.9264376Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:53.9265792Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:53.9267057Z  | ^ +2026-01-30T15:28:53.9267659Z  35 | headers: { +2026-01-30T15:28:53.9268734Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:53.9270236Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:53.9270949Z +2026-01-30T15:28:53.9271459Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9273078Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9274793Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9276405Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9277644Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9279056Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9280486Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:53.9281728Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:53.9283066Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:53.9284063Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9285209Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9285931Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9286745Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9287542Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9288335Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9289350Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:53.9306152Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9307006Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9307624Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9308291Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9308953Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9309594Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9310364Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:28:53.9311220Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9311981Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9312798Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9313438Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9314131Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9314746Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:28:53.9315624Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:28:53.9316290Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:28:53.9316953Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:28:53.9317595Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:28:53.9318326Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:28:53.9319121Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9319870Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9320665Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9321294Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9321937Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9322774Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:28:53.9323591Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:28:53.9324407Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:28:53.9324838Z +2026-01-30T15:28:53.9324979Z console.error +2026-01-30T15:28:53.9326264Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=adventure&limit=5&skip=0 200 - 13ms"} +2026-01-30T15:28:53.9327347Z +2026-01-30T15:28:53.9328868Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:53.9330164Z  166 | +2026-01-30T15:28:53.9331747Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:53.9333162Z  | ^ +2026-01-30T15:28:53.9333691Z  168 | } +2026-01-30T15:28:53.9334084Z  169 | +2026-01-30T15:28:53.9334762Z  170 | export default logger; +2026-01-30T15:28:53.9335242Z +2026-01-30T15:28:53.9335722Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9337054Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9338619Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9339860Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9340852Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9342142Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9343541Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:53.9344340Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:53.9345125Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:53.9345650Z +2026-01-30T15:28:53.9345783Z console.error +2026-01-30T15:28:53.9347804Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"adventure","limit":"5","skip":"5"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=adventure&limit=5&skip=5"} +2026-01-30T15:28:53.9349480Z +2026-01-30T15:28:53.9349687Z   32 | +2026-01-30T15:28:53.9350489Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:53.9351901Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:53.9353470Z  | ^ +2026-01-30T15:28:53.9354092Z  35 | headers: { +2026-01-30T15:28:53.9355162Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:53.9356663Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:53.9357372Z +2026-01-30T15:28:53.9357866Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9359374Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9360936Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9362328Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9363344Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9364646Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9365878Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:53.9366979Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:53.9367978Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:53.9368781Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9369552Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9370167Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9370799Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9371438Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9372083Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9373066Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:53.9373994Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9374747Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9375341Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9375953Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9376598Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9377242Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9377980Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:28:53.9378817Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9379573Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9380170Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9380788Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9381427Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9382021Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:28:53.9382758Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:28:53.9383415Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:28:53.9384061Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:28:53.9384711Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:28:53.9385713Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:28:53.9386498Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9387245Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9387832Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9388697Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9389346Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9389996Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:28:53.9390805Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:28:53.9391608Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:28:53.9392028Z +2026-01-30T15:28:53.9392336Z console.error +2026-01-30T15:28:53.9393611Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=adventure&limit=5&skip=5 200 - 14ms"} +2026-01-30T15:28:53.9394924Z +2026-01-30T15:28:53.9396361Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:53.9397658Z  166 | +2026-01-30T15:28:53.9398939Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:53.9400137Z  | ^ +2026-01-30T15:28:53.9400657Z  168 | } +2026-01-30T15:28:53.9401044Z  169 | +2026-01-30T15:28:53.9401725Z  170 | export default logger; +2026-01-30T15:28:53.9402366Z +2026-01-30T15:28:53.9402851Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9404210Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9405780Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9407025Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9408015Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9409304Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9410529Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:53.9411303Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:53.9412079Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:53.9412733Z +2026-01-30T15:28:53.9412888Z console.error +2026-01-30T15:28:53.9415266Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"detective","directors":"Nolan","searchOperator":"must"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=detective&directors=Nolan&searchOperator=must"} +2026-01-30T15:28:53.9417257Z +2026-01-30T15:28:53.9417460Z   32 | +2026-01-30T15:28:53.9418258Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:53.9419667Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:53.9420709Z  | ^ +2026-01-30T15:28:53.9421328Z  35 | headers: { +2026-01-30T15:28:53.9422546Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:53.9424045Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:53.9424777Z +2026-01-30T15:28:53.9425258Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9427199Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9428772Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9430016Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9431183Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9432694Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9434145Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:53.9435259Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:53.9436254Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:53.9437040Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9437799Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9438396Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9439010Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9439656Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9440281Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9441118Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:53.9442049Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9442972Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9443575Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9444201Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9444839Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9445447Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:53.9446163Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:28:53.9446992Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9447741Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9448332Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9448944Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9449586Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9450186Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:28:53.9462670Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:28:53.9463406Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:28:53.9464087Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:28:53.9464784Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:28:53.9465560Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:28:53.9466356Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:53.9467124Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:53.9467728Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:53.9468348Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:53.9468997Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:53.9469661Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:28:53.9470664Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:28:53.9471694Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:28:53.9472131Z +2026-01-30T15:28:53.9472434Z console.error +2026-01-30T15:28:53.9473885Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=detective&directors=Nolan&searchOperator=must 200 - 9ms"} +2026-01-30T15:28:53.9475365Z +2026-01-30T15:28:53.9477184Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:53.9478491Z  166 | +2026-01-30T15:28:53.9479773Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:53.9481319Z  | ^ +2026-01-30T15:28:53.9482052Z  168 | } +2026-01-30T15:28:53.9482644Z  169 | +2026-01-30T15:28:53.9483335Z  170 | export default logger; +2026-01-30T15:28:53.9483803Z +2026-01-30T15:28:53.9484298Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:53.9485626Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:53.9487536Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:53.9488795Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:53.9489780Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:53.9491060Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:53.9492437Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:53.9493230Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:53.9494017Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:53.9494554Z +2026-01-30T15:28:54.1870414Z PASS tests/integration/movie.integration.test.ts (6.74 s) +2026-01-30T15:28:54.2238596Z ● Console +2026-01-30T15:28:54.2241895Z +2026-01-30T15:28:54.2242056Z console.log +2026-01-30T15:28:54.2243387Z [dotenv@17.2.3] injecting env (0) from .env -- tip: 🗂️ backup and recover secrets: https://dotenvx.com/ops +2026-01-30T15:28:54.2244115Z +2026-01-30T15:28:54.2244395Z at _log (node_modules/dotenv/lib/main.js:142:11) +2026-01-30T15:28:54.2244776Z +2026-01-30T15:28:54.2244909Z console.log +2026-01-30T15:28:54.2245918Z [dotenv@17.2.3] injecting env (0) from .env -- tip: 📡 add observability to secrets: https://dotenvx.com/ops +2026-01-30T15:28:54.2246668Z +2026-01-30T15:28:54.2246941Z at _log (node_modules/dotenv/lib/main.js:142:11) +2026-01-30T15:28:54.2247307Z +2026-01-30T15:28:54.2247443Z console.error +2026-01-30T15:28:54.2248611Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":"Connected to database: sample_mflix","level":"debug"} +2026-01-30T15:28:54.2249637Z +2026-01-30T15:28:54.2250320Z   42 | database = client.db("sample_mflix"); +2026-01-30T15:28:54.2251228Z  43 | +2026-01-30T15:28:54.2252544Z > 44 | logger.debug(`Connected to database: ${database.databaseName}`); +2026-01-30T15:28:54.2253654Z  | ^ +2026-01-30T15:28:54.2254163Z  45 | +2026-01-30T15:28:54.2254730Z  46 | return database; +2026-01-30T15:28:54.2255438Z  47 | } catch (error) { +2026-01-30T15:28:54.2255791Z +2026-01-30T15:28:54.2256277Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2257597Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2259627Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2261289Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2262414Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2263716Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2265092Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:81:14) +2026-01-30T15:28:54.2266043Z at _connectToDatabase (src/config/database.ts:44:12) +2026-01-30T15:28:54.2266963Z at connectToDatabase (src/config/database.ts:62:10) +2026-01-30T15:28:54.2267679Z at Object. (tests/integration/setup.ts:110:5) +2026-01-30T15:28:54.2268096Z +2026-01-30T15:28:54.2268230Z console.error +2026-01-30T15:28:54.2269931Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} +2026-01-30T15:28:54.2271315Z +2026-01-30T15:28:54.2271530Z   32 | +2026-01-30T15:28:54.2272644Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:54.2274071Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:54.2275115Z  | ^ +2026-01-30T15:28:54.2275743Z  35 | headers: { +2026-01-30T15:28:54.2276825Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:54.2278313Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:54.2279024Z +2026-01-30T15:28:54.2279511Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2280821Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2282549Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2283796Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2284782Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2286076Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2287295Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:54.2288397Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:54.2289378Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:54.2290171Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2290926Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2291520Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2292152Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2292946Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2293588Z at read (node_modules/body-parser/lib/read.js:42:5) +2026-01-30T15:28:54.2294436Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:54.2295353Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2296096Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2296697Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2297514Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2298166Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2298774Z at node_modules/body-parser/lib/read.js:171:5 +2026-01-30T15:28:54.2299450Z at invokeCallback (node_modules/raw-body/index.js:238:16) +2026-01-30T15:28:54.2300128Z at done (node_modules/raw-body/index.js:227:7) +2026-01-30T15:28:54.2300854Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) +2026-01-30T15:28:54.2301323Z +2026-01-30T15:28:54.2301457Z console.error +2026-01-30T15:28:54.2302640Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 16ms"} +2026-01-30T15:28:54.2303697Z +2026-01-30T15:28:54.2305159Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:54.2306432Z  166 | +2026-01-30T15:28:54.2307703Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:54.2308894Z  | ^ +2026-01-30T15:28:54.2309402Z  168 | } +2026-01-30T15:28:54.2309803Z  169 | +2026-01-30T15:28:54.2310490Z  170 | export default logger; +2026-01-30T15:28:54.2310964Z +2026-01-30T15:28:54.2311449Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2312965Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2314542Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2315795Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2316777Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2318084Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2319309Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:54.2320095Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:54.2320871Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:54.2321389Z +2026-01-30T15:28:54.2321532Z console.error +2026-01-30T15:28:54.2323316Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} +2026-01-30T15:28:54.2324716Z +2026-01-30T15:28:54.2324912Z   32 | +2026-01-30T15:28:54.2325700Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:54.2327095Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:54.2328147Z  | ^ +2026-01-30T15:28:54.2328759Z  35 | headers: { +2026-01-30T15:28:54.2329827Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:54.2331299Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:54.2332014Z +2026-01-30T15:28:54.2332623Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2333951Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2336192Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2337439Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2338420Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2339704Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2340924Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:54.2342397Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:54.2343380Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:54.2344170Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2344939Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2345532Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2346161Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2346804Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2347433Z at read (node_modules/body-parser/lib/read.js:42:5) +2026-01-30T15:28:54.2348272Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:54.2349195Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2349943Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2350544Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2351156Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2351848Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2352595Z at node_modules/body-parser/lib/read.js:171:5 +2026-01-30T15:28:54.2353295Z at invokeCallback (node_modules/raw-body/index.js:238:16) +2026-01-30T15:28:54.2353964Z at done (node_modules/raw-body/index.js:227:7) +2026-01-30T15:28:54.2354694Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) +2026-01-30T15:28:54.2355180Z +2026-01-30T15:28:54.2355314Z console.error +2026-01-30T15:28:54.2394523Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":"Error occurred: Missing required fields: title","stack":"ValidationError: Missing required fields: title\n at validateRequiredFields (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/src/utils/errorHandler.ts:209:11)\n at createMovie (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/src/controllers/movieController.ts:211:25)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/src/utils/errorHandler.ts:142:7\n at Layer.handleRequest (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/layer.js:152:17)\n at next (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/route.js:157:13)\n at Route.dispatch (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/route.js:117:3)\n at handle (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:435:11)\n at Layer.handleRequest (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/layer.js:152:17)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:295:15\n at processParams (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:582:12)\n at next (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:291:5)\n at Function.handle (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:186:3)\n at router (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:60:12)\n at Layer.handleRequest (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/layer.js:152:17)\n at trimPrefix (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:342:13)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:297:9\n at processParams (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:582:12)\n at next (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:291:5)\n at requestLogger (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/src/middleware/requestLogger.ts:49:3)\n at Layer.handleRequest (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/layer.js:152:17)\n at trimPrefix (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:342:13)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:297:9\n at processParams (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:582:12)\n at next (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:291:5)\n at read (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/body-parser/lib/read.js:42:5)\n at urlencodedParser (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/body-parser/lib/types/urlencoded.js:57:5)\n at Layer.handleRequest (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/layer.js:152:17)\n at trimPrefix (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:342:13)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:297:9\n at processParams (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:582:12)\n at next (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:291:5)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/body-parser/lib/read.js:171:5\n at AsyncResource.runInAsyncScope (node:async_hooks:206:9)\n at invokeCallback (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/raw-body/index.js:238:16)\n at done (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/raw-body/index.js:227:7)\n at IncomingMessage.onEnd (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/raw-body/index.js:287:7)\n at IncomingMessage.emit (node:events:524:28)\n at endReadableNT (node:internal/streams/readable:1698:12)\n at processTicksAndRejections (node:internal/process/task_queues:82:21)","url":"/api/movies","method":"POST","level":"error"} +2026-01-30T15:28:54.2428505Z +2026-01-30T15:28:54.2429140Z   40 | // Log the error for debugging purposes +2026-01-30T15:28:54.2430268Z  41 | // The logger automatically handles environment-specific behavior +2026-01-30T15:28:54.2431542Z > 42 | logger.error("Error occurred:", { +2026-01-30T15:28:54.2432579Z  | ^ +2026-01-30T15:28:54.2433367Z  43 | message: err.message, +2026-01-30T15:28:54.2434429Z  44 | stack: err.stack, +2026-01-30T15:28:54.2435263Z  45 | url: req.url, +2026-01-30T15:28:54.2435674Z +2026-01-30T15:28:54.2436164Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2437481Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2439046Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2440456Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2441438Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2442868Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2444101Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:54.2445202Z at DerivedLogger. [as error] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:54.2446141Z at errorHandler (src/utils/errorHandler.ts:42:10) +2026-01-30T15:28:54.2446881Z at Layer.handleError (node_modules/router/lib/layer.js:116:17) +2026-01-30T15:28:54.2447635Z at trimPrefix (node_modules/router/index.js:340:13) +2026-01-30T15:28:54.2448250Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2448884Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2449538Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2450112Z at node_modules/router/index.js:688:15 +2026-01-30T15:28:54.2450679Z at next (node_modules/router/index.js:276:14) +2026-01-30T15:28:54.2451294Z at next (node_modules/router/lib/route.js:132:14) +2026-01-30T15:28:54.2451730Z +2026-01-30T15:28:54.2451866Z console.error +2026-01-30T15:28:54.2453104Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"warn","message":"POST /api/movies 400 - 29ms"} +2026-01-30T15:28:54.2454077Z +2026-01-30T15:28:54.2455485Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:54.2456759Z  166 | +2026-01-30T15:28:54.2458032Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:54.2459227Z  | ^ +2026-01-30T15:28:54.2459731Z  168 | } +2026-01-30T15:28:54.2460118Z  169 | +2026-01-30T15:28:54.2461113Z  170 | export default logger; +2026-01-30T15:28:54.2461593Z +2026-01-30T15:28:54.2462073Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2463537Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2465100Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2466330Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2467310Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2468602Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2469809Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:54.2470594Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:54.2471562Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:54.2472077Z +2026-01-30T15:28:54.2472353Z console.error +2026-01-30T15:28:54.2474074Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies/batch"} +2026-01-30T15:28:54.2475482Z +2026-01-30T15:28:54.2475691Z   32 | +2026-01-30T15:28:54.2476479Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:54.2478066Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:54.2479116Z  | ^ +2026-01-30T15:28:54.2479724Z  35 | headers: { +2026-01-30T15:28:54.2480793Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:54.2482462Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:54.2483177Z +2026-01-30T15:28:54.2483665Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2484983Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2486534Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2487805Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2488791Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2490086Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2491309Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:54.2492544Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:54.2493534Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:54.2494325Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2495073Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2495666Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2496291Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2496932Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2497570Z at read (node_modules/body-parser/lib/read.js:42:5) +2026-01-30T15:28:54.2498408Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:54.2499335Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2500084Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2500675Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2501286Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2501927Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2502664Z at node_modules/body-parser/lib/read.js:171:5 +2026-01-30T15:28:54.2503341Z at invokeCallback (node_modules/raw-body/index.js:238:16) +2026-01-30T15:28:54.2504015Z at done (node_modules/raw-body/index.js:227:7) +2026-01-30T15:28:54.2504753Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) +2026-01-30T15:28:54.2505226Z +2026-01-30T15:28:54.2505360Z console.error +2026-01-30T15:28:54.2506410Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST /batch 201 - 8ms"} +2026-01-30T15:28:54.2507489Z +2026-01-30T15:28:54.2508897Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:54.2510170Z  166 | +2026-01-30T15:28:54.2511442Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:54.2512777Z  | ^ +2026-01-30T15:28:54.2513289Z  168 | } +2026-01-30T15:28:54.2513878Z  169 | +2026-01-30T15:28:54.2514557Z  170 | export default logger; +2026-01-30T15:28:54.2515024Z +2026-01-30T15:28:54.2515499Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2516830Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2518388Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2519619Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2520594Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2521873Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2523238Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:54.2524028Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:54.2524807Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:54.2525321Z +2026-01-30T15:28:54.2525461Z console.error +2026-01-30T15:28:54.2527131Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies/batch"} +2026-01-30T15:28:54.2528552Z +2026-01-30T15:28:54.2528747Z   32 | +2026-01-30T15:28:54.2529543Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:54.2530937Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:54.2531978Z  | ^ +2026-01-30T15:28:54.2532747Z  35 | headers: { +2026-01-30T15:28:54.2533814Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:54.2535290Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:54.2536014Z +2026-01-30T15:28:54.2536489Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2537812Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2539361Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2540597Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2541579Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2543004Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2544224Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:54.2545327Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:54.2546550Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:54.2547342Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2548087Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2548676Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2549295Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2549938Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2550573Z at read (node_modules/body-parser/lib/read.js:42:5) +2026-01-30T15:28:54.2551578Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:54.2552691Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2553432Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2554022Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2554652Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2555283Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2555891Z at node_modules/body-parser/lib/read.js:171:5 +2026-01-30T15:28:54.2556572Z at invokeCallback (node_modules/raw-body/index.js:238:16) +2026-01-30T15:28:54.2557236Z at done (node_modules/raw-body/index.js:227:7) +2026-01-30T15:28:54.2557963Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) +2026-01-30T15:28:54.2558439Z +2026-01-30T15:28:54.2558577Z console.error +2026-01-30T15:28:54.2559619Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"warn","message":"POST /batch 400 - 1ms"} +2026-01-30T15:28:54.2560820Z +2026-01-30T15:28:54.2562123Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:54.2563607Z  166 | +2026-01-30T15:28:54.2564881Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:54.2566080Z  | ^ +2026-01-30T15:28:54.2566592Z  168 | } +2026-01-30T15:28:54.2566977Z  169 | +2026-01-30T15:28:54.2567656Z  170 | export default logger; +2026-01-30T15:28:54.2568130Z +2026-01-30T15:28:54.2568616Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2569937Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2571499Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2572884Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2573868Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2575154Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2576369Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:54.2577141Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:54.2577910Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:54.2578434Z +2026-01-30T15:28:54.2578568Z console.error +2026-01-30T15:28:54.2580209Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} +2026-01-30T15:28:54.2581778Z +2026-01-30T15:28:54.2581987Z   32 | +2026-01-30T15:28:54.2582922Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:54.2584336Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:54.2585384Z  | ^ +2026-01-30T15:28:54.2585999Z  35 | headers: { +2026-01-30T15:28:54.2587069Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:54.2588736Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:54.2589452Z +2026-01-30T15:28:54.2589937Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2591265Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2592979Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2594217Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2595212Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2596498Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2597713Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:54.2598831Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:54.2599819Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:54.2600604Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2601361Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2601963Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2602749Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2603397Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2604028Z at read (node_modules/body-parser/lib/read.js:42:5) +2026-01-30T15:28:54.2604866Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:54.2605793Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2606546Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2607131Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2607753Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2608388Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2608986Z at node_modules/body-parser/lib/read.js:171:5 +2026-01-30T15:28:54.2609675Z at invokeCallback (node_modules/raw-body/index.js:238:16) +2026-01-30T15:28:54.2610346Z at done (node_modules/raw-body/index.js:227:7) +2026-01-30T15:28:54.2611079Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) +2026-01-30T15:28:54.2611556Z +2026-01-30T15:28:54.2611698Z console.error +2026-01-30T15:28:54.2612840Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 8ms"} +2026-01-30T15:28:54.2613735Z +2026-01-30T15:28:54.2614996Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:54.2616295Z  166 | +2026-01-30T15:28:54.2617580Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:54.2618989Z  | ^ +2026-01-30T15:28:54.2619508Z  168 | } +2026-01-30T15:28:54.2619903Z  169 | +2026-01-30T15:28:54.2620574Z  170 | export default logger; +2026-01-30T15:28:54.2621048Z +2026-01-30T15:28:54.2621525Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2623013Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2624568Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2625999Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2626995Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2628292Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2629513Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:54.2630293Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:54.2631070Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:54.2631587Z +2026-01-30T15:28:54.2631722Z console.error +2026-01-30T15:28:54.2633466Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/697cce35e56c4fd35ac6c981"} +2026-01-30T15:28:54.2634772Z +2026-01-30T15:28:54.2634983Z   32 | +2026-01-30T15:28:54.2635771Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:54.2637173Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:54.2638233Z  | ^ +2026-01-30T15:28:54.2638835Z  35 | headers: { +2026-01-30T15:28:54.2639908Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:54.2641396Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:54.2642104Z +2026-01-30T15:28:54.2642717Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2644050Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2645616Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2646857Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2647839Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2649129Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2650338Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:54.2651439Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:54.2652635Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:54.2653457Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2654205Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2654805Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2655421Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2656260Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2656898Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:54.2657734Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:54.2658660Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2659407Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2659997Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2660739Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2661388Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2662318Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:54.2663080Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:28:54.2663915Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2664661Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2665254Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2665865Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2666504Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2667100Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:28:54.2667673Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:28:54.2668319Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:28:54.2668964Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:28:54.2669602Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:28:54.2670340Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:28:54.2671126Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2671861Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2672594Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2673206Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2673839Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2674496Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:28:54.2675297Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:28:54.2676096Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:28:54.2676515Z +2026-01-30T15:28:54.2676648Z console.error +2026-01-30T15:28:54.2677806Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /697cce35e56c4fd35ac6c981 200 - 5ms"} +2026-01-30T15:28:54.2678794Z +2026-01-30T15:28:54.2680199Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:54.2681482Z  166 | +2026-01-30T15:28:54.2682897Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:54.2684097Z  | ^ +2026-01-30T15:28:54.2684605Z  168 | } +2026-01-30T15:28:54.2684999Z  169 | +2026-01-30T15:28:54.2685667Z  170 | export default logger; +2026-01-30T15:28:54.2686142Z +2026-01-30T15:28:54.2686620Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2687948Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2689504Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2690931Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2691913Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2693353Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2694564Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:54.2695348Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:54.2696120Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:54.2696818Z +2026-01-30T15:28:54.2696954Z console.error +2026-01-30T15:28:54.2698504Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/697cce35e56c4fd35ac6c982"} +2026-01-30T15:28:54.2699796Z +2026-01-30T15:28:54.2700019Z   32 | +2026-01-30T15:28:54.2700811Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:54.2702386Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:54.2703209Z  | ^ +2026-01-30T15:28:54.2703578Z  35 | headers: { +2026-01-30T15:28:54.2704185Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:54.2704993Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:54.2705395Z +2026-01-30T15:28:54.2705667Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2706384Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2707226Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2707895Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2708430Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2709129Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2709787Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:54.2710396Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:54.2710947Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:54.2711388Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2711811Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2712148Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2712719Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2713078Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2713437Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:54.2713899Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:54.2714401Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2714817Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2715153Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2715490Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2715845Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2716191Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:54.2716750Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:28:54.2717202Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2717602Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2717931Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2718278Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2718625Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2718958Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:28:54.2719279Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:28:54.2719747Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:28:54.2720108Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:28:54.2720461Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:28:54.2720858Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:28:54.2721290Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2721702Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2722033Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2722586Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2722946Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2723307Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:28:54.2723749Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:28:54.2724196Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:28:54.2724431Z +2026-01-30T15:28:54.2724512Z console.error +2026-01-30T15:28:54.2725160Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"warn","message":"GET /697cce35e56c4fd35ac6c982 404 - 3ms"} +2026-01-30T15:28:54.2725761Z +2026-01-30T15:28:54.2726524Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:28:54.2727214Z  166 | +2026-01-30T15:28:54.2727905Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:28:54.2728554Z  | ^ +2026-01-30T15:28:54.2728838Z  168 | } +2026-01-30T15:28:54.2729060Z  169 | +2026-01-30T15:28:54.2729442Z  170 | export default logger; +2026-01-30T15:28:54.2729699Z +2026-01-30T15:28:54.2729965Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2730693Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2731546Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2732318Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2732864Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2733557Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2734214Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:28:54.2734643Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:28:54.2735068Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:28:54.2735346Z +2026-01-30T15:28:54.2735432Z console.error +2026-01-30T15:28:54.2736223Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/invalid-id"} +2026-01-30T15:28:54.2737049Z +2026-01-30T15:28:54.2737166Z   32 | +2026-01-30T15:28:54.2737614Z  33 | // Log request details at debug level when request starts +2026-01-30T15:28:54.2738379Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:28:54.2738959Z  | ^ +2026-01-30T15:28:54.2739302Z  35 | headers: { +2026-01-30T15:28:54.2740008Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:28:54.2740817Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:28:54.2741220Z +2026-01-30T15:28:54.2741487Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:28:54.2742356Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:28:54.2743234Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:28:54.2743905Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:28:54.2744439Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:28:54.2745127Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:28:54.2745795Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:28:54.2746399Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:28:54.2746947Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:28:54.2747422Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2747851Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2748183Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2748536Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2748896Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2749245Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:54.2749711Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:28:54.2750227Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2750640Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2750975Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2751313Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2751678Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2752065Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:28:54.2752593Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:28:54.2753054Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2753462Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2753797Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2754164Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2754536Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2754866Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:28:54.2755191Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:28:54.2755552Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:28:54.2756051Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:28:54.2756412Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:28:54.2756825Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:28:54.2757250Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:28:54.2757663Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:28:54.2757985Z at node_modules/router/index.js:297:9 +2026-01-30T15:28:54.2758322Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:28:54.2758679Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:28:54.2759171Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:28:54.2759621Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:28:54.2760073Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:28:54.2760302Z +2026-01-30T15:34:58.4859753Z FAIL tests/integration/advancedEndpoints.integration.test.ts (370.976 s) +2026-01-30T15:34:58.5544957Z ● Console +2026-01-30T15:34:58.5545527Z +2026-01-30T15:34:58.5565696Z console.log +2026-01-30T15:34:58.5566891Z [dotenv@17.2.3] injecting env (0) from .env -- tip: ⚙️ write to custom object with { processEnv: myObject } +2026-01-30T15:34:58.5567618Z +2026-01-30T15:34:58.5567898Z at _log (node_modules/dotenv/lib/main.js:142:11) +2026-01-30T15:34:58.5568279Z +2026-01-30T15:34:58.5568418Z console.log +2026-01-30T15:34:58.5569461Z [dotenv@17.2.3] injecting env (0) from .env -- tip: 🔑 add access controls to secrets: https://dotenvx.com/ops +2026-01-30T15:34:58.5570234Z +2026-01-30T15:34:58.5570507Z at _log (node_modules/dotenv/lib/main.js:142:11) +2026-01-30T15:34:58.5570884Z +2026-01-30T15:34:58.5571018Z console.log +2026-01-30T15:34:58.5571315Z +2026-01-30T15:34:58.5572069Z ⚠️ Vector Search tests skipped: VOYAGE_API_KEY environment variable is not set +2026-01-30T15:34:58.5573288Z To run Vector Search integration tests, set VOYAGE_API_KEY in your .env file +2026-01-30T15:34:58.5574239Z Example: VOYAGE_API_KEY=your-api-key npm run test:integration +2026-01-30T15:34:58.5574718Z +2026-01-30T15:34:58.5575256Z at Object..exports.describeVectorSearch (tests/integration/setup.ts:97:21) +2026-01-30T15:34:58.5575899Z +2026-01-30T15:34:58.5576040Z console.error +2026-01-30T15:34:58.5577208Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":"Connected to database: sample_mflix","level":"debug"} +2026-01-30T15:34:58.5578220Z +2026-01-30T15:34:58.5578916Z   42 | database = client.db("sample_mflix"); +2026-01-30T15:34:58.5579731Z  43 | +2026-01-30T15:34:58.5580865Z > 44 | logger.debug(`Connected to database: ${database.databaseName}`); +2026-01-30T15:34:58.5581982Z  | ^ +2026-01-30T15:34:58.5582644Z  45 | +2026-01-30T15:34:58.5583211Z  46 | return database; +2026-01-30T15:34:58.5583915Z  47 | } catch (error) { +2026-01-30T15:34:58.5584267Z +2026-01-30T15:34:58.5584757Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5586138Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5587728Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5589003Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5589998Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5591306Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5593296Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:81:14) +2026-01-30T15:34:58.5594275Z at _connectToDatabase (src/config/database.ts:44:12) +2026-01-30T15:34:58.5594960Z at connectToDatabase (src/config/database.ts:62:10) +2026-01-30T15:34:58.5595674Z at Object. (tests/integration/setup.ts:110:5) +2026-01-30T15:34:58.5596099Z +2026-01-30T15:34:58.5596239Z console.error +2026-01-30T15:34:58.5597927Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} +2026-01-30T15:34:58.5599578Z +2026-01-30T15:34:58.5599787Z   32 | +2026-01-30T15:34:58.5600595Z  33 | // Log request details at debug level when request starts +2026-01-30T15:34:58.5602022Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:34:58.5604497Z  | ^ +2026-01-30T15:34:58.5605136Z  35 | headers: { +2026-01-30T15:34:58.5606231Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:34:58.5607861Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:34:58.5608597Z +2026-01-30T15:34:58.5609084Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5610441Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5612020Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5613429Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5614433Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5615746Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5616989Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:34:58.5618117Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:34:58.5619108Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:34:58.5619923Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5621055Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5621645Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5622427Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5623113Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5623758Z at read (node_modules/body-parser/lib/read.js:42:5) +2026-01-30T15:34:58.5624619Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:34:58.5625558Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5626320Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5626925Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5627549Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5628206Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5628818Z at node_modules/body-parser/lib/read.js:171:5 +2026-01-30T15:34:58.5629509Z at invokeCallback (node_modules/raw-body/index.js:238:16) +2026-01-30T15:34:58.5630188Z at done (node_modules/raw-body/index.js:227:7) +2026-01-30T15:34:58.5631141Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) +2026-01-30T15:34:58.5631627Z +2026-01-30T15:34:58.5631776Z console.error +2026-01-30T15:34:58.5632940Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 23ms"} +2026-01-30T15:34:58.5633851Z +2026-01-30T15:34:58.5635291Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:34:58.5636590Z  166 | +2026-01-30T15:34:58.5638053Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:34:58.5639262Z  | ^ +2026-01-30T15:34:58.5639779Z  168 | } +2026-01-30T15:34:58.5640162Z  169 | +2026-01-30T15:34:58.5640860Z  170 | export default logger; +2026-01-30T15:34:58.5641335Z +2026-01-30T15:34:58.5641830Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5643421Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5645010Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5646234Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5647249Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5648562Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5649803Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:34:58.5650598Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:34:58.5651384Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:34:58.5651905Z +2026-01-30T15:34:58.5652044Z console.error +2026-01-30T15:34:58.5654130Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"limit":"10"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/aggregations/reportingByComments?limit=10"} +2026-01-30T15:34:58.5655701Z +2026-01-30T15:34:58.5655913Z   32 | +2026-01-30T15:34:58.5656722Z  33 | // Log request details at debug level when request starts +2026-01-30T15:34:58.5658147Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:34:58.5659208Z  | ^ +2026-01-30T15:34:58.5659824Z  35 | headers: { +2026-01-30T15:34:58.5660904Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:34:58.5662544Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:34:58.5663277Z +2026-01-30T15:34:58.5663760Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5665102Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5666685Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5667954Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5668958Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5670468Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5671742Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:34:58.5673033Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:34:58.5674030Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:34:58.5674821Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5675582Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5676362Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5676983Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5677639Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5678270Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:34:58.5679126Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:34:58.5680061Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5680804Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5681401Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5682021Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5682908Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5683540Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:34:58.5684297Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:34:58.5685137Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5685931Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5686537Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5687153Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5687815Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5688422Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:34:58.5689000Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:34:58.5689656Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:34:58.5690307Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:34:58.5690952Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:34:58.5691690Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:34:58.5692621Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5693382Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5693980Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5694592Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5695243Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5695902Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:34:58.5696711Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:34:58.5697529Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:34:58.5697949Z +2026-01-30T15:34:58.5698087Z console.error +2026-01-30T15:34:58.5699725Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} +2026-01-30T15:34:58.5701136Z +2026-01-30T15:34:58.5701341Z   32 | +2026-01-30T15:34:58.5702138Z  33 | // Log request details at debug level when request starts +2026-01-30T15:34:58.5703704Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:34:58.5704947Z  | ^ +2026-01-30T15:34:58.5705558Z  35 | headers: { +2026-01-30T15:34:58.5706657Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:34:58.5708159Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:34:58.5708891Z +2026-01-30T15:34:58.5709373Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5710720Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5712698Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5713967Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5714981Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5716280Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5717518Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:34:58.5718639Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:34:58.5719641Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:34:58.5720436Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5721425Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5722025Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5722785Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5723447Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5724089Z at read (node_modules/body-parser/lib/read.js:42:5) +2026-01-30T15:34:58.5724936Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:34:58.5725872Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5726625Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5727223Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5727849Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5728490Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5729095Z at node_modules/body-parser/lib/read.js:171:5 +2026-01-30T15:34:58.5729792Z at invokeCallback (node_modules/raw-body/index.js:238:16) +2026-01-30T15:34:58.5730463Z at done (node_modules/raw-body/index.js:227:7) +2026-01-30T15:34:58.5731200Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) +2026-01-30T15:34:58.5731690Z +2026-01-30T15:34:58.5731830Z console.error +2026-01-30T15:34:58.5732986Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 7ms"} +2026-01-30T15:34:58.5733885Z +2026-01-30T15:34:58.5735323Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:34:58.5736624Z  166 | +2026-01-30T15:34:58.5737903Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:34:58.5739122Z  | ^ +2026-01-30T15:34:58.5739639Z  168 | } +2026-01-30T15:34:58.5740021Z  169 | +2026-01-30T15:34:58.5740701Z  170 | export default logger; +2026-01-30T15:34:58.5741356Z +2026-01-30T15:34:58.5741846Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5743422Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5745007Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5746273Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5747272Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5748754Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5749993Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:34:58.5750789Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:34:58.5751573Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:34:58.5752099Z +2026-01-30T15:34:58.5752370Z console.error +2026-01-30T15:34:58.5754198Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"limit":"3"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/aggregations/reportingByComments?limit=3"} +2026-01-30T15:34:58.5755738Z +2026-01-30T15:34:58.5755943Z   32 | +2026-01-30T15:34:58.5756736Z  33 | // Log request details at debug level when request starts +2026-01-30T15:34:58.5758164Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:34:58.5759221Z  | ^ +2026-01-30T15:34:58.5759830Z  35 | headers: { +2026-01-30T15:34:58.5760910Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:34:58.5762557Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:34:58.5763305Z +2026-01-30T15:34:58.5763788Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5765140Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5766733Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5767983Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5768981Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5770288Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5771532Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:34:58.5772884Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:34:58.5773890Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:34:58.5774684Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5775444Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5776049Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5776679Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5777345Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5777986Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:34:58.5778833Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:34:58.5779943Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5780702Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5781291Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5781916Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5782706Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5783331Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:34:58.5784080Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:34:58.5784922Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5785837Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5786477Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5787090Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5787738Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5788348Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:34:58.5788924Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:34:58.5789584Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:34:58.5790236Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:34:58.5790881Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:34:58.5791623Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:34:58.5792561Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5793311Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5793914Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5794532Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5795172Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5795831Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:34:58.5796648Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:34:58.5797463Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:34:58.5797892Z +2026-01-30T15:34:58.5798024Z console.error +2026-01-30T15:34:58.5799667Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} +2026-01-30T15:34:58.5801056Z +2026-01-30T15:34:58.5801266Z   32 | +2026-01-30T15:34:58.5802062Z  33 | // Log request details at debug level when request starts +2026-01-30T15:34:58.5803634Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:34:58.5804689Z  | ^ +2026-01-30T15:34:58.5805295Z  35 | headers: { +2026-01-30T15:34:58.5806393Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:34:58.5807889Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:34:58.5808619Z +2026-01-30T15:34:58.5809104Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5810452Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5812047Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5813540Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5814549Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5816046Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5817282Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:34:58.5818397Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:34:58.5819392Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:34:58.5820181Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5821171Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5821995Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5822781Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5823443Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5824083Z at read (node_modules/body-parser/lib/read.js:42:5) +2026-01-30T15:34:58.5824931Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:34:58.5825868Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5826636Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5827228Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5827860Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5828508Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5829106Z at node_modules/body-parser/lib/read.js:171:5 +2026-01-30T15:34:58.5829812Z at invokeCallback (node_modules/raw-body/index.js:238:16) +2026-01-30T15:34:58.5830504Z at done (node_modules/raw-body/index.js:227:7) +2026-01-30T15:34:58.5831231Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) +2026-01-30T15:34:58.5831719Z +2026-01-30T15:34:58.5831852Z console.error +2026-01-30T15:34:58.5833129Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 6ms"} +2026-01-30T15:34:58.5834036Z +2026-01-30T15:34:58.5835486Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:34:58.5836794Z  166 | +2026-01-30T15:34:58.5838079Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:34:58.5839277Z  | ^ +2026-01-30T15:34:58.5839805Z  168 | } +2026-01-30T15:34:58.5840198Z  169 | +2026-01-30T15:34:58.5840872Z  170 | export default logger; +2026-01-30T15:34:58.5841353Z +2026-01-30T15:34:58.5841851Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5843376Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5844988Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5846262Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5847280Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5848605Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5849852Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:34:58.5850647Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:34:58.5851436Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:34:58.5851964Z +2026-01-30T15:34:58.5852574Z console.error +2026-01-30T15:34:58.5856292Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"limit":"100"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/aggregations/reportingByComments?limit=100"} +2026-01-30T15:34:58.5857880Z +2026-01-30T15:34:58.5858115Z   32 | +2026-01-30T15:34:58.5858922Z  33 | // Log request details at debug level when request starts +2026-01-30T15:34:58.5860357Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:34:58.5861639Z  | ^ +2026-01-30T15:34:58.5882610Z  35 | headers: { +2026-01-30T15:34:58.5883895Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:34:58.5885436Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:34:58.5886206Z +2026-01-30T15:34:58.5886708Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5888050Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5889620Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5890875Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5891886Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5893365Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5894603Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:34:58.5895719Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:34:58.5896707Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:34:58.5897513Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5898257Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5898857Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5899483Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5900126Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5900764Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:34:58.5901606Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:34:58.5902673Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5903426Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5904028Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5904639Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5905281Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5905908Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:34:58.5906643Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:34:58.5907477Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5908222Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5908814Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5909429Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5910073Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5910672Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:34:58.5911508Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:34:58.5912309Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:34:58.5912982Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:34:58.5913636Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:34:58.5914361Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:34:58.5915140Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5915886Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5916471Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5917303Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5917946Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5918596Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:34:58.5919391Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:34:58.5920210Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:34:58.5920889Z +2026-01-30T15:34:58.5921028Z console.error +2026-01-30T15:34:58.5922519Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /aggregations/reportingByComments?limit=10 200 - 288070ms"} +2026-01-30T15:34:58.5923671Z +2026-01-30T15:34:58.5925097Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:34:58.5926378Z  166 | +2026-01-30T15:34:58.5927654Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:34:58.5928849Z  | ^ +2026-01-30T15:34:58.5929355Z  168 | } +2026-01-30T15:34:58.5929750Z  169 | +2026-01-30T15:34:58.5930425Z  170 | export default logger; +2026-01-30T15:34:58.5930894Z +2026-01-30T15:34:58.5931372Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5933017Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5934603Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5935854Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5936854Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5938147Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5939364Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:34:58.5940141Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:34:58.5940916Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:34:58.5941431Z +2026-01-30T15:34:58.5941571Z console.error +2026-01-30T15:34:58.5943340Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} +2026-01-30T15:34:58.5944720Z +2026-01-30T15:34:58.5944925Z   32 | +2026-01-30T15:34:58.5945736Z  33 | // Log request details at debug level when request starts +2026-01-30T15:34:58.5947139Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:34:58.5948191Z  | ^ +2026-01-30T15:34:58.5948995Z  35 | headers: { +2026-01-30T15:34:58.5950067Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:34:58.5951533Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:34:58.5952389Z +2026-01-30T15:34:58.5952869Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5954186Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5955901Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5957147Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5958129Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5959413Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5960623Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:34:58.5961721Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:34:58.5962829Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:34:58.5963620Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5964365Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5964967Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5965595Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5966242Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5966865Z at read (node_modules/body-parser/lib/read.js:42:5) +2026-01-30T15:34:58.5967710Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:34:58.5968630Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.5969365Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.5969986Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.5970617Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.5971263Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.5971866Z at node_modules/body-parser/lib/read.js:171:5 +2026-01-30T15:34:58.5972680Z at invokeCallback (node_modules/raw-body/index.js:238:16) +2026-01-30T15:34:58.5973372Z at done (node_modules/raw-body/index.js:227:7) +2026-01-30T15:34:58.5974107Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) +2026-01-30T15:34:58.5974590Z +2026-01-30T15:34:58.5974722Z console.error +2026-01-30T15:34:58.5975751Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 6ms"} +2026-01-30T15:34:58.5976649Z +2026-01-30T15:34:58.5978063Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:34:58.5979350Z  166 | +2026-01-30T15:34:58.5980630Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:34:58.5981839Z  | ^ +2026-01-30T15:34:58.5982494Z  168 | } +2026-01-30T15:34:58.5982883Z  169 | +2026-01-30T15:34:58.5983599Z  170 | export default logger; +2026-01-30T15:34:58.5984068Z +2026-01-30T15:34:58.5984557Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.5986117Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.5987728Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.5988989Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.5989974Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.5991271Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.5992886Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:34:58.5993669Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:34:58.5994447Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:34:58.5994971Z +2026-01-30T15:34:58.5995108Z console.error +2026-01-30T15:34:58.5996741Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} +2026-01-30T15:34:58.5998129Z +2026-01-30T15:34:58.5998330Z   32 | +2026-01-30T15:34:58.5999126Z  33 | // Log request details at debug level when request starts +2026-01-30T15:34:58.6000539Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:34:58.6001591Z  | ^ +2026-01-30T15:34:58.6002334Z  35 | headers: { +2026-01-30T15:34:58.6003428Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:34:58.6004914Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:34:58.6005633Z +2026-01-30T15:34:58.6006111Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.6007454Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.6009016Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.6010248Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.6011247Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.6012672Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.6013904Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:34:58.6015018Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:34:58.6016006Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:34:58.6016796Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.6017546Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.6018142Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.6018757Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.6019407Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.6020047Z at read (node_modules/body-parser/lib/read.js:42:5) +2026-01-30T15:34:58.6021098Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:34:58.6022051Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.6023170Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.6023778Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.6024403Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.6025044Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.6025648Z at node_modules/body-parser/lib/read.js:171:5 +2026-01-30T15:34:58.6026330Z at invokeCallback (node_modules/raw-body/index.js:238:16) +2026-01-30T15:34:58.6026998Z at done (node_modules/raw-body/index.js:227:7) +2026-01-30T15:34:58.6027730Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) +2026-01-30T15:34:58.6028363Z +2026-01-30T15:34:58.6028505Z console.error +2026-01-30T15:34:58.6029527Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 9ms"} +2026-01-30T15:34:58.6030410Z +2026-01-30T15:34:58.6031836Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:34:58.6033266Z  166 | +2026-01-30T15:34:58.6034540Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:34:58.6035730Z  | ^ +2026-01-30T15:34:58.6036238Z  168 | } +2026-01-30T15:34:58.6036621Z  169 | +2026-01-30T15:34:58.6037288Z  170 | export default logger; +2026-01-30T15:34:58.6037771Z +2026-01-30T15:34:58.6038251Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.6039586Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.6041143Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.6042521Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.6043510Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.6044802Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.6046023Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:34:58.6046803Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:34:58.6047579Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:34:58.6048099Z +2026-01-30T15:34:58.6048230Z console.error +2026-01-30T15:34:58.6050015Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"limit":"50"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/aggregations/reportingByYear?limit=50"} +2026-01-30T15:34:58.6051523Z +2026-01-30T15:34:58.6051723Z   32 | +2026-01-30T15:34:58.6052648Z  33 | // Log request details at debug level when request starts +2026-01-30T15:34:58.6054066Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { +2026-01-30T15:34:58.6055115Z  | ^ +2026-01-30T15:34:58.6055714Z  35 | headers: { +2026-01-30T15:34:58.6056787Z  36 | "user-agent": req.get("user-agent"), +2026-01-30T15:34:58.6058274Z  37 | "content-type": req.get("content-type"), +2026-01-30T15:34:58.6059000Z +2026-01-30T15:34:58.6059478Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.6060987Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.6062694Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.6063941Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.6064929Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.6066225Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.6067617Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) +2026-01-30T15:34:58.6068722Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) +2026-01-30T15:34:58.6069715Z at requestLogger (src/middleware/requestLogger.ts:34:10) +2026-01-30T15:34:58.6070517Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.6071263Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.6071860Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.6072736Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.6073390Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.6074023Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:34:58.6074852Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) +2026-01-30T15:34:58.6075782Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.6076522Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.6077107Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.6077725Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.6078375Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.6078997Z at read (node_modules/body-parser/lib/read.js:53:5) +2026-01-30T15:34:58.6079745Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) +2026-01-30T15:34:58.6080576Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.6081310Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.6081899Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.6082648Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.6083284Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.6083886Z at cors (node_modules/cors/lib/index.js:188:7) +2026-01-30T15:34:58.6084462Z at node_modules/cors/lib/index.js:224:17 +2026-01-30T15:34:58.6085110Z at originCallback (node_modules/cors/lib/index.js:214:15) +2026-01-30T15:34:58.6085754Z at node_modules/cors/lib/index.js:219:13 +2026-01-30T15:34:58.6086449Z at optionsCallback (node_modules/cors/lib/index.js:199:9) +2026-01-30T15:34:58.6087209Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) +2026-01-30T15:34:58.6087990Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) +2026-01-30T15:34:58.6088728Z at trimPrefix (node_modules/router/index.js:342:13) +2026-01-30T15:34:58.6089338Z at node_modules/router/index.js:297:9 +2026-01-30T15:34:58.6089951Z at processParams (node_modules/router/index.js:582:12) +2026-01-30T15:34:58.6090583Z at next (node_modules/router/index.js:291:5) +2026-01-30T15:34:58.6091239Z at Function.handle (node_modules/router/index.js:186:3) +2026-01-30T15:34:58.6092071Z at Function.handle (node_modules/express/lib/application.js:177:15) +2026-01-30T15:34:58.6093015Z at Server.app (node_modules/express/lib/express.js:38:9) +2026-01-30T15:34:58.6093443Z +2026-01-30T15:34:58.6093578Z console.error +2026-01-30T15:34:58.6094865Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /aggregations/reportingByYear?limit=50 200 - 111ms"} +2026-01-30T15:34:58.6096144Z +2026-01-30T15:34:58.6097566Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; +2026-01-30T15:34:58.6098896Z  166 | +2026-01-30T15:34:58.6100183Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); +2026-01-30T15:34:58.6101685Z  | ^ +2026-01-30T15:34:58.6102451Z  168 | } +2026-01-30T15:34:58.6102879Z  169 | +2026-01-30T15:34:58.6103573Z  170 | export default logger; +2026-01-30T15:34:58.6104050Z +2026-01-30T15:34:58.6104536Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) +2026-01-30T15:34:58.6105868Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) +2026-01-30T15:34:58.6107441Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) +2026-01-30T15:34:58.6108676Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) +2026-01-30T15:34:58.6109663Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) +2026-01-30T15:34:58.6110965Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) +2026-01-30T15:34:58.6112322Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) +2026-01-30T15:34:58.6113120Z at logHttpRequest (src/utils/logger.ts:167:10) +2026-01-30T15:34:58.6113896Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) +2026-01-30T15:34:58.6114422Z +2026-01-30T15:34:58.6115634Z ● Advanced Endpoints Integration Tests › GET /api/movies/aggregations/reportingByComments › should return movies with their most recent comments +2026-01-30T15:34:58.6116680Z +2026-01-30T15:34:58.6116957Z thrown: "Exceeded timeout of 120000 ms for a test. +2026-01-30T15:34:58.6118258Z Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." +2026-01-30T15:34:58.6119219Z +2026-01-30T15:34:58.6119426Z   66 | +2026-01-30T15:34:58.6120762Z  67 | describe("GET /api/movies/aggregations/reportingByComments", () => { +2026-01-30T15:34:58.6123153Z > 68 | test("should return movies with their most recent comments", async () => { +2026-01-30T15:34:58.6124367Z  | ^ +2026-01-30T15:34:58.6125075Z  69 | // Create test movie via API +2026-01-30T15:34:58.6125858Z  70 | const testMovie = { +2026-01-30T15:34:58.6126841Z  71 | title: "Test Aggregation Movie 1", +2026-01-30T15:34:58.6127387Z +2026-01-30T15:34:58.6127783Z at tests/integration/advancedEndpoints.integration.test.ts:68:5 +2026-01-30T15:34:58.6128675Z at tests/integration/advancedEndpoints.integration.test.ts:67:3 +2026-01-30T15:34:58.6129718Z at Object. (tests/integration/advancedEndpoints.integration.test.ts:25:20) +2026-01-30T15:34:58.6130373Z +2026-01-30T15:34:58.6131442Z ● Advanced Endpoints Integration Tests › GET /api/movies/aggregations/reportingByComments › should limit recent comments per movie +2026-01-30T15:34:58.6132536Z +2026-01-30T15:34:58.6132803Z thrown: "Exceeded timeout of 120000 ms for a test. +2026-01-30T15:34:58.6134091Z Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." +2026-01-30T15:34:58.6135244Z +2026-01-30T15:34:58.6135530Z   139 | }); +2026-01-30T15:34:58.6136006Z  140 | +2026-01-30T15:34:58.6137182Z > 141 | test("should limit recent comments per movie", async () => { +2026-01-30T15:34:58.6138288Z  | ^ +2026-01-30T15:34:58.6138949Z  142 | // Create test movie +2026-01-30T15:34:58.6139715Z  143 | const testMovie = { +2026-01-30T15:34:58.6140983Z  144 | title: "Test Aggregation Movie Limit", +2026-01-30T15:34:58.6141561Z +2026-01-30T15:34:58.6141966Z at tests/integration/advancedEndpoints.integration.test.ts:141:5 +2026-01-30T15:34:58.6143056Z at tests/integration/advancedEndpoints.integration.test.ts:67:3 +2026-01-30T15:34:58.6144104Z at Object. (tests/integration/advancedEndpoints.integration.test.ts:25:20) +2026-01-30T15:34:58.6144753Z +2026-01-30T15:34:58.6145802Z ● Advanced Endpoints Integration Tests › GET /api/movies/aggregations/reportingByComments › should handle movies with no comments +2026-01-30T15:34:58.6146753Z +2026-01-30T15:34:58.6147016Z thrown: "Exceeded timeout of 120000 ms for a test. +2026-01-30T15:34:58.6148300Z Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." +2026-01-30T15:34:58.6149256Z +2026-01-30T15:34:58.6149526Z   187 | }); +2026-01-30T15:34:58.6150001Z  188 | +2026-01-30T15:34:58.6151161Z > 189 | test("should handle movies with no comments", async () => { +2026-01-30T15:34:58.6153003Z  | ^ +2026-01-30T15:34:58.6153800Z  190 | // Create a movie without comments +2026-01-30T15:34:58.6154642Z  191 | const testMovie = { +2026-01-30T15:34:58.6155720Z  192 | title: "Test Aggregation Movie No Comments", +2026-01-30T15:34:58.6156345Z +2026-01-30T15:34:58.6156751Z at tests/integration/advancedEndpoints.integration.test.ts:189:5 +2026-01-30T15:34:58.6157651Z at tests/integration/advancedEndpoints.integration.test.ts:67:3 +2026-01-30T15:34:58.6158695Z at Object. (tests/integration/advancedEndpoints.integration.test.ts:25:20) +2026-01-30T15:34:58.6159350Z +2026-01-30T15:34:58.6586609Z Test Suites: 1 failed, 2 passed, 3 total +2026-01-30T15:34:58.6589619Z Tests: 3 failed, 4 skipped, 38 passed, 45 total +2026-01-30T15:34:58.6592438Z Snapshots: 0 total +2026-01-30T15:34:58.6594958Z Time: 371.746 s +2026-01-30T15:34:58.6597492Z Ran all test suites. +2026-01-30T15:34:58.6605515Z Test results written to: test-results-integration.json diff --git a/Run Express Tests/12_Upload test results.txt b/Run Express Tests/12_Upload test results.txt new file mode 100644 index 0000000..5942dab --- /dev/null +++ b/Run Express Tests/12_Upload test results.txt @@ -0,0 +1,26 @@ +2026-01-30T15:34:58.6906225Z ##[group]Run actions/upload-artifact@v4 +2026-01-30T15:34:58.6906685Z with: +2026-01-30T15:34:58.6906975Z name: test-results +2026-01-30T15:34:58.6907996Z path: mflix/server/js-express/coverage/ +mflix/server/js-express/test-results-unit.json +mflix/server/js-express/test-results-integration.json + +2026-01-30T15:34:58.6909137Z retention-days: 30 +2026-01-30T15:34:58.6909480Z if-no-files-found: warn +2026-01-30T15:34:58.6909847Z compression-level: 6 +2026-01-30T15:34:58.6910195Z overwrite: false +2026-01-30T15:34:58.6910543Z include-hidden-files: false +2026-01-30T15:34:58.6910925Z ##[endgroup] +2026-01-30T15:34:58.9130381Z Multiple search paths detected. Calculating the least common ancestor of all paths +2026-01-30T15:34:58.9136367Z The least common ancestor is /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express. This will be the root directory of the artifact +2026-01-30T15:34:58.9138172Z With the provided path, there will be 2 files uploaded +2026-01-30T15:34:58.9143662Z Artifact name is valid! +2026-01-30T15:34:58.9144864Z Root directory input is valid! +2026-01-30T15:34:59.2145796Z Beginning upload of artifact content to blob storage +2026-01-30T15:34:59.5225548Z Uploaded bytes 4995 +2026-01-30T15:34:59.6058897Z Finished uploading artifact content to blob storage! +2026-01-30T15:34:59.6061844Z SHA256 digest of uploaded artifact zip is 132af0a45ae192a2d928fa422d5dbc5071b42eb5af768a6d8822dcc36a18d581 +2026-01-30T15:34:59.6063860Z Finalizing artifact upload +2026-01-30T15:34:59.7513968Z Artifact test-results.zip successfully finalized. Artifact ID 5320296235 +2026-01-30T15:34:59.7515594Z Artifact test-results has been successfully uploaded! Final size is 4995 bytes. Artifact ID is 5320296235 +2026-01-30T15:34:59.7521651Z Artifact download URL: https://github.com/mongodb/docs-sample-apps/actions/runs/21521030923/artifacts/5320296235 diff --git a/Run Express Tests/13_Generate Test Summary.txt b/Run Express Tests/13_Generate Test Summary.txt new file mode 100644 index 0000000..1715c6d --- /dev/null +++ b/Run Express Tests/13_Generate Test Summary.txt @@ -0,0 +1,8 @@ +2026-01-30T15:34:59.7626378Z ##[group]Run chmod +x .github/scripts/generate-test-summary-jest.sh +2026-01-30T15:34:59.7627089Z chmod +x .github/scripts/generate-test-summary-jest.sh +2026-01-30T15:34:59.7627588Z .github/scripts/generate-test-summary-jest.sh \ +2026-01-30T15:34:59.7628125Z  mflix/server/js-express/test-results-unit.json \ +2026-01-30T15:34:59.7628594Z  mflix/server/js-express/test-results-integration.json +2026-01-30T15:34:59.7661898Z shell: /usr/bin/bash -e {0} +2026-01-30T15:34:59.7662460Z ##[endgroup] +2026-01-30T15:34:59.8107658Z ##[error]Process completed with exit code 1. diff --git a/Run Express Tests/1_Set up job.txt b/Run Express Tests/1_Set up job.txt new file mode 100644 index 0000000..0700380 --- /dev/null +++ b/Run Express Tests/1_Set up job.txt @@ -0,0 +1,46 @@ +2026-01-30T15:27:35.4021090Z Current runner version: '2.331.0' +2026-01-30T15:27:35.4044828Z ##[group]Runner Image Provisioner +2026-01-30T15:27:35.4045760Z Hosted Compute Agent +2026-01-30T15:27:35.4046300Z Version: 20260123.484 +2026-01-30T15:27:35.4046957Z Commit: 6bd6555ca37d84114959e1c76d2c01448ff61c5d +2026-01-30T15:27:35.4047649Z Build Date: 2026-01-23T19:41:17Z +2026-01-30T15:27:35.4048256Z Worker ID: {1c5318de-9485-4f85-b747-b92f544a1cd0} +2026-01-30T15:27:35.4048981Z Azure Region: westus +2026-01-30T15:27:35.4049550Z ##[endgroup] +2026-01-30T15:27:35.4050848Z ##[group]Operating System +2026-01-30T15:27:35.4051538Z Ubuntu +2026-01-30T15:27:35.4051971Z 24.04.3 +2026-01-30T15:27:35.4052596Z LTS +2026-01-30T15:27:35.4053062Z ##[endgroup] +2026-01-30T15:27:35.4053606Z ##[group]Runner Image +2026-01-30T15:27:35.4054102Z Image: ubuntu-24.04 +2026-01-30T15:27:35.4054636Z Version: 20260126.10.1 +2026-01-30T15:27:35.4055636Z Included Software: https://github.com/actions/runner-images/blob/ubuntu24/20260126.10/images/ubuntu/Ubuntu2404-Readme.md +2026-01-30T15:27:35.4057369Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu24%2F20260126.10 +2026-01-30T15:27:35.4058244Z ##[endgroup] +2026-01-30T15:27:35.4060840Z ##[group]GITHUB_TOKEN Permissions +2026-01-30T15:27:35.4063590Z Actions: write +2026-01-30T15:27:35.4064176Z ArtifactMetadata: write +2026-01-30T15:27:35.4064676Z Attestations: write +2026-01-30T15:27:35.4065289Z Checks: write +2026-01-30T15:27:35.4065773Z Contents: write +2026-01-30T15:27:35.4066232Z Deployments: write +2026-01-30T15:27:35.4066828Z Discussions: write +2026-01-30T15:27:35.4067276Z Issues: write +2026-01-30T15:27:35.4067728Z Metadata: read +2026-01-30T15:27:35.4068228Z Models: read +2026-01-30T15:27:35.4068702Z Packages: write +2026-01-30T15:27:35.4069156Z Pages: write +2026-01-30T15:27:35.4069812Z PullRequests: write +2026-01-30T15:27:35.4070343Z RepositoryProjects: write +2026-01-30T15:27:35.4070857Z SecurityEvents: write +2026-01-30T15:27:35.4071420Z Statuses: write +2026-01-30T15:27:35.4071869Z ##[endgroup] +2026-01-30T15:27:35.4074259Z Secret source: Actions +2026-01-30T15:27:35.4075183Z Prepare workflow directory +2026-01-30T15:27:35.4388143Z Prepare all required actions +2026-01-30T15:27:35.4425033Z Getting action download info +2026-01-30T15:27:35.9628797Z Download action repository 'actions/checkout@v5' (SHA:93cb6efe18208431cddfb8368fd83d5badbf9bfd) +2026-01-30T15:27:36.0508180Z Download action repository 'actions/setup-node@v4' (SHA:49933ea5288caeca8642d1e84afbd3f7d6820020) +2026-01-30T15:27:36.1435369Z Download action repository 'actions/upload-artifact@v4' (SHA:ea165f8d65b6e75b540449e92b4886f43607fa02) +2026-01-30T15:27:36.3648136Z Complete job name: Run Express Tests diff --git a/Run Express Tests/26_Post Checkout code.txt b/Run Express Tests/26_Post Checkout code.txt new file mode 100644 index 0000000..5ce4ba0 --- /dev/null +++ b/Run Express Tests/26_Post Checkout code.txt @@ -0,0 +1,14 @@ +2026-01-30T15:34:59.8218974Z Post job cleanup. +2026-01-30T15:34:59.9199900Z [command]/usr/bin/git version +2026-01-30T15:34:59.9243494Z git version 2.52.0 +2026-01-30T15:34:59.9290073Z Temporarily overriding HOME='/home/runner/work/_temp/afc3ecc7-3169-4246-8b27-083c313fdabd' before making global git config changes +2026-01-30T15:34:59.9291643Z Adding repository directory to the temporary git global config as a safe directory +2026-01-30T15:34:59.9296677Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/docs-sample-apps/docs-sample-apps +2026-01-30T15:34:59.9341748Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand +2026-01-30T15:34:59.9376926Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :" +2026-01-30T15:34:59.9614076Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader +2026-01-30T15:34:59.9637661Z http.https://github.com/.extraheader +2026-01-30T15:34:59.9647904Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader +2026-01-30T15:34:59.9680830Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :" +2026-01-30T15:34:59.9911077Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir: +2026-01-30T15:34:59.9945473Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url diff --git a/Run Express Tests/27_Complete job.txt b/Run Express Tests/27_Complete job.txt new file mode 100644 index 0000000..3c29ec8 --- /dev/null +++ b/Run Express Tests/27_Complete job.txt @@ -0,0 +1 @@ +2026-01-30T15:35:00.0307603Z Cleaning up orphan processes diff --git a/Run Express Tests/2_Checkout code.txt b/Run Express Tests/2_Checkout code.txt new file mode 100644 index 0000000..412f686 --- /dev/null +++ b/Run Express Tests/2_Checkout code.txt @@ -0,0 +1,88 @@ +2026-01-30T15:27:36.4368829Z ##[group]Run actions/checkout@v5 +2026-01-30T15:27:36.4369722Z with: +2026-01-30T15:27:36.4370188Z repository: mongodb/docs-sample-apps +2026-01-30T15:27:36.4370922Z token: *** +2026-01-30T15:27:36.4371330Z ssh-strict: true +2026-01-30T15:27:36.4371752Z ssh-user: git +2026-01-30T15:27:36.4372343Z persist-credentials: true +2026-01-30T15:27:36.4372858Z clean: true +2026-01-30T15:27:36.4373282Z sparse-checkout-cone-mode: true +2026-01-30T15:27:36.4373808Z fetch-depth: 1 +2026-01-30T15:27:36.4374222Z fetch-tags: false +2026-01-30T15:27:36.4374707Z show-progress: true +2026-01-30T15:27:36.4375149Z lfs: false +2026-01-30T15:27:36.4375540Z submodules: false +2026-01-30T15:27:36.4375975Z set-safe-directory: true +2026-01-30T15:27:36.4376687Z ##[endgroup] +2026-01-30T15:27:36.5281454Z Syncing repository: mongodb/docs-sample-apps +2026-01-30T15:27:36.5283622Z ##[group]Getting Git version info +2026-01-30T15:27:36.5284537Z Working directory is '/home/runner/work/docs-sample-apps/docs-sample-apps' +2026-01-30T15:27:36.5285724Z [command]/usr/bin/git version +2026-01-30T15:27:36.5360639Z git version 2.52.0 +2026-01-30T15:27:36.5381749Z ##[endgroup] +2026-01-30T15:27:36.5397373Z Temporarily overriding HOME='/home/runner/work/_temp/0dfb3aa4-9072-4dfc-b117-396528f81849' before making global git config changes +2026-01-30T15:27:36.5400120Z Adding repository directory to the temporary git global config as a safe directory +2026-01-30T15:27:36.5403245Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/docs-sample-apps/docs-sample-apps +2026-01-30T15:27:36.5442144Z Deleting the contents of '/home/runner/work/docs-sample-apps/docs-sample-apps' +2026-01-30T15:27:36.5446233Z ##[group]Initializing the repository +2026-01-30T15:27:36.5450969Z [command]/usr/bin/git init /home/runner/work/docs-sample-apps/docs-sample-apps +2026-01-30T15:27:36.5556489Z hint: Using 'master' as the name for the initial branch. This default branch name +2026-01-30T15:27:36.5557740Z hint: will change to "main" in Git 3.0. To configure the initial branch name +2026-01-30T15:27:36.5558828Z hint: to use in all of your new repositories, which will suppress this warning, +2026-01-30T15:27:36.5559561Z hint: call: +2026-01-30T15:27:36.5559955Z hint: +2026-01-30T15:27:36.5560793Z hint: git config --global init.defaultBranch +2026-01-30T15:27:36.5561667Z hint: +2026-01-30T15:27:36.5562540Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and +2026-01-30T15:27:36.5564402Z hint: 'development'. The just-created branch can be renamed via this command: +2026-01-30T15:27:36.5565909Z hint: +2026-01-30T15:27:36.5566732Z hint: git branch -m +2026-01-30T15:27:36.5567695Z hint: +2026-01-30T15:27:36.5568878Z hint: Disable this message with "git config set advice.defaultBranchName false" +2026-01-30T15:27:36.5570996Z Initialized empty Git repository in /home/runner/work/docs-sample-apps/docs-sample-apps/.git/ +2026-01-30T15:27:36.5574631Z [command]/usr/bin/git remote add origin https://github.com/mongodb/docs-sample-apps +2026-01-30T15:27:36.5609580Z ##[endgroup] +2026-01-30T15:27:36.5610970Z ##[group]Disabling automatic garbage collection +2026-01-30T15:27:36.5613924Z [command]/usr/bin/git config --local gc.auto 0 +2026-01-30T15:27:36.5640984Z ##[endgroup] +2026-01-30T15:27:36.5642567Z ##[group]Setting up auth +2026-01-30T15:27:36.5648180Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand +2026-01-30T15:27:36.5679005Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :" +2026-01-30T15:27:36.6022023Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader +2026-01-30T15:27:36.6052697Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :" +2026-01-30T15:27:36.6274207Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir: +2026-01-30T15:27:36.6303038Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url +2026-01-30T15:27:36.6516155Z [command]/usr/bin/git config --local http.https://github.com/.extraheader AUTHORIZATION: basic *** +2026-01-30T15:27:36.6547036Z ##[endgroup] +2026-01-30T15:27:36.6555125Z ##[group]Fetching the repository +2026-01-30T15:27:36.6556570Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +41eb43c3e700e94de5fbb4c1db03d66579c7306b:refs/remotes/pull/80/merge +2026-01-30T15:27:37.1060391Z From https://github.com/mongodb/docs-sample-apps +2026-01-30T15:27:37.1062402Z * [new ref] 41eb43c3e700e94de5fbb4c1db03d66579c7306b -> pull/80/merge +2026-01-30T15:27:37.1093035Z ##[endgroup] +2026-01-30T15:27:37.1094870Z ##[group]Determining the checkout info +2026-01-30T15:27:37.1096991Z ##[endgroup] +2026-01-30T15:27:37.1101716Z [command]/usr/bin/git sparse-checkout disable +2026-01-30T15:27:37.1142652Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig +2026-01-30T15:27:37.1167671Z ##[group]Checking out the ref +2026-01-30T15:27:37.1172659Z [command]/usr/bin/git checkout --progress --force refs/remotes/pull/80/merge +2026-01-30T15:27:37.1321796Z Note: switching to 'refs/remotes/pull/80/merge'. +2026-01-30T15:27:37.1323314Z +2026-01-30T15:27:37.1324344Z You are in 'detached HEAD' state. You can look around, make experimental +2026-01-30T15:27:37.1326750Z changes and commit them, and you can discard any commits you make in this +2026-01-30T15:27:37.1328412Z state without impacting any branches by switching back to a branch. +2026-01-30T15:27:37.1329828Z +2026-01-30T15:27:37.1330819Z If you want to create a new branch to retain commits you create, you may +2026-01-30T15:27:37.1333118Z do so (now or later) by using -c with the switch command. Example: +2026-01-30T15:27:37.1334107Z +2026-01-30T15:27:37.1334463Z git switch -c +2026-01-30T15:27:37.1335089Z +2026-01-30T15:27:37.1335413Z Or undo this operation with: +2026-01-30T15:27:37.1335953Z +2026-01-30T15:27:37.1336239Z git switch - +2026-01-30T15:27:37.1336648Z +2026-01-30T15:27:37.1337348Z Turn off this advice by setting config variable advice.detachedHead to false +2026-01-30T15:27:37.1338497Z +2026-01-30T15:27:37.1339815Z HEAD is now at 41eb43c Merge 9be645df93245290851e18200eefbe91796b46c1 into ce1e9b24def0b15691baec44174a9a7a044d554d +2026-01-30T15:27:37.1343919Z ##[endgroup] +2026-01-30T15:27:37.1364941Z [command]/usr/bin/git log -1 --format=%H +2026-01-30T15:27:37.1386665Z 41eb43c3e700e94de5fbb4c1db03d66579c7306b diff --git a/Run Express Tests/3_Install Atlas CLI.txt b/Run Express Tests/3_Install Atlas CLI.txt new file mode 100644 index 0000000..ad10217 --- /dev/null +++ b/Run Express Tests/3_Install Atlas CLI.txt @@ -0,0 +1,58 @@ +2026-01-30T15:27:37.1617500Z ##[group]Run curl https://fastdl.mongodb.org/mongocli/mongodb-atlas-cli_1.47.0_linux_x86_64.deb --output atlas-cli.deb +2026-01-30T15:27:37.1621203Z curl https://fastdl.mongodb.org/mongocli/mongodb-atlas-cli_1.47.0_linux_x86_64.deb --output atlas-cli.deb +2026-01-30T15:27:37.1624031Z sudo apt install ./atlas-cli.deb +2026-01-30T15:27:37.1662552Z shell: /usr/bin/bash -e {0} +2026-01-30T15:27:37.1663669Z ##[endgroup] +2026-01-30T15:27:37.1793709Z % Total % Received % Xferd Average Speed Time Time Time Current +2026-01-30T15:27:37.1796252Z Dload Upload Total Spent Left Speed +2026-01-30T15:27:37.1797389Z +2026-01-30T15:27:37.3083057Z 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 +2026-01-30T15:27:37.3084856Z 100 15.3M 100 15.3M 0 0 118M 0 --:--:-- --:--:-- --:--:-- 118M +2026-01-30T15:27:37.3234205Z +2026-01-30T15:27:37.3235564Z WARNING: apt does not have a stable CLI interface. Use with caution in scripts. +2026-01-30T15:27:37.3237047Z +2026-01-30T15:27:37.3617977Z Reading package lists... +2026-01-30T15:27:37.5325383Z Building dependency tree... +2026-01-30T15:27:37.5332897Z Reading state information... +2026-01-30T15:27:37.7056676Z The following NEW packages will be installed: +2026-01-30T15:27:37.7058928Z mongodb-atlas-cli +2026-01-30T15:27:37.7308516Z 0 upgraded, 1 newly installed, 0 to remove and 65 not upgraded. +2026-01-30T15:27:37.8233659Z Need to get 0 B/16.1 MB of archives. +2026-01-30T15:27:37.8237845Z After this operation, 52.6 MB of additional disk space will be used. +2026-01-30T15:27:37.8242138Z Get:1 /home/runner/work/docs-sample-apps/docs-sample-apps/atlas-cli.deb mongodb-atlas-cli amd64 1.47.0 [16.1 MB] +2026-01-30T15:27:38.1043824Z Selecting previously unselected package mongodb-atlas-cli. +2026-01-30T15:27:38.1367629Z (Reading database ... +2026-01-30T15:27:38.1369119Z (Reading database ... 5% +2026-01-30T15:27:38.1370338Z (Reading database ... 10% +2026-01-30T15:27:38.1371717Z (Reading database ... 15% +2026-01-30T15:27:38.1373245Z (Reading database ... 20% +2026-01-30T15:27:38.1374569Z (Reading database ... 25% +2026-01-30T15:27:38.1375774Z (Reading database ... 30% +2026-01-30T15:27:38.1377120Z (Reading database ... 35% +2026-01-30T15:27:38.1378130Z (Reading database ... 40% +2026-01-30T15:27:38.1379103Z (Reading database ... 45% +2026-01-30T15:27:38.1380065Z (Reading database ... 50% +2026-01-30T15:27:38.1545659Z (Reading database ... 55% +2026-01-30T15:27:38.2799952Z (Reading database ... 60% +2026-01-30T15:27:38.3781312Z (Reading database ... 65% +2026-01-30T15:27:38.4457376Z (Reading database ... 70% +2026-01-30T15:27:38.5334951Z (Reading database ... 75% +2026-01-30T15:27:38.6852040Z (Reading database ... 80% +2026-01-30T15:27:38.8245892Z (Reading database ... 85% +2026-01-30T15:27:38.9423831Z (Reading database ... 90% +2026-01-30T15:27:39.0925739Z (Reading database ... 95% +2026-01-30T15:27:39.0926231Z (Reading database ... 100% +2026-01-30T15:27:39.0926628Z (Reading database ... 217639 files and directories currently installed.) +2026-01-30T15:27:39.0974937Z Preparing to unpack .../docs-sample-apps/atlas-cli.deb ... +2026-01-30T15:27:39.1002718Z Unpacking mongodb-atlas-cli (1.47.0) ... +2026-01-30T15:27:39.3569158Z Setting up mongodb-atlas-cli (1.47.0) ... +2026-01-30T15:27:40.0594262Z +2026-01-30T15:27:40.0594930Z Running kernel seems to be up-to-date. +2026-01-30T15:27:40.0597018Z +2026-01-30T15:27:40.0597282Z No services need to be restarted. +2026-01-30T15:27:40.0597717Z +2026-01-30T15:27:40.0598112Z No containers need to be restarted. +2026-01-30T15:27:40.0598419Z +2026-01-30T15:27:40.0598613Z No user sessions are running outdated binaries. +2026-01-30T15:27:40.0599004Z +2026-01-30T15:27:40.0599469Z No VM guests are running outdated hypervisor (qemu) binaries on this host. diff --git a/Run Express Tests/4_Set up a local deployment using Atlas CLI.txt b/Run Express Tests/4_Set up a local deployment using Atlas CLI.txt new file mode 100644 index 0000000..73a2e0c --- /dev/null +++ b/Run Express Tests/4_Set up a local deployment using Atlas CLI.txt @@ -0,0 +1,20 @@ +2026-01-30T15:27:40.9036463Z ##[group]Run atlas deployments setup myLocalRs1 --type local --port 27017 --force +2026-01-30T15:27:40.9037097Z atlas deployments setup myLocalRs1 --type local --port 27017 --force +2026-01-30T15:27:40.9069683Z shell: /usr/bin/bash -e {0} +2026-01-30T15:27:40.9069941Z ##[endgroup] +2026-01-30T15:27:40.9429864Z +2026-01-30T15:27:40.9430480Z Warning: Secure storage is not available, falling back to insecure storage +2026-01-30T15:27:40.9431352Z To disable this alert, run "atlas config set silence_storage_warning true" +2026-01-30T15:27:43.2827603Z +2026-01-30T15:27:43.2828075Z [Default Settings] +2026-01-30T15:27:43.2828604Z Deployment Name myLocalRs1 +2026-01-30T15:27:43.2829049Z MongoDB Version 8.0 +2026-01-30T15:27:43.2829269Z +2026-01-30T15:27:43.3804817Z Creating your cluster myLocalRs1 +2026-01-30T15:27:43.3806453Z 1/3: Starting your local environment... +2026-01-30T15:27:43.3942568Z 2/3: Downloading the latest MongoDB image to your local environment... +2026-01-30T15:27:58.3714256Z 3/3: Creating your deployment myLocalRs1... +2026-01-30T15:28:07.7721507Z Deployment created! +2026-01-30T15:28:07.7721833Z +2026-01-30T15:28:07.7721990Z connection skipped +2026-01-30T15:28:07.7722915Z Connection string: "mongodb://localhost:27017/?directConnection=true" diff --git a/Run Express Tests/5_Install MongoDB Database Tools to load sample data.txt b/Run Express Tests/5_Install MongoDB Database Tools to load sample data.txt new file mode 100644 index 0000000..3170b2a --- /dev/null +++ b/Run Express Tests/5_Install MongoDB Database Tools to load sample data.txt @@ -0,0 +1,59 @@ +2026-01-30T15:28:07.7816611Z ##[group]Run curl https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2204-x86_64-100.13.0.deb --output mdb-db-tools.deb +2026-01-30T15:28:07.7817657Z curl https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2204-x86_64-100.13.0.deb --output mdb-db-tools.deb +2026-01-30T15:28:07.7818268Z sudo apt install ./mdb-db-tools.deb +2026-01-30T15:28:07.7850781Z shell: /usr/bin/bash -e {0} +2026-01-30T15:28:07.7851034Z ##[endgroup] +2026-01-30T15:28:07.7956711Z % Total % Received % Xferd Average Speed Time Time Time Current +2026-01-30T15:28:07.7958810Z Dload Upload Total Spent Left Speed +2026-01-30T15:28:07.7959400Z +2026-01-30T15:28:07.9015188Z 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 +2026-01-30T15:28:08.0314427Z 37 56.1M 37 20.8M 0 0 196M 0 --:--:-- --:--:-- --:--:-- 196M +2026-01-30T15:28:08.0315169Z 100 56.1M 100 56.1M 0 0 238M 0 --:--:-- --:--:-- --:--:-- 237M +2026-01-30T15:28:08.0440878Z +2026-01-30T15:28:08.0441414Z WARNING: apt does not have a stable CLI interface. Use with caution in scripts. +2026-01-30T15:28:08.0441781Z +2026-01-30T15:28:08.0863595Z Reading package lists... +2026-01-30T15:28:08.3362091Z Building dependency tree... +2026-01-30T15:28:08.3370172Z Reading state information... +2026-01-30T15:28:08.6238813Z The following NEW packages will be installed: +2026-01-30T15:28:08.6240436Z mongodb-database-tools +2026-01-30T15:28:08.6508047Z 0 upgraded, 1 newly installed, 0 to remove and 65 not upgraded. +2026-01-30T15:28:08.9299047Z Need to get 0 B/58.9 MB of archives. +2026-01-30T15:28:08.9299888Z After this operation, 0 B of additional disk space will be used. +2026-01-30T15:28:08.9300812Z Get:1 /home/runner/work/docs-sample-apps/docs-sample-apps/mdb-db-tools.deb mongodb-database-tools amd64 100.13.0 [58.9 MB] +2026-01-30T15:28:09.2262645Z Selecting previously unselected package mongodb-database-tools. +2026-01-30T15:28:09.2316639Z (Reading database ... +2026-01-30T15:28:09.2317150Z (Reading database ... 5% +2026-01-30T15:28:09.2317558Z (Reading database ... 10% +2026-01-30T15:28:09.2322901Z (Reading database ... 15% +2026-01-30T15:28:09.2323331Z (Reading database ... 20% +2026-01-30T15:28:09.2323730Z (Reading database ... 25% +2026-01-30T15:28:09.2324011Z (Reading database ... 30% +2026-01-30T15:28:09.2324263Z (Reading database ... 35% +2026-01-30T15:28:09.2324504Z (Reading database ... 40% +2026-01-30T15:28:09.2324748Z (Reading database ... 45% +2026-01-30T15:28:09.2324984Z (Reading database ... 50% +2026-01-30T15:28:09.2340396Z (Reading database ... 55% +2026-01-30T15:28:09.2460019Z (Reading database ... 60% +2026-01-30T15:28:09.2485702Z (Reading database ... 65% +2026-01-30T15:28:09.2503963Z (Reading database ... 70% +2026-01-30T15:28:09.2529831Z (Reading database ... 75% +2026-01-30T15:28:09.2571281Z (Reading database ... 80% +2026-01-30T15:28:09.2746027Z (Reading database ... 85% +2026-01-30T15:28:09.2799612Z (Reading database ... 90% +2026-01-30T15:28:09.3126179Z (Reading database ... 95% +2026-01-30T15:28:09.3126674Z (Reading database ... 100% +2026-01-30T15:28:09.3127182Z (Reading database ... 217642 files and directories currently installed.) +2026-01-30T15:28:09.3174196Z Preparing to unpack .../mdb-db-tools.deb ... +2026-01-30T15:28:09.3187791Z Unpacking mongodb-database-tools (100.13.0) ... +2026-01-30T15:28:10.3334028Z Setting up mongodb-database-tools (100.13.0) ... +2026-01-30T15:28:10.9204466Z +2026-01-30T15:28:10.9205272Z Running kernel seems to be up-to-date. +2026-01-30T15:28:10.9205686Z +2026-01-30T15:28:10.9205842Z No services need to be restarted. +2026-01-30T15:28:10.9206162Z +2026-01-30T15:28:10.9206306Z No containers need to be restarted. +2026-01-30T15:28:10.9206602Z +2026-01-30T15:28:10.9206784Z No user sessions are running outdated binaries. +2026-01-30T15:28:10.9207113Z +2026-01-30T15:28:10.9207417Z No VM guests are running outdated hypervisor (qemu) binaries on this host. diff --git a/Run Express Tests/6_Download sample data.txt b/Run Express Tests/6_Download sample data.txt new file mode 100644 index 0000000..2c073b4 --- /dev/null +++ b/Run Express Tests/6_Download sample data.txt @@ -0,0 +1,17 @@ +2026-01-30T15:28:12.1495194Z ##[group]Run curl https://atlas-education.s3.amazonaws.com/sampledata.archive -o sampledata.archive +2026-01-30T15:28:12.1495958Z curl https://atlas-education.s3.amazonaws.com/sampledata.archive -o sampledata.archive +2026-01-30T15:28:12.1527524Z shell: /usr/bin/bash -e {0} +2026-01-30T15:28:12.1527780Z ##[endgroup] +2026-01-30T15:28:12.1628509Z % Total % Received % Xferd Average Speed Time Time Time Current +2026-01-30T15:28:12.1629267Z Dload Upload Total Spent Left Speed +2026-01-30T15:28:12.1629659Z +2026-01-30T15:28:12.9531021Z 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 +2026-01-30T15:28:13.9110873Z 0 353M 0 1715k 0 0 2170k 0 0:02:46 --:--:-- 0:02:46 2168k +2026-01-30T15:28:14.9238727Z 12 353M 12 44.6M 0 0 25.5M 0 0:00:13 0:00:01 0:00:12 25.5M +2026-01-30T15:28:15.9462713Z 26 353M 26 93.3M 0 0 33.7M 0 0:00:10 0:00:02 0:00:08 33.7M +2026-01-30T15:28:16.9007762Z 39 353M 39 140M 0 0 37.2M 0 0:00:09 0:00:03 0:00:06 37.2M +2026-01-30T15:28:17.9010160Z 53 353M 53 187M 0 0 39.5M 0 0:00:08 0:00:04 0:00:04 39.5M +2026-01-30T15:28:18.9011052Z 66 353M 66 234M 0 0 40.7M 0 0:00:08 0:00:05 0:00:03 46.9M +2026-01-30T15:28:19.9010532Z 79 353M 79 282M 0 0 41.9M 0 0:00:08 0:00:06 0:00:02 47.6M +2026-01-30T15:28:20.4463614Z 93 353M 93 329M 0 0 42.6M 0 0:00:08 0:00:07 0:00:01 47.5M +2026-01-30T15:28:20.4464590Z 100 353M 100 353M 0 0 42.6M 0 0:00:08 0:00:08 --:--:-- 47.1M diff --git a/Run Express Tests/7_Add sample data to database.txt b/Run Express Tests/7_Add sample data to database.txt new file mode 100644 index 0000000..92ee608 --- /dev/null +++ b/Run Express Tests/7_Add sample data to database.txt @@ -0,0 +1,110 @@ +2026-01-30T15:28:20.4518835Z ##[group]Run mongorestore --archive=sampledata.archive --port=27017 +2026-01-30T15:28:20.4519356Z mongorestore --archive=sampledata.archive --port=27017 +2026-01-30T15:28:20.4550546Z shell: /usr/bin/bash -e {0} +2026-01-30T15:28:20.4550789Z ##[endgroup] +2026-01-30T15:28:20.4745790Z 2026-01-30T15:28:20.474+0000 preparing collections to restore from +2026-01-30T15:28:20.4771957Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.companies from archive 'sampledata.archive' +2026-01-30T15:28:20.4773514Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.embedded_movies from archive 'sampledata.archive' +2026-01-30T15:28:20.4774809Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_weatherdata.data from archive 'sampledata.archive' +2026-01-30T15:28:20.4776075Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.inspections from archive 'sampledata.archive' +2026-01-30T15:28:20.4777356Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.grades from archive 'sampledata.archive' +2026-01-30T15:28:20.4778663Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.routes from archive 'sampledata.archive' +2026-01-30T15:28:20.4779955Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_airbnb.listingsAndReviews from archive 'sampledata.archive' +2026-01-30T15:28:20.4781193Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.theaters from archive 'sampledata.archive' +2026-01-30T15:28:20.4782433Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_guides.planets from archive 'sampledata.archive' +2026-01-30T15:28:20.4783531Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_supplies.sales from archive 'sampledata.archive' +2026-01-30T15:28:20.4784521Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.zips from archive 'sampledata.archive' +2026-01-30T15:28:20.4785550Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.movies from archive 'sampledata.archive' +2026-01-30T15:28:20.4786626Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.users from archive 'sampledata.archive' +2026-01-30T15:28:20.4787845Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_restaurants.neighborhoods from archive 'sampledata.archive' +2026-01-30T15:28:20.4789020Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_analytics.transactions from archive 'sampledata.archive' +2026-01-30T15:28:20.4790127Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_analytics.accounts from archive 'sampledata.archive' +2026-01-30T15:28:20.4791262Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_analytics.customers from archive 'sampledata.archive' +2026-01-30T15:28:20.4792535Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.trips from archive 'sampledata.archive' +2026-01-30T15:28:20.4793428Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.posts from archive 'sampledata.archive' +2026-01-30T15:28:20.4794130Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_geospatial.shipwrecks from archive 'sampledata.archive' +2026-01-30T15:28:20.4794815Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.comments from archive 'sampledata.archive' +2026-01-30T15:28:20.4795475Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.sessions from archive 'sampledata.archive' +2026-01-30T15:28:20.4796147Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_restaurants.restaurants from archive 'sampledata.archive' +2026-01-30T15:28:20.4856517Z 2026-01-30T15:28:20.485+0000 restoring sample_airbnb.listingsAndReviews from archive 'sampledata.archive' +2026-01-30T15:28:21.1878912Z 2026-01-30T15:28:21.187+0000 finished restoring sample_airbnb.listingsAndReviews (5555 documents, 0 failures) +2026-01-30T15:28:21.1956572Z 2026-01-30T15:28:21.195+0000 restoring sample_analytics.transactions from archive 'sampledata.archive' +2026-01-30T15:28:21.3165927Z 2026-01-30T15:28:21.316+0000 finished restoring sample_analytics.transactions (1746 documents, 0 failures) +2026-01-30T15:28:21.3270057Z 2026-01-30T15:28:21.326+0000 restoring sample_analytics.customers from archive 'sampledata.archive' +2026-01-30T15:28:21.3397670Z 2026-01-30T15:28:21.339+0000 finished restoring sample_analytics.customers (500 documents, 0 failures) +2026-01-30T15:28:21.3477446Z 2026-01-30T15:28:21.347+0000 restoring sample_analytics.accounts from archive 'sampledata.archive' +2026-01-30T15:28:21.3672032Z 2026-01-30T15:28:21.367+0000 finished restoring sample_analytics.accounts (1746 documents, 0 failures) +2026-01-30T15:28:21.3756564Z 2026-01-30T15:28:21.375+0000 restoring sample_geospatial.shipwrecks from archive 'sampledata.archive' +2026-01-30T15:28:21.5239733Z 2026-01-30T15:28:21.523+0000 finished restoring sample_geospatial.shipwrecks (11095 documents, 0 failures) +2026-01-30T15:28:21.5316509Z 2026-01-30T15:28:21.531+0000 restoring sample_guides.planets from archive 'sampledata.archive' +2026-01-30T15:28:21.5437881Z 2026-01-30T15:28:21.543+0000 finished restoring sample_guides.planets (8 documents, 0 failures) +2026-01-30T15:28:21.5528546Z 2026-01-30T15:28:21.552+0000 restoring sample_mflix.theaters from archive 'sampledata.archive' +2026-01-30T15:28:21.5771181Z 2026-01-30T15:28:21.576+0000 finished restoring sample_mflix.theaters (1564 documents, 0 failures) +2026-01-30T15:28:21.5856950Z 2026-01-30T15:28:21.585+0000 restoring sample_mflix.comments from archive 'sampledata.archive' +2026-01-30T15:28:22.1558531Z 2026-01-30T15:28:22.155+0000 finished restoring sample_mflix.comments (41079 documents, 0 failures) +2026-01-30T15:28:22.1615846Z 2026-01-30T15:28:22.161+0000 restoring sample_mflix.embedded_movies from archive 'sampledata.archive' +2026-01-30T15:28:22.4586053Z 2026-01-30T15:28:22.458+0000 finished restoring sample_mflix.embedded_movies (3483 documents, 0 failures) +2026-01-30T15:28:22.4647447Z 2026-01-30T15:28:22.464+0000 restoring sample_mflix.movies from archive 'sampledata.archive' +2026-01-30T15:28:23.0024199Z 2026-01-30T15:28:23.002+0000 finished restoring sample_mflix.movies (21349 documents, 0 failures) +2026-01-30T15:28:23.0092346Z 2026-01-30T15:28:23.009+0000 restoring sample_mflix.sessions from archive 'sampledata.archive' +2026-01-30T15:28:23.0211928Z 2026-01-30T15:28:23.020+0000 finished restoring sample_mflix.sessions (1 document, 0 failures) +2026-01-30T15:28:23.0297503Z 2026-01-30T15:28:23.029+0000 restoring sample_mflix.users from archive 'sampledata.archive' +2026-01-30T15:28:23.0402519Z 2026-01-30T15:28:23.039+0000 finished restoring sample_mflix.users (185 documents, 0 failures) +2026-01-30T15:28:23.0488159Z 2026-01-30T15:28:23.048+0000 restoring sample_restaurants.neighborhoods from archive 'sampledata.archive' +2026-01-30T15:28:23.0782534Z 2026-01-30T15:28:23.078+0000 finished restoring sample_restaurants.neighborhoods (195 documents, 0 failures) +2026-01-30T15:28:23.0867488Z 2026-01-30T15:28:23.086+0000 restoring sample_restaurants.restaurants from archive 'sampledata.archive' +2026-01-30T15:28:23.4686968Z 2026-01-30T15:28:23.468+0000 sample_restaurants.restaurants 10.1MB +2026-01-30T15:28:23.4720236Z 2026-01-30T15:28:23.471+0000 sample_restaurants.restaurants 10.1MB +2026-01-30T15:28:23.4721345Z 2026-01-30T15:28:23.471+0000 finished restoring sample_restaurants.restaurants (25359 documents, 0 failures) +2026-01-30T15:28:23.4786213Z 2026-01-30T15:28:23.478+0000 restoring sample_supplies.sales from archive 'sampledata.archive' +2026-01-30T15:28:23.5635407Z 2026-01-30T15:28:23.563+0000 finished restoring sample_supplies.sales (5000 documents, 0 failures) +2026-01-30T15:28:23.5706540Z 2026-01-30T15:28:23.570+0000 restoring sample_training.routes from archive 'sampledata.archive' +2026-01-30T15:28:24.3381933Z 2026-01-30T15:28:24.337+0000 finished restoring sample_training.routes (66985 documents, 0 failures) +2026-01-30T15:28:24.3437307Z 2026-01-30T15:28:24.343+0000 restoring sample_training.trips from archive 'sampledata.archive' +2026-01-30T15:28:24.4834197Z 2026-01-30T15:28:24.483+0000 finished restoring sample_training.trips (10000 documents, 0 failures) +2026-01-30T15:28:24.4895669Z 2026-01-30T15:28:24.489+0000 restoring sample_training.posts from archive 'sampledata.archive' +2026-01-30T15:28:24.5911592Z 2026-01-30T15:28:24.590+0000 finished restoring sample_training.posts (500 documents, 0 failures) +2026-01-30T15:28:24.5966032Z 2026-01-30T15:28:24.596+0000 restoring sample_training.companies from archive 'sampledata.archive' +2026-01-30T15:28:24.9876956Z 2026-01-30T15:28:24.987+0000 finished restoring sample_training.companies (9500 documents, 0 failures) +2026-01-30T15:28:24.9936872Z 2026-01-30T15:28:24.993+0000 restoring sample_training.inspections from archive 'sampledata.archive' +2026-01-30T15:28:26.0450175Z 2026-01-30T15:28:26.044+0000 finished restoring sample_training.inspections (80047 documents, 0 failures) +2026-01-30T15:28:26.0508930Z 2026-01-30T15:28:26.050+0000 restoring sample_training.zips from archive 'sampledata.archive' +2026-01-30T15:28:26.3560787Z 2026-01-30T15:28:26.355+0000 finished restoring sample_training.zips (29470 documents, 0 failures) +2026-01-30T15:28:26.3697611Z 2026-01-30T15:28:26.369+0000 restoring sample_training.grades from archive 'sampledata.archive' +2026-01-30T15:28:26.4682847Z 2026-01-30T15:28:26.468+0000 sample_training.grades 1.96MB +2026-01-30T15:28:27.5184507Z 2026-01-30T15:28:27.518+0000 sample_training.grades 22.2MB +2026-01-30T15:28:27.5185494Z 2026-01-30T15:28:27.518+0000 finished restoring sample_training.grades (100000 documents, 0 failures) +2026-01-30T15:28:27.5264673Z 2026-01-30T15:28:27.526+0000 restoring sample_weatherdata.data from archive 'sampledata.archive' +2026-01-30T15:28:27.7636485Z 2026-01-30T15:28:27.763+0000 finished restoring sample_weatherdata.data (10000 documents, 0 failures) +2026-01-30T15:28:27.7637625Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_guides.planets +2026-01-30T15:28:27.7643157Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_analytics.transactions +2026-01-30T15:28:27.7644114Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_analytics.accounts +2026-01-30T15:28:27.7645087Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_analytics.customers +2026-01-30T15:28:27.7646165Z 2026-01-30T15:28:27.763+0000 restoring indexes for collection sample_geospatial.shipwrecks from metadata +2026-01-30T15:28:27.7648366Z 2026-01-30T15:28:27.763+0000 index: &idx.IndexDocument{Options:primitive.M{"2dsphereIndexVersion":3, "background":true, "name":"coordinates_2dsphere", "v":2}, Key:primitive.D{primitive.E{Key:"coordinates", Value:"2dsphere"}}, PartialFilterExpression:primitive.D(nil)} +2026-01-30T15:28:27.7650427Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_supplies.sales +2026-01-30T15:28:27.7651347Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.trips +2026-01-30T15:28:27.7652422Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.posts +2026-01-30T15:28:27.7653538Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.companies +2026-01-30T15:28:27.7654510Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.inspections +2026-01-30T15:28:27.7655462Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.grades +2026-01-30T15:28:27.7656377Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.routes +2026-01-30T15:28:27.7657256Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.zips +2026-01-30T15:28:27.7658215Z 2026-01-30T15:28:27.763+0000 restoring indexes for collection sample_mflix.theaters from metadata +2026-01-30T15:28:27.7660069Z 2026-01-30T15:28:27.763+0000 index: &idx.IndexDocument{Options:primitive.M{"2dsphereIndexVersion":3, "name":"geo index", "v":2}, Key:primitive.D{primitive.E{Key:"location.geo", Value:"2dsphere"}}, PartialFilterExpression:primitive.D(nil)} +2026-01-30T15:28:27.7661999Z 2026-01-30T15:28:27.763+0000 restoring indexes for collection sample_mflix.movies from metadata +2026-01-30T15:28:27.7665412Z 2026-01-30T15:28:27.763+0000 index: &idx.IndexDocument{Options:primitive.M{"default_language":"english", "language_override":"language", "name":"cast_text_fullplot_text_genres_text_title_text", "textIndexVersion":3, "v":2, "weights":primitive.M{"cast":1, "fullplot":1, "genres":1, "title":1}}, Key:primitive.D{primitive.E{Key:"_fts", Value:"text"}, primitive.E{Key:"_ftsx", Value:1}}, PartialFilterExpression:primitive.D(nil)} +2026-01-30T15:28:27.7675527Z 2026-01-30T15:28:27.764+0000 restoring indexes for collection sample_mflix.users from metadata +2026-01-30T15:28:27.7677444Z 2026-01-30T15:28:27.764+0000 index: &idx.IndexDocument{Options:primitive.M{"name":"email_1", "unique":true, "v":2}, Key:primitive.D{primitive.E{Key:"email", Value:1}}, PartialFilterExpression:primitive.D(nil)} +2026-01-30T15:28:27.8810257Z 2026-01-30T15:28:27.880+0000 no indexes to restore for collection sample_mflix.comments +2026-01-30T15:28:27.8812578Z 2026-01-30T15:28:27.880+0000 restoring indexes for collection sample_mflix.sessions from metadata +2026-01-30T15:28:27.8814433Z 2026-01-30T15:28:27.880+0000 index: &idx.IndexDocument{Options:primitive.M{"name":"user_id_1", "unique":true, "v":2}, Key:primitive.D{primitive.E{Key:"user_id", Value:1}}, PartialFilterExpression:primitive.D(nil)} +2026-01-30T15:28:27.9074638Z 2026-01-30T15:28:27.907+0000 no indexes to restore for collection sample_mflix.embedded_movies +2026-01-30T15:28:27.9075924Z 2026-01-30T15:28:27.907+0000 no indexes to restore for collection sample_weatherdata.data +2026-01-30T15:28:27.9077173Z 2026-01-30T15:28:27.907+0000 restoring indexes for collection sample_airbnb.listingsAndReviews from metadata +2026-01-30T15:28:27.9079465Z 2026-01-30T15:28:27.907+0000 index: &idx.IndexDocument{Options:primitive.M{"2dsphereIndexVersion":3, "background":true, "name":"address.location_2dsphere", "v":2}, Key:primitive.D{primitive.E{Key:"address.location", Value:"2dsphere"}}, PartialFilterExpression:primitive.D(nil)} +2026-01-30T15:28:27.9083222Z 2026-01-30T15:28:27.907+0000 index: &idx.IndexDocument{Options:primitive.M{"background":true, "name":"property_type_1_room_type_1_beds_1", "v":2}, Key:primitive.D{primitive.E{Key:"property_type", Value:1}, primitive.E{Key:"room_type", Value:1}, primitive.E{Key:"beds", Value:1}}, PartialFilterExpression:primitive.D(nil)} +2026-01-30T15:28:27.9086303Z 2026-01-30T15:28:27.907+0000 index: &idx.IndexDocument{Options:primitive.M{"background":true, "name":"name_1", "v":2}, Key:primitive.D{primitive.E{Key:"name", Value:1}}, PartialFilterExpression:primitive.D(nil)} +2026-01-30T15:28:27.9162068Z 2026-01-30T15:28:27.915+0000 no indexes to restore for collection sample_restaurants.neighborhoods +2026-01-30T15:28:27.9163253Z 2026-01-30T15:28:27.916+0000 no indexes to restore for collection sample_restaurants.restaurants +2026-01-30T15:28:30.0014322Z 2026-01-30T15:28:30.001+0000 425367 document(s) restored successfully. 0 document(s) failed to restore. diff --git a/Run Express Tests/8_Set up Node.js.txt b/Run Express Tests/8_Set up Node.js.txt new file mode 100644 index 0000000..920ce94 --- /dev/null +++ b/Run Express Tests/8_Set up Node.js.txt @@ -0,0 +1,13 @@ +2026-01-30T15:28:30.0169930Z ##[group]Run actions/setup-node@v4 +2026-01-30T15:28:30.0170232Z with: +2026-01-30T15:28:30.0170418Z node-version: 20 +2026-01-30T15:28:30.0170628Z always-auth: false +2026-01-30T15:28:30.0170831Z check-latest: false +2026-01-30T15:28:30.0171160Z token: *** +2026-01-30T15:28:30.0171341Z ##[endgroup] +2026-01-30T15:28:30.2006751Z Found in cache @ /opt/hostedtoolcache/node/20.20.0/x64 +2026-01-30T15:28:30.2013928Z ##[group]Environment details +2026-01-30T15:28:30.5684044Z node: v20.20.0 +2026-01-30T15:28:30.5684439Z npm: 10.8.2 +2026-01-30T15:28:30.5684726Z yarn: 1.22.22 +2026-01-30T15:28:30.5686077Z ##[endgroup] diff --git a/Run Express Tests/9_Install dependencies.txt b/Run Express Tests/9_Install dependencies.txt new file mode 100644 index 0000000..dbf0d0e --- /dev/null +++ b/Run Express Tests/9_Install dependencies.txt @@ -0,0 +1,16 @@ +2026-01-30T15:28:30.5799329Z ##[group]Run npm install +2026-01-30T15:28:30.5799621Z npm install +2026-01-30T15:28:30.5841689Z shell: /usr/bin/bash -e {0} +2026-01-30T15:28:30.5841951Z ##[endgroup] +2026-01-30T15:28:40.1228985Z npm warn deprecated lodash.get@4.4.2: This package is deprecated. Use the optional chaining (?.) operator instead. +2026-01-30T15:28:40.2170959Z npm warn deprecated lodash.isequal@4.5.0: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. +2026-01-30T15:28:40.8518691Z npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. +2026-01-30T15:28:41.1380084Z npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported +2026-01-30T15:28:41.5227124Z npm warn deprecated glob@7.1.6: Glob versions prior to v9 are no longer supported +2026-01-30T15:28:43.3037387Z +2026-01-30T15:28:43.3038559Z added 456 packages, and audited 457 packages in 13s +2026-01-30T15:28:43.3039413Z +2026-01-30T15:28:43.3039997Z 63 packages are looking for funding +2026-01-30T15:28:43.3046737Z run `npm fund` for details +2026-01-30T15:28:43.3053062Z +2026-01-30T15:28:43.3053351Z found 0 vulnerabilities diff --git a/Run Express Tests/system.txt b/Run Express Tests/system.txt new file mode 100644 index 0000000..76939ab --- /dev/null +++ b/Run Express Tests/system.txt @@ -0,0 +1,8 @@ +2026-01-30T15:27:32.4410000Z Requested labels: ubuntu-latest +2026-01-30T15:27:32.4410000Z Job defined at: mongodb/docs-sample-apps/.github/workflows/run-express-tests.yml@refs/pull/80/merge +2026-01-30T15:27:32.4410000Z Waiting for a runner to pick up this job... +2026-01-30T15:27:32.4400000Z Evaluating test.if +2026-01-30T15:27:32.4400000Z Evaluating: success() +2026-01-30T15:27:32.4400000Z Result: true +2026-01-30T15:27:32.8490000Z Job is about to start running on the hosted runner: GitHub Actions 1001292803 +2026-01-30T15:27:32.8490000Z Job is waiting for a hosted runner to come online. \ No newline at end of file diff --git a/mflix/client/app/aggregations/aggregations.module.css b/mflix/client/app/aggregations/aggregations.module.css index 23e62ef..6296b1b 100644 --- a/mflix/client/app/aggregations/aggregations.module.css +++ b/mflix/client/app/aggregations/aggregations.module.css @@ -48,7 +48,6 @@ margin: 0; padding: 1.5rem 2rem; background: var(--mongodb-forest); - border-bottom: 3px solid var(--mongodb-spring); } .tableContainer { @@ -81,7 +80,7 @@ } .table tr:hover { - background: var(--mongodb-mint); + background: #F7FAFC; } .movieTitle { @@ -111,9 +110,9 @@ .comment { margin-bottom: 0.75rem; padding: 0.5rem; - background: var(--mongodb-mint); + background: #F7FAFC; border-radius: var(--radius-md); - border-left: 3px solid var(--mongodb-forest); + border-left: 2px solid var(--color-border); } .comment:last-child { diff --git a/mflix/client/app/components/ExpandableTable/ExpandableTable.module.css b/mflix/client/app/components/ExpandableTable/ExpandableTable.module.css index c683056..549ae45 100644 --- a/mflix/client/app/components/ExpandableTable/ExpandableTable.module.css +++ b/mflix/client/app/components/ExpandableTable/ExpandableTable.module.css @@ -38,38 +38,22 @@ display: inline-flex; align-items: center; gap: 0.625rem; - padding: 0.875rem 2rem; + padding: 0.625rem 1.25rem; background: transparent; - color: var(--mongodb-forest); + color: var(--color-text-secondary); border: none; - border-radius: 50px; + border-radius: 4px; font-size: 0.9375rem; - font-weight: 600; + font-weight: 500; letter-spacing: 0.01em; cursor: pointer; - transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + transition: all 0.2s ease; position: relative; - overflow: hidden; -} - -.expandButton::before { - content: ''; - position: absolute; - inset: 0; - background: var(--mongodb-mint); - border-radius: 50px; - transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); - z-index: -1; } .expandButton:hover { - color: var(--mongodb-white); - transform: translateY(-1px); -} - -.expandButton:hover::before { - background: var(--mongodb-forest); - box-shadow: 0 8px 16px rgba(0, 104, 74, 0.2); + color: var(--mongodb-forest); + background: #F7FAFC; } .expandButton:active { diff --git a/mflix/client/app/components/FilterBar/FilterBar.module.css b/mflix/client/app/components/FilterBar/FilterBar.module.css index b3e5064..ab84365 100644 --- a/mflix/client/app/components/FilterBar/FilterBar.module.css +++ b/mflix/client/app/components/FilterBar/FilterBar.module.css @@ -11,7 +11,7 @@ padding: 1.5rem 2rem; box-shadow: var(--shadow-md); margin-bottom: 2rem; - border: 2px solid var(--mongodb-mint); + border: 2px solid var(--color-border); } .filterHeader { @@ -46,9 +46,9 @@ } .clearFiltersButton:hover { - background: var(--mongodb-mint); - border-color: var(--mongodb-evergreen); - color: var(--mongodb-evergreen); + background: #F7FAFC; + border-color: var(--color-text-secondary); + color: var(--color-text-secondary); transform: translateY(-1px); box-shadow: var(--shadow-sm); } @@ -87,14 +87,14 @@ .filterSelect:hover, .filterInput:hover { - border-color: var(--mongodb-forest); + border-color: var(--color-text-secondary); } .filterSelect:focus, .filterInput:focus { outline: none; - border-color: var(--mongodb-forest); - box-shadow: 0 0 0 3px rgba(0, 104, 74, 0.1); + border-color: var(--color-text-secondary); + box-shadow: 0 0 0 3px rgba(74, 85, 104, 0.1); } .ratingGroup { @@ -146,7 +146,7 @@ gap: 0.625rem; margin-top: 1.25rem; padding-top: 1.25rem; - border-top: 2px solid var(--mongodb-mint); + border-top: 2px solid var(--color-border); } .filterChip { diff --git a/mflix/client/app/components/MovieCard/MovieCard.module.css b/mflix/client/app/components/MovieCard/MovieCard.module.css index 9c664c0..ee19700 100644 --- a/mflix/client/app/components/MovieCard/MovieCard.module.css +++ b/mflix/client/app/components/MovieCard/MovieCard.module.css @@ -22,34 +22,32 @@ transition: all var(--transition-base); position: relative; overflow: hidden; + /* Enforce consistent card heights using flexbox */ + display: flex; + flex-direction: column; } -.movieCard::before { - content: ''; - position: absolute; - top: 0; - left: 0; - right: 0; - height: 4px; - background: var(--mongodb-spring); - transform: scaleX(0); - transform-origin: left; - transition: transform var(--transition-base); +/* Make card clickable when in selection mode */ +.movieCard.selectable { + cursor: pointer; } +/* Lighter hover state - subtle background tint only */ .movieCard:hover { - transform: translateY(-4px); - box-shadow: var(--shadow-lg); - border-color: var(--mongodb-forest); + background: rgba(0, 104, 74, 0.02); } -.movieCard:hover::before { - transform: scaleX(1); +/* Stronger selected state - more prominent */ +.movieCard.selected { + border: 3px solid var(--mongodb-forest); + box-shadow: 0 4px 16px rgba(0, 104, 74, 0.2); + background: var(--mongodb-mint); + /* Reduce padding by 1px to compensate for thicker border */ + padding: 15px; } -.movieCard.selected { - border-color: var(--mongodb-spring); - box-shadow: 0 4px 12px rgba(0, 237, 100, 0.3); +/* Selected state overrides hover */ +.movieCard.selected:hover { background: var(--mongodb-mint); } @@ -58,20 +56,18 @@ top: 12px; right: 12px; z-index: 2; - display: flex; - align-items: center; - gap: 4px; - background: var(--mongodb-white); - padding: 6px 10px; - border-radius: var(--radius-md); - font-size: 12px; - box-shadow: var(--shadow-sm); - border: 1px solid var(--color-border); + /* Toned down styling - less prominent */ + opacity: 0.7; + transition: opacity var(--transition-base); +} + +.selectable:hover .selectionCheckbox { + opacity: 1; } .checkbox { - width: 18px; - height: 18px; + width: 16px; + height: 16px; cursor: pointer; accent-color: var(--mongodb-forest); } @@ -107,6 +103,8 @@ .movieInfo { margin-bottom: 16px; + /* Allow this section to grow and push button to bottom */ + flex: 1; } .movieTitle { @@ -165,6 +163,8 @@ text-align: center; transition: all var(--transition-base); box-shadow: var(--shadow-sm); + /* Keep button at bottom of card */ + margin-top: auto; } .detailsButton:hover { diff --git a/mflix/client/app/components/MovieCard/MovieCard.tsx b/mflix/client/app/components/MovieCard/MovieCard.tsx index 7fa702c..040a0bf 100644 --- a/mflix/client/app/components/MovieCard/MovieCard.tsx +++ b/mflix/client/app/components/MovieCard/MovieCard.tsx @@ -33,8 +33,24 @@ export default function MovieCard({ movie, isSelected = false, onSelectionChange } }; + // Handle card click for selection (when checkbox is shown) + const handleCardClick = (e: React.MouseEvent) => { + // Don't toggle selection if clicking on the "Get Details" link or checkbox + const target = e.target as HTMLElement; + if (target.closest('a') || target.closest('input[type="checkbox"]')) { + return; + } + + if (showCheckbox && onSelectionChange) { + onSelectionChange(movie._id, !isSelected); + } + }; + return ( -
+
{showCheckbox && (
)} diff --git a/mflix/client/app/layout.module.css b/mflix/client/app/layout.module.css index 5903198..f508ef8 100644 --- a/mflix/client/app/layout.module.css +++ b/mflix/client/app/layout.module.css @@ -4,7 +4,6 @@ .navigation { background: var(--mongodb-slate); - border-bottom: 2px solid var(--mongodb-forest); padding: 1rem 2rem; position: sticky; top: 0; @@ -66,22 +65,7 @@ border-radius: var(--radius-sm); } -/* Active link indicator */ -.navLink::after { - content: ''; - position: absolute; - bottom: 0; - left: 50%; - transform: translateX(-50%) scaleX(0); - width: 80%; - height: 2px; - background: var(--mongodb-spring); - transition: transform var(--transition-base); -} -.navLink:hover::after { - transform: translateX(-50%) scaleX(1); -} /* Responsive design */ @media (max-width: 768px) { diff --git a/mflix/client/app/movies/movies.module.css b/mflix/client/app/movies/movies.module.css index aacb9ed..99b85d3 100644 --- a/mflix/client/app/movies/movies.module.css +++ b/mflix/client/app/movies/movies.module.css @@ -376,6 +376,128 @@ transform: none; } +/* Contextual Bottom Selection Bar */ +.selectionBar { + position: fixed; + bottom: 0; + left: 0; + right: 0; + background: var(--mongodb-white); + border-top: 1px solid var(--color-border); + box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.08); + z-index: 100; + padding: 1rem 2rem; + animation: slideUp 0.3s cubic-bezier(0.4, 0, 0.2, 1); +} + +@keyframes slideUp { + from { + transform: translateY(100%); + opacity: 0; + } + to { + transform: translateY(0); + opacity: 1; + } +} + +.selectionBarContent { + max-width: 1400px; + margin: 0 auto; + display: flex; + align-items: center; + justify-content: space-between; + gap: 1.5rem; + flex-wrap: wrap; +} + +.selectionInfo { + display: flex; + align-items: center; + gap: 1.5rem; + flex-wrap: wrap; +} + +.selectionCount { + font-size: 1rem; + font-weight: 600; + color: var(--mongodb-slate); +} + +.deselectAllButton { + padding: 0.5rem 0; + background: transparent; + color: var(--mongodb-forest); + border: none; + font-size: 0.95rem; + font-weight: 500; + cursor: pointer; + transition: all var(--transition-base); + text-decoration: underline; + text-underline-offset: 4px; +} + +.deselectAllButton:hover { + color: var(--mongodb-evergreen); + text-decoration-thickness: 2px; +} + +.selectionActions { + display: flex; + align-items: center; + gap: 0.75rem; + flex-wrap: wrap; +} + +.editSelectedButton { + padding: 0.625rem 1.25rem; + background: var(--mongodb-white); + color: var(--mongodb-forest); + border: 2px solid var(--mongodb-forest); + border-radius: var(--radius-md); + font-size: 0.95rem; + font-weight: 600; + cursor: pointer; + transition: all var(--transition-base); +} + +.editSelectedButton:hover:not(:disabled) { + background: var(--mongodb-mint); + transform: translateY(-1px); + box-shadow: var(--shadow-sm); +} + +.editSelectedButton:disabled { + opacity: 0.5; + cursor: not-allowed; + transform: none; +} + +.deleteSelectedButton { + padding: 0.625rem 1.25rem; + background: var(--mongodb-white); + color: var(--color-error); + border: 2px solid var(--color-error); + border-radius: var(--radius-md); + font-size: 0.95rem; + font-weight: 600; + cursor: pointer; + transition: all var(--transition-base); +} + +.deleteSelectedButton:hover:not(:disabled) { + background: var(--color-error); + color: var(--mongodb-white); + transform: translateY(-1px); + box-shadow: 0 4px 12px rgba(229, 62, 62, 0.3); +} + +.deleteSelectedButton:disabled { + opacity: 0.5; + cursor: not-allowed; + transform: none; +} + .successMessage { background: var(--mongodb-mint); border: 2px solid var(--mongodb-spring); diff --git a/mflix/client/app/movies/page.tsx b/mflix/client/app/movies/page.tsx index 087326d..0a2fc29 100644 --- a/mflix/client/app/movies/page.tsx +++ b/mflix/client/app/movies/page.tsx @@ -544,33 +544,6 @@ export default function Movies() {
)} - {/* Batch Selection Controls */} - {!showAddForm && !showBatchEditForm && !showSearchModal && displayMovies.length > 0 && ( -
- {selectedMovies.size > 0 && ( - <> - - - - - )} -
- )} - {!isSearchMode && (
)} + + {/* Contextual Bottom Selection Bar */} + {selectedMovies.size > 0 && !showAddForm && !showBatchEditForm && !showSearchModal && ( +
+
+
+ + {selectedMovies.size} movie{selectedMovies.size !== 1 ? 's' : ''} selected + + +
+
+ + +
+
+
+ )}
); From 25a1f13719c59ab137e24834359009e42caefe77 Mon Sep 17 00:00:00 2001 From: Cory Bullinger Date: Sat, 31 Jan 2026 13:48:30 -0500 Subject: [PATCH 12/22] Remove checkboxes from movie cards, keep visual selection - Remove checkbox UI element from MovieCard component - Remove checkbox-related CSS styles - Update click handler to remove checkbox-specific logic - Preserve card's clickable selection behavior - Maintain visual selection state (border, background, shadow) --- .../components/MovieCard/MovieCard.module.css | 21 ----------------- .../app/components/MovieCard/MovieCard.tsx | 23 ++----------------- 2 files changed, 2 insertions(+), 42 deletions(-) diff --git a/mflix/client/app/components/MovieCard/MovieCard.module.css b/mflix/client/app/components/MovieCard/MovieCard.module.css index ee19700..2baa7c2 100644 --- a/mflix/client/app/components/MovieCard/MovieCard.module.css +++ b/mflix/client/app/components/MovieCard/MovieCard.module.css @@ -51,27 +51,6 @@ background: var(--mongodb-mint); } -.selectionCheckbox { - position: absolute; - top: 12px; - right: 12px; - z-index: 2; - /* Toned down styling - less prominent */ - opacity: 0.7; - transition: opacity var(--transition-base); -} - -.selectable:hover .selectionCheckbox { - opacity: 1; -} - -.checkbox { - width: 16px; - height: 16px; - cursor: pointer; - accent-color: var(--mongodb-forest); -} - .moviePoster { position: relative; width: 100%; diff --git a/mflix/client/app/components/MovieCard/MovieCard.tsx b/mflix/client/app/components/MovieCard/MovieCard.tsx index 040a0bf..e659577 100644 --- a/mflix/client/app/components/MovieCard/MovieCard.tsx +++ b/mflix/client/app/components/MovieCard/MovieCard.tsx @@ -27,17 +27,11 @@ export default function MovieCard({ movie, isSelected = false, onSelectionChange console.warn(`Failed to load poster for: ${movie.title}`); }; - const handleCheckboxChange = (e: React.ChangeEvent) => { - if (onSelectionChange) { - onSelectionChange(movie._id, e.target.checked); - } - }; - // Handle card click for selection (when checkbox is shown) const handleCardClick = (e: React.MouseEvent) => { - // Don't toggle selection if clicking on the "Get Details" link or checkbox + // Don't toggle selection if clicking on the "Get Details" link const target = e.target as HTMLElement; - if (target.closest('a') || target.closest('input[type="checkbox"]')) { + if (target.closest('a')) { return; } @@ -51,19 +45,6 @@ export default function MovieCard({ movie, isSelected = false, onSelectionChange className={`${movieStyles.movieCard} ${isSelected ? movieStyles.selected : ''} ${showCheckbox ? movieStyles.selectable : ''}`} onClick={handleCardClick} > - {showCheckbox && ( -
- -
- )} -
{movie.poster ? ( Date: Sat, 31 Jan 2026 19:59:22 -0500 Subject: [PATCH 13/22] Make Show More button pill-shaped on aggregations page --- .../app/components/ExpandableTable/ExpandableTable.module.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mflix/client/app/components/ExpandableTable/ExpandableTable.module.css b/mflix/client/app/components/ExpandableTable/ExpandableTable.module.css index 549ae45..04c6cdb 100644 --- a/mflix/client/app/components/ExpandableTable/ExpandableTable.module.css +++ b/mflix/client/app/components/ExpandableTable/ExpandableTable.module.css @@ -42,7 +42,7 @@ background: transparent; color: var(--color-text-secondary); border: none; - border-radius: 4px; + border-radius: 50px; font-size: 0.9375rem; font-weight: 500; letter-spacing: 0.01em; From b82139cbf523bf1328b9192250eac318fbafa486 Mon Sep 17 00:00:00 2001 From: Cory Bullinger Date: Sat, 31 Jan 2026 20:11:52 -0500 Subject: [PATCH 14/22] Fix floating contextual bar width to prevent button stacking - Increase min-width from 550px to 650px - Increase max-width from 600px to 700px - Prevents Edit/Delete Selected buttons from stacking vertically - Maintains single-line layout when selecting 2+ movies --- mflix/client/app/movies/movies.module.css | 39 ++++++++++++----------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/mflix/client/app/movies/movies.module.css b/mflix/client/app/movies/movies.module.css index 99b85d3..d79b9ac 100644 --- a/mflix/client/app/movies/movies.module.css +++ b/mflix/client/app/movies/movies.module.css @@ -376,46 +376,49 @@ transform: none; } -/* Contextual Bottom Selection Bar */ +/* Floating Contextual Selection Bar */ .selectionBar { position: fixed; - bottom: 0; - left: 0; - right: 0; + bottom: 2rem; + left: 50%; + transform: translateX(-50%); + min-width: 650px; + max-width: 700px; + width: calc(100% - 2rem); background: var(--mongodb-white); - border-top: 1px solid var(--color-border); - box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.08); + border: 1px solid var(--color-border); + border-radius: 24px; + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.08); z-index: 100; - padding: 1rem 2rem; - animation: slideUp 0.3s cubic-bezier(0.4, 0, 0.2, 1); + padding: 1rem 1.5rem; + animation: floatUp 0.3s cubic-bezier(0.4, 0, 0.2, 1); } -@keyframes slideUp { +@keyframes floatUp { from { - transform: translateY(100%); + transform: translateX(-50%) translateY(100%); opacity: 0; } to { - transform: translateY(0); + transform: translateX(-50%) translateY(0); opacity: 1; } } .selectionBarContent { - max-width: 1400px; - margin: 0 auto; display: flex; align-items: center; justify-content: space-between; - gap: 1.5rem; - flex-wrap: wrap; + gap: 1rem; + flex-wrap: nowrap; } .selectionInfo { display: flex; align-items: center; - gap: 1.5rem; - flex-wrap: wrap; + gap: 1rem; + flex-wrap: nowrap; + white-space: nowrap; } .selectionCount { @@ -446,7 +449,7 @@ display: flex; align-items: center; gap: 0.75rem; - flex-wrap: wrap; + flex-wrap: nowrap; } .editSelectedButton { From b3d00a5116295c1b62a4ce912cd3b0c2bc390e64 Mon Sep 17 00:00:00 2001 From: Cory Bullinger Date: Sat, 31 Jan 2026 20:17:26 -0500 Subject: [PATCH 15/22] Change PageSizeSelector dropdown to use neutral gray border instead of green - Replaced green border colors with neutral gray to match FilterBar styling - Removed mint green background on hover - Updated focus state to use gray outline instead of green - Ensures dropdown doesn't look selected when it's not --- .../PageSizeSelector/PageSizeSelector.module.css | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/mflix/client/app/components/PageSizeSelector/PageSizeSelector.module.css b/mflix/client/app/components/PageSizeSelector/PageSizeSelector.module.css index 92d1a7b..ec04d27 100644 --- a/mflix/client/app/components/PageSizeSelector/PageSizeSelector.module.css +++ b/mflix/client/app/components/PageSizeSelector/PageSizeSelector.module.css @@ -20,7 +20,7 @@ .select { padding: 0.625rem 1rem; - border: 2px solid var(--mongodb-forest); + border: 2px solid var(--color-border); border-radius: var(--radius-md); background: var(--mongodb-white); color: var(--mongodb-slate); @@ -31,14 +31,13 @@ } .select:hover { - border-color: var(--mongodb-evergreen); - background: var(--mongodb-mint); + border-color: var(--color-text-secondary); } .select:focus { outline: none; - border-color: var(--mongodb-forest); - box-shadow: 0 0 0 3px rgba(0, 104, 74, 0.1); + border-color: var(--color-text-secondary); + box-shadow: 0 0 0 3px rgba(74, 85, 104, 0.1); } /* Responsive Design */ From fc04979844272e24bbdebff73eeea9ba00178677 Mon Sep 17 00:00:00 2001 From: Cory Bullinger Date: Sat, 31 Jan 2026 20:22:59 -0500 Subject: [PATCH 16/22] Change Back to Movies link to use MongoDB brand colors instead of blue - Updated page.module.css to use Forest green and Evergreen for link states - Updated not-found.module.css to match MongoDB brand colors - Changed focus outline to use MongoDB Forest green - Ensures consistent branding across all navigation links --- mflix/client/app/movie/[id]/not-found.module.css | 6 +++--- mflix/client/app/movie/[id]/page.module.css | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mflix/client/app/movie/[id]/not-found.module.css b/mflix/client/app/movie/[id]/not-found.module.css index b295429..15b7e54 100644 --- a/mflix/client/app/movie/[id]/not-found.module.css +++ b/mflix/client/app/movie/[id]/not-found.module.css @@ -31,7 +31,7 @@ } .backLink { - color: #0070f3; + color: var(--mongodb-forest); text-decoration: none; font-size: 1.1rem; font-weight: 500; @@ -39,12 +39,12 @@ } .backLink:hover { - color: #0051cc; + color: var(--mongodb-evergreen); text-decoration: underline; } .backLink:focus { - outline: 2px solid #0070f3; + outline: 2px solid var(--mongodb-forest); outline-offset: 2px; border-radius: 4px; } \ No newline at end of file diff --git a/mflix/client/app/movie/[id]/page.module.css b/mflix/client/app/movie/[id]/page.module.css index ba5866b..6433b74 100644 --- a/mflix/client/app/movie/[id]/page.module.css +++ b/mflix/client/app/movie/[id]/page.module.css @@ -22,14 +22,14 @@ } .backLink a { - color: #0070f3; + color: var(--mongodb-forest); text-decoration: none; font-weight: 500; transition: color 0.2s ease; } .backLink a:hover { - color: #0051cc; + color: var(--mongodb-evergreen); text-decoration: underline; } From 9eeb404d2ffd889696f24496eb3680f40204d52b Mon Sep 17 00:00:00 2001 From: Cory Bullinger Date: Sat, 31 Jan 2026 20:27:29 -0500 Subject: [PATCH 17/22] Update Edit Selected button hover state to use dark button pattern - Normal state: White background with green border (original style) - Hover state: Dark Forest green background with white text - Matches the inverted color pattern of Delete Selected button --- mflix/client/app/movies/movies.module.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mflix/client/app/movies/movies.module.css b/mflix/client/app/movies/movies.module.css index d79b9ac..1ee91fc 100644 --- a/mflix/client/app/movies/movies.module.css +++ b/mflix/client/app/movies/movies.module.css @@ -465,7 +465,8 @@ } .editSelectedButton:hover:not(:disabled) { - background: var(--mongodb-mint); + background: var(--mongodb-forest); + color: var(--mongodb-white); transform: translateY(-1px); box-shadow: var(--shadow-sm); } From 7c3852133fb06ef1453af9502548cd638c0f90dc Mon Sep 17 00:00:00 2001 From: Cory Bullinger Date: Sat, 31 Jan 2026 20:33:18 -0500 Subject: [PATCH 18/22] Establish button hierarchy: Make Add Movie primary, Search Movies secondary - Changed Search Movies button to secondary style (white background with Forest green border) - Kept Add Movie button as primary action (solid Forest green background) - Updated Search Movies hover state to invert colors (dark green background with white text) - Creates clear visual hierarchy between primary and secondary actions --- mflix/client/app/movies/movies.module.css | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mflix/client/app/movies/movies.module.css b/mflix/client/app/movies/movies.module.css index 1ee91fc..3fa7b2e 100644 --- a/mflix/client/app/movies/movies.module.css +++ b/mflix/client/app/movies/movies.module.css @@ -37,9 +37,9 @@ .searchButton { padding: 0.875rem 1.75rem; - background: var(--mongodb-forest); - color: var(--mongodb-white); - border: none; + background: var(--mongodb-white); + color: var(--mongodb-forest); + border: 2px solid var(--mongodb-forest); border-radius: var(--radius-lg); font-size: 1rem; font-weight: 600; @@ -53,7 +53,8 @@ } .searchButton:hover:not(:disabled) { - background: var(--mongodb-evergreen); + background: var(--mongodb-forest); + color: var(--mongodb-white); transform: translateY(-2px); box-shadow: 0 6px 16px rgba(0, 104, 74, 0.4); } From a5563d3f86ae9e9116eee595913a656fb792dc08 Mon Sep 17 00:00:00 2001 From: Cory Bullinger Date: Fri, 6 Feb 2026 08:18:29 -0500 Subject: [PATCH 19/22] Update dependencies across all backends and frontend - Python FastAPI: Update fastapi, pydantic, voyageai, pytest, and other dependencies - Java Spring: Update spring-dotenv (5.1.0), commons-lang3 (3.20.0), langchain4j (1.11.0-beta19), impsort-maven-plugin (1.13.0) - Java Spring: Fix spring-dotenv artifact to springboot3-dotenv for Spring Boot 3 compatibility - Next.js Frontend: Update next (16.1.6), react (19.2.4), react-dom (19.2.4), eslint (9.39.2) All tests pass: - Python: 75 tests - Java: 92 tests - Frontend: Build successful --- mflix/client/package.json | 12 ++-- mflix/server/java-spring/pom.xml | 10 +-- mflix/server/js-express/package.json | 24 +++---- mflix/server/python-fastapi/requirements.in | 34 +++++----- mflix/server/python-fastapi/requirements.txt | 68 +++++++++++--------- 5 files changed, 77 insertions(+), 71 deletions(-) diff --git a/mflix/client/package.json b/mflix/client/package.json index 2151fee..552c14c 100644 --- a/mflix/client/package.json +++ b/mflix/client/package.json @@ -12,17 +12,17 @@ "lint": "eslint" }, "dependencies": { - "react": "19.2.0", - "react-dom": "19.2.0", - "next": "16.1.5" + "next": "^16.1.6", + "react": "^19.2.4", + "react-dom": "^19.2.4" }, "devDependencies": { - "typescript": "^5", + "@eslint/eslintrc": "^3", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", "eslint": "^9", - "eslint-config-next": "16.1.5", - "@eslint/eslintrc": "^3" + "eslint-config-next": "^16.1.6", + "typescript": "^5" } } diff --git a/mflix/server/java-spring/pom.xml b/mflix/server/java-spring/pom.xml index baff5c0..a7b3ae8 100644 --- a/mflix/server/java-spring/pom.xml +++ b/mflix/server/java-spring/pom.xml @@ -21,11 +21,11 @@ 21 2.8.13 - 4.0.0 - 3.19.0 - 1.12.0 + 5.1.0 + 3.20.0 + 1.13.0 1.17.8 - 1.0.0-beta3 + 1.11.0-beta19 @@ -50,7 +50,7 @@ me.paulschwarz - spring-dotenv + springboot3-dotenv ${dotenv.version} diff --git a/mflix/server/js-express/package.json b/mflix/server/js-express/package.json index 85f09a2..e0a4052 100644 --- a/mflix/server/js-express/package.json +++ b/mflix/server/js-express/package.json @@ -19,26 +19,26 @@ "test:silent": "jest --silent" }, "dependencies": { - "cors": "^2.8.5", - "dotenv": "^17.2.3", - "express": "^5.1.0", - "mongodb": "^7.0.0", + "cors": "^2.8.6", + "dotenv": "^17.2.4", + "express": "^5.2.1", + "mongodb": "^7.1.0", "swagger-jsdoc": "^6.2.8", "swagger-ui-express": "^5.0.1", "winston": "^3.19.0" }, "devDependencies": { - "@types/cors": "^2.8.17", - "@types/express": "^4.17.21", - "@types/jest": "^29.5.14", - "@types/node": "^20.10.5", + "@types/cors": "^2.8.19", + "@types/express": "^4.17.25", + "@types/jest": "^30.0.0", + "@types/node": "^25.2.1", "@types/supertest": "^6.0.3", "@types/swagger-jsdoc": "^6.0.4", "@types/swagger-ui-express": "^4.1.8", - "jest": "^29.7.0", - "supertest": "^7.1.4", - "ts-jest": "^29.1.1", + "jest": "^30.2.0", + "supertest": "^7.2.2", + "ts-jest": "^29.4.6", "ts-node": "^10.9.2", - "typescript": "^5.3.3" + "typescript": "^5.9.3" } } diff --git a/mflix/server/python-fastapi/requirements.in b/mflix/server/python-fastapi/requirements.in index a54f67e..c50a667 100644 --- a/mflix/server/python-fastapi/requirements.in +++ b/mflix/server/python-fastapi/requirements.in @@ -2,21 +2,21 @@ # 1. CORE WEB FRAMEWORK & ASGI SERVER # FastAPI and its main components. # ------------------------------------------------------------------------------ -fastapi~=0.120.1 # The main web framework -starlette~=0.49.1 # FastAPI's underlying ASGI toolkit +fastapi~=0.120.4 # The main web framework +starlette~=0.49.3 # FastAPI's underlying ASGI toolkit uvicorn~=0.38.0 # Production-ready ASGI server -uvloop~=0.22.0 # Optional: High-performance event loop for uvicorn -websockets~=15.0.0 # For WebSocket support -watchfiles~=1.1.0 # For hot-reloading in development +uvloop~=0.22.1 # Optional: High-performance event loop for uvicorn +websockets~=15.0.1 # For WebSocket support +watchfiles~=1.1.1 # For hot-reloading in development # ============================================================================== # 2. DATA VALIDATION & CORE UTILITIES # Primary libraries for data models and environment config. # ------------------------------------------------------------------------------ -pydantic~=2.12.0 # Data validation and settings management -python-dotenv~=1.1.0 # For loading configuration from .env files +pydantic~=2.12.5 # Data validation and settings management +python-dotenv~=1.1.1 # For loading configuration from .env files python-multipart>=0.0.22 # For parsing form data and file uploads -PyYAML~=6.0.0 # For handling YAML configuration or data +PyYAML~=6.0.3 # For handling YAML configuration or data # ============================================================================== # 3. DATABASE & CONNECTIVITY @@ -29,33 +29,33 @@ dnspython~=2.8.0 # Required for SRV record lookups by pymongo (e.g., Mong # 4. HTTP CLIENT & UTILITIES # Primary libraries for making external HTTP requests. # ------------------------------------------------------------------------------ -httpx~=0.28.0 # Asynchronous HTTP client for requests to external APIs +httpx~=0.28.1 # Asynchronous HTTP client for requests to external APIs email-validator~=2.3.0 # Utility for validating email addresses -voyageai~=0.3.5 # Vector embeddings API client +voyageai~=0.3.7 # Vector embeddings API client urllib3>=2.6.3 # HTTP library # ============================================================================== # 5. CLI & DEVELOPMENT TOOLS # Tools for building command-line interfaces for management tasks. # ------------------------------------------------------------------------------ -typer~=0.20.0 # Library for creating command-line applications -fastapi-cli~=0.0.0 # Tools to run and manage FastAPI projects -fastapi-cloud-cli~=0.3.0 # Tools for cloud deployment (specific to your pipeline) +typer~=0.20.1 # Library for creating command-line applications +fastapi-cli~=0.0.20 # Tools to run and manage FastAPI projects +fastapi-cloud-cli~=0.3.1 # Tools for cloud deployment (specific to your pipeline) # ============================================================================== # 6. TESTING & MONITORING # Frameworks for ensuring code quality and production health. # ------------------------------------------------------------------------------ -pytest~=8.4.0 # Primary testing framework +pytest~=8.4.2 # Primary testing framework pytest-asyncio~=1.2.0 # Plugin to make asynchronous tests easy with pytest -sentry-sdk~=2.42.0 # For error tracking and performance monitoring +sentry-sdk~=2.42.1 # For error tracking and performance monitoring # ============================================================================== # 7. LOGGING AND TERMINAL OUTPUT # Libraries for rich console output and debugging. # ------------------------------------------------------------------------------ rich~=14.2.0 # For rich, formatted terminal output -rich-toolkit~=0.15.0 # Extensions for the 'rich' library +rich-toolkit~=0.15.1 # Extensions for the 'rich' library # ============================================================================== # 8. TRANSITIVE DEPENDENCY CONSTRAINTS @@ -63,4 +63,4 @@ rich-toolkit~=0.15.0 # Extensions for the 'rich' library # ------------------------------------------------------------------------------ filelock>=3.20.3 # Transitive dep via huggingface-hub aiohttp>=3.13.3 # Transitive dep via voyageai -orjson>=3.11.5 # Transitive dep via langsmith (CVE fix) +orjson>=3.11.7 # Transitive dep via langsmith (CVE fix) diff --git a/mflix/server/python-fastapi/requirements.txt b/mflix/server/python-fastapi/requirements.txt index 3113cb3..29e4311 100644 --- a/mflix/server/python-fastapi/requirements.txt +++ b/mflix/server/python-fastapi/requirements.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.13 # by the following command: # -# pip-compile --output-file=requirements.txt requirements.in +# pip-compile requirements.in # aiohappyeyeballs==2.6.1 # via aiohttp @@ -14,18 +14,18 @@ aiolimiter==1.2.1 # via voyageai aiosignal==1.4.0 # via aiohttp -annotated-doc==0.0.3 +annotated-doc==0.0.4 # via fastapi annotated-types==0.7.0 # via pydantic -anyio==4.11.0 +anyio==4.12.1 # via # httpx # starlette # watchfiles attrs==25.4.0 # via aiohttp -certifi==2025.10.5 +certifi==2026.1.4 # via # httpcore # httpx @@ -33,7 +33,7 @@ certifi==2025.10.5 # sentry-sdk charset-normalizer==3.4.4 # via requests -click==8.3.0 +click==8.3.1 # via # rich-toolkit # typer @@ -48,12 +48,14 @@ email-validator==2.3.0 # via # -r requirements.in # pydantic -fastapi==0.120.2 +fastapi==0.120.4 # via -r requirements.in -fastapi-cli==0.0.14 +fastapi-cli==0.0.20 # via -r requirements.in fastapi-cloud-cli==0.3.1 # via -r requirements.in +ffmpeg-python==0.2.0 + # via voyageai filelock==3.20.3 # via # -r requirements.in @@ -62,8 +64,10 @@ frozenlist==1.8.0 # via # aiohttp # aiosignal -fsspec==2025.10.0 +fsspec==2026.2.0 # via huggingface-hub +future==1.0.0 + # via ffmpeg-python h11==0.16.0 # via # httpcore @@ -80,7 +84,7 @@ httpx==0.28.1 # fastapi-cloud-cli # huggingface-hub # langsmith -huggingface-hub==1.0.1 +huggingface-hub==1.4.1 # via tokenizers idna==3.11 # via @@ -95,33 +99,33 @@ jsonpatch==1.33 # via langchain-core jsonpointer==3.0.0 # via jsonpatch -langchain-core==1.2.5 +langchain-core==1.2.9 # via langchain-text-splitters -langchain-text-splitters==1.0.0 +langchain-text-splitters==1.1.0 # via voyageai -langsmith==0.4.40 +langsmith==0.6.9 # via langchain-core markdown-it-py==4.0.0 # via rich mdurl==0.1.2 # via markdown-it-py -multidict==6.7.0 +multidict==6.7.1 # via # aiohttp # yarl -numpy==2.3.4 +numpy==2.4.2 # via voyageai -orjson==3.11.5 +orjson==3.11.7 # via # -r requirements.in # langsmith -packaging==25.0 +packaging==26.0 # via # huggingface-hub # langchain-core # langsmith # pytest -pillow==12.0.0 +pillow==12.1.0 # via voyageai pluggy==1.6.0 # via pytest @@ -129,7 +133,7 @@ propcache==0.4.1 # via # aiohttp # yarl -pydantic[email]==2.12.3 +pydantic[email]==2.12.5 # via # -r requirements.in # fastapi @@ -137,7 +141,7 @@ pydantic[email]==2.12.3 # langchain-core # langsmith # voyageai -pydantic-core==2.41.4 +pydantic-core==2.41.5 # via pydantic pygments==2.19.2 # via @@ -180,7 +184,7 @@ rich-toolkit==0.15.1 # -r requirements.in # fastapi-cli # fastapi-cloud-cli -rignore==0.7.1 +rignore==0.7.6 # via fastapi-cloud-cli sentry-sdk==2.42.1 # via @@ -190,26 +194,24 @@ shellingham==1.5.4 # via # huggingface-hub # typer -sniffio==1.3.1 - # via anyio -starlette==0.49.1 +starlette==0.49.3 # via # -r requirements.in # fastapi -tenacity==9.1.2 +tenacity==9.1.3 # via # langchain-core # voyageai -tokenizers==0.22.1 +tokenizers==0.22.2 # via voyageai -tqdm==4.67.1 +tqdm==4.67.3 # via huggingface-hub -typer==0.20.0 +typer==0.20.1 # via # -r requirements.in # fastapi-cli # fastapi-cloud-cli -typer-slim==0.20.0 +typer-slim==0.21.1 # via huggingface-hub typing-extensions==4.15.0 # via @@ -229,8 +231,10 @@ urllib3==2.6.3 # -r requirements.in # requests # sentry-sdk -uuid-utils==0.12.0 - # via langchain-core +uuid-utils==0.14.0 + # via + # langchain-core + # langsmith uvicorn[standard]==0.38.0 # via # -r requirements.in @@ -240,7 +244,7 @@ uvloop==0.22.1 # via # -r requirements.in # uvicorn -voyageai==0.3.5 +voyageai==0.3.7 # via -r requirements.in watchfiles==1.1.1 # via @@ -250,6 +254,8 @@ websockets==15.0.1 # via # -r requirements.in # uvicorn +xxhash==3.6.0 + # via langsmith yarl==1.22.0 # via aiohttp zstandard==0.25.0 From 0ff723a01f4a72f73d011963d2a6a57aba6c3cca Mon Sep 17 00:00:00 2001 From: Cory Bullinger Date: Sat, 7 Feb 2026 09:17:54 -0500 Subject: [PATCH 20/22] Update js-express workflow so it fails on failed unit tests --- .github/workflows/run-express-tests.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/run-express-tests.yml b/.github/workflows/run-express-tests.yml index eb1b2aa..5f2fdd4 100644 --- a/.github/workflows/run-express-tests.yml +++ b/.github/workflows/run-express-tests.yml @@ -62,13 +62,14 @@ jobs: - name: Run unit tests working-directory: mflix/server/js-express - run: npm run test:unit -- --json --outputFile=test-results-unit.json || true + run: npm run test:unit -- --json --outputFile=test-results-unit.json env: MONGODB_URI: mongodb://localhost:27017/sample_mflix?directConnection=true - name: Run integration tests working-directory: mflix/server/js-express - run: npm run test:integration -- --json --outputFile=test-results-integration.json || true + continue-on-error: true + run: npm run test:integration -- --json --outputFile=test-results-integration.json env: MONGODB_URI: mongodb://localhost:27017/sample_mflix?directConnection=true ENABLE_SEARCH_TESTS: true From abda9be66d555e0dd7709c5e98d4cc4f3ce100f1 Mon Sep 17 00:00:00 2001 From: Cory Bullinger Date: Mon, 9 Feb 2026 11:39:28 -0500 Subject: [PATCH 21/22] Update to Express 5 and fix breaking changes --- mflix/server/js-express/package.json | 4 ++-- .../src/controllers/movieController.ts | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/mflix/server/js-express/package.json b/mflix/server/js-express/package.json index e0a4052..ae1e7d3 100644 --- a/mflix/server/js-express/package.json +++ b/mflix/server/js-express/package.json @@ -29,9 +29,9 @@ }, "devDependencies": { "@types/cors": "^2.8.19", - "@types/express": "^4.17.25", + "@types/express": "^5.0.6", "@types/jest": "^30.0.0", - "@types/node": "^25.2.1", + "@types/node": "^25.2.2", "@types/supertest": "^6.0.3", "@types/swagger-jsdoc": "^6.0.4", "@types/swagger-ui-express": "^4.1.8", diff --git a/mflix/server/js-express/src/controllers/movieController.ts b/mflix/server/js-express/src/controllers/movieController.ts index 26801e4..a4e516b 100644 --- a/mflix/server/js-express/src/controllers/movieController.ts +++ b/mflix/server/js-express/src/controllers/movieController.ts @@ -172,8 +172,8 @@ export async function getDistinctGenres( export async function getMovieById(req: Request, res: Response): Promise { const { id } = req.params; - // Validate ObjectId format - if (!ObjectId.isValid(id)) { + // Validate id is a string and ObjectId format + if (typeof id !== "string" || !ObjectId.isValid(id)) { res .status(400) .json( @@ -305,8 +305,8 @@ export async function updateMovie(req: Request, res: Response): Promise { const { id } = req.params; const updateData: UpdateMovieRequest = req.body; - // Validate ObjectId format - if (!ObjectId.isValid(id)) { + // Validate id is a string and ObjectId format + if (typeof id !== "string" || !ObjectId.isValid(id)) { res .status(400) .json( @@ -426,8 +426,8 @@ export async function updateMoviesBatch( export async function deleteMovie(req: Request, res: Response): Promise { const { id } = req.params; - // Validate ObjectId format - if (!ObjectId.isValid(id)) { + // Validate id is a string and ObjectId format + if (typeof id !== "string" || !ObjectId.isValid(id)) { res .status(400) .json( @@ -521,8 +521,8 @@ export async function findAndDeleteMovie( ): Promise { const { id } = req.params; - // Validate ObjectId format - if (!ObjectId.isValid(id)) { + // Validate id is a string and ObjectId format + if (typeof id !== "string" || !ObjectId.isValid(id)) { res .status(400) .json( From 45d5e58fb9ac742b260486ce6921b1bbe938bf59 Mon Sep 17 00:00:00 2001 From: Cory Bullinger Date: Tue, 10 Feb 2026 08:05:22 -0500 Subject: [PATCH 22/22] Remove unneeded test log files --- Run Express Tests/0_Run Express Tests.txt | 2419 ----------------- Run Express Tests/10_Run unit tests.txt | 91 - .../11_Run integration tests.txt | 1852 ------------- Run Express Tests/12_Upload test results.txt | 26 - .../13_Generate Test Summary.txt | 8 - Run Express Tests/1_Set up job.txt | 46 - Run Express Tests/26_Post Checkout code.txt | 14 - Run Express Tests/27_Complete job.txt | 1 - Run Express Tests/2_Checkout code.txt | 88 - Run Express Tests/3_Install Atlas CLI.txt | 58 - ... up a local deployment using Atlas CLI.txt | 20 - ...oDB Database Tools to load sample data.txt | 59 - Run Express Tests/6_Download sample data.txt | 17 - .../7_Add sample data to database.txt | 110 - Run Express Tests/8_Set up Node.js.txt | 13 - Run Express Tests/9_Install dependencies.txt | 16 - Run Express Tests/system.txt | 8 - 17 files changed, 4846 deletions(-) delete mode 100644 Run Express Tests/0_Run Express Tests.txt delete mode 100644 Run Express Tests/10_Run unit tests.txt delete mode 100644 Run Express Tests/11_Run integration tests.txt delete mode 100644 Run Express Tests/12_Upload test results.txt delete mode 100644 Run Express Tests/13_Generate Test Summary.txt delete mode 100644 Run Express Tests/1_Set up job.txt delete mode 100644 Run Express Tests/26_Post Checkout code.txt delete mode 100644 Run Express Tests/27_Complete job.txt delete mode 100644 Run Express Tests/2_Checkout code.txt delete mode 100644 Run Express Tests/3_Install Atlas CLI.txt delete mode 100644 Run Express Tests/4_Set up a local deployment using Atlas CLI.txt delete mode 100644 Run Express Tests/5_Install MongoDB Database Tools to load sample data.txt delete mode 100644 Run Express Tests/6_Download sample data.txt delete mode 100644 Run Express Tests/7_Add sample data to database.txt delete mode 100644 Run Express Tests/8_Set up Node.js.txt delete mode 100644 Run Express Tests/9_Install dependencies.txt delete mode 100644 Run Express Tests/system.txt diff --git a/Run Express Tests/0_Run Express Tests.txt b/Run Express Tests/0_Run Express Tests.txt deleted file mode 100644 index e7ddaab..0000000 --- a/Run Express Tests/0_Run Express Tests.txt +++ /dev/null @@ -1,2419 +0,0 @@ -2026-01-30T15:27:35.4021994Z Current runner version: '2.331.0' -2026-01-30T15:27:35.4044853Z ##[group]Runner Image Provisioner -2026-01-30T15:27:35.4045768Z Hosted Compute Agent -2026-01-30T15:27:35.4046303Z Version: 20260123.484 -2026-01-30T15:27:35.4046962Z Commit: 6bd6555ca37d84114959e1c76d2c01448ff61c5d -2026-01-30T15:27:35.4047652Z Build Date: 2026-01-23T19:41:17Z -2026-01-30T15:27:35.4048259Z Worker ID: {1c5318de-9485-4f85-b747-b92f544a1cd0} -2026-01-30T15:27:35.4048984Z Azure Region: westus -2026-01-30T15:27:35.4049553Z ##[endgroup] -2026-01-30T15:27:35.4050861Z ##[group]Operating System -2026-01-30T15:27:35.4051543Z Ubuntu -2026-01-30T15:27:35.4051975Z 24.04.3 -2026-01-30T15:27:35.4052600Z LTS -2026-01-30T15:27:35.4053065Z ##[endgroup] -2026-01-30T15:27:35.4053609Z ##[group]Runner Image -2026-01-30T15:27:35.4054105Z Image: ubuntu-24.04 -2026-01-30T15:27:35.4054639Z Version: 20260126.10.1 -2026-01-30T15:27:35.4055795Z Included Software: https://github.com/actions/runner-images/blob/ubuntu24/20260126.10/images/ubuntu/Ubuntu2404-Readme.md -2026-01-30T15:27:35.4057373Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu24%2F20260126.10 -2026-01-30T15:27:35.4058247Z ##[endgroup] -2026-01-30T15:27:35.4060846Z ##[group]GITHUB_TOKEN Permissions -2026-01-30T15:27:35.4063610Z Actions: write -2026-01-30T15:27:35.4064181Z ArtifactMetadata: write -2026-01-30T15:27:35.4064680Z Attestations: write -2026-01-30T15:27:35.4065293Z Checks: write -2026-01-30T15:27:35.4065776Z Contents: write -2026-01-30T15:27:35.4066235Z Deployments: write -2026-01-30T15:27:35.4066831Z Discussions: write -2026-01-30T15:27:35.4067279Z Issues: write -2026-01-30T15:27:35.4067730Z Metadata: read -2026-01-30T15:27:35.4068231Z Models: read -2026-01-30T15:27:35.4068705Z Packages: write -2026-01-30T15:27:35.4069158Z Pages: write -2026-01-30T15:27:35.4069817Z PullRequests: write -2026-01-30T15:27:35.4070347Z RepositoryProjects: write -2026-01-30T15:27:35.4070861Z SecurityEvents: write -2026-01-30T15:27:35.4071423Z Statuses: write -2026-01-30T15:27:35.4071886Z ##[endgroup] -2026-01-30T15:27:35.4074279Z Secret source: Actions -2026-01-30T15:27:35.4075190Z Prepare workflow directory -2026-01-30T15:27:35.4388167Z Prepare all required actions -2026-01-30T15:27:35.4425058Z Getting action download info -2026-01-30T15:27:35.9628867Z Download action repository 'actions/checkout@v5' (SHA:93cb6efe18208431cddfb8368fd83d5badbf9bfd) -2026-01-30T15:27:36.0508213Z Download action repository 'actions/setup-node@v4' (SHA:49933ea5288caeca8642d1e84afbd3f7d6820020) -2026-01-30T15:27:36.1435399Z Download action repository 'actions/upload-artifact@v4' (SHA:ea165f8d65b6e75b540449e92b4886f43607fa02) -2026-01-30T15:27:36.3648163Z Complete job name: Run Express Tests -2026-01-30T15:27:36.4368854Z ##[group]Run actions/checkout@v5 -2026-01-30T15:27:36.4369741Z with: -2026-01-30T15:27:36.4370192Z repository: mongodb/docs-sample-apps -2026-01-30T15:27:36.4370926Z token: *** -2026-01-30T15:27:36.4371333Z ssh-strict: true -2026-01-30T15:27:36.4371755Z ssh-user: git -2026-01-30T15:27:36.4372348Z persist-credentials: true -2026-01-30T15:27:36.4372862Z clean: true -2026-01-30T15:27:36.4373292Z sparse-checkout-cone-mode: true -2026-01-30T15:27:36.4373811Z fetch-depth: 1 -2026-01-30T15:27:36.4374236Z fetch-tags: false -2026-01-30T15:27:36.4374711Z show-progress: true -2026-01-30T15:27:36.4375152Z lfs: false -2026-01-30T15:27:36.4375542Z submodules: false -2026-01-30T15:27:36.4375978Z set-safe-directory: true -2026-01-30T15:27:36.4376697Z ##[endgroup] -2026-01-30T15:27:36.5281503Z Syncing repository: mongodb/docs-sample-apps -2026-01-30T15:27:36.5283644Z ##[group]Getting Git version info -2026-01-30T15:27:36.5284609Z Working directory is '/home/runner/work/docs-sample-apps/docs-sample-apps' -2026-01-30T15:27:36.5285729Z [command]/usr/bin/git version -2026-01-30T15:27:36.5360665Z git version 2.52.0 -2026-01-30T15:27:36.5381776Z ##[endgroup] -2026-01-30T15:27:36.5397406Z Temporarily overriding HOME='/home/runner/work/_temp/0dfb3aa4-9072-4dfc-b117-396528f81849' before making global git config changes -2026-01-30T15:27:36.5400144Z Adding repository directory to the temporary git global config as a safe directory -2026-01-30T15:27:36.5403278Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/docs-sample-apps/docs-sample-apps -2026-01-30T15:27:36.5442355Z Deleting the contents of '/home/runner/work/docs-sample-apps/docs-sample-apps' -2026-01-30T15:27:36.5446260Z ##[group]Initializing the repository -2026-01-30T15:27:36.5450999Z [command]/usr/bin/git init /home/runner/work/docs-sample-apps/docs-sample-apps -2026-01-30T15:27:36.5556519Z hint: Using 'master' as the name for the initial branch. This default branch name -2026-01-30T15:27:36.5557767Z hint: will change to "main" in Git 3.0. To configure the initial branch name -2026-01-30T15:27:36.5558834Z hint: to use in all of your new repositories, which will suppress this warning, -2026-01-30T15:27:36.5559573Z hint: call: -2026-01-30T15:27:36.5559959Z hint: -2026-01-30T15:27:36.5560816Z hint: git config --global init.defaultBranch -2026-01-30T15:27:36.5561677Z hint: -2026-01-30T15:27:36.5562554Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and -2026-01-30T15:27:36.5564429Z hint: 'development'. The just-created branch can be renamed via this command: -2026-01-30T15:27:36.5565937Z hint: -2026-01-30T15:27:36.5566752Z hint: git branch -m -2026-01-30T15:27:36.5567720Z hint: -2026-01-30T15:27:36.5568890Z hint: Disable this message with "git config set advice.defaultBranchName false" -2026-01-30T15:27:36.5571016Z Initialized empty Git repository in /home/runner/work/docs-sample-apps/docs-sample-apps/.git/ -2026-01-30T15:27:36.5574683Z [command]/usr/bin/git remote add origin https://github.com/mongodb/docs-sample-apps -2026-01-30T15:27:36.5609606Z ##[endgroup] -2026-01-30T15:27:36.5610980Z ##[group]Disabling automatic garbage collection -2026-01-30T15:27:36.5613955Z [command]/usr/bin/git config --local gc.auto 0 -2026-01-30T15:27:36.5641011Z ##[endgroup] -2026-01-30T15:27:36.5642597Z ##[group]Setting up auth -2026-01-30T15:27:36.5648211Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand -2026-01-30T15:27:36.5679041Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :" -2026-01-30T15:27:36.6022069Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader -2026-01-30T15:27:36.6052732Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :" -2026-01-30T15:27:36.6274525Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir: -2026-01-30T15:27:36.6303067Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url -2026-01-30T15:27:36.6516188Z [command]/usr/bin/git config --local http.https://github.com/.extraheader AUTHORIZATION: basic *** -2026-01-30T15:27:36.6547061Z ##[endgroup] -2026-01-30T15:27:36.6555148Z ##[group]Fetching the repository -2026-01-30T15:27:36.6556576Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +41eb43c3e700e94de5fbb4c1db03d66579c7306b:refs/remotes/pull/80/merge -2026-01-30T15:27:37.1060485Z From https://github.com/mongodb/docs-sample-apps -2026-01-30T15:27:37.1062427Z * [new ref] 41eb43c3e700e94de5fbb4c1db03d66579c7306b -> pull/80/merge -2026-01-30T15:27:37.1093060Z ##[endgroup] -2026-01-30T15:27:37.1094897Z ##[group]Determining the checkout info -2026-01-30T15:27:37.1097079Z ##[endgroup] -2026-01-30T15:27:37.1101745Z [command]/usr/bin/git sparse-checkout disable -2026-01-30T15:27:37.1142679Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig -2026-01-30T15:27:37.1167695Z ##[group]Checking out the ref -2026-01-30T15:27:37.1172687Z [command]/usr/bin/git checkout --progress --force refs/remotes/pull/80/merge -2026-01-30T15:27:37.1321827Z Note: switching to 'refs/remotes/pull/80/merge'. -2026-01-30T15:27:37.1323334Z -2026-01-30T15:27:37.1324352Z You are in 'detached HEAD' state. You can look around, make experimental -2026-01-30T15:27:37.1326763Z changes and commit them, and you can discard any commits you make in this -2026-01-30T15:27:37.1328418Z state without impacting any branches by switching back to a branch. -2026-01-30T15:27:37.1329847Z -2026-01-30T15:27:37.1330828Z If you want to create a new branch to retain commits you create, you may -2026-01-30T15:27:37.1333138Z do so (now or later) by using -c with the switch command. Example: -2026-01-30T15:27:37.1334115Z -2026-01-30T15:27:37.1334495Z git switch -c -2026-01-30T15:27:37.1335093Z -2026-01-30T15:27:37.1335417Z Or undo this operation with: -2026-01-30T15:27:37.1335957Z -2026-01-30T15:27:37.1336243Z git switch - -2026-01-30T15:27:37.1336652Z -2026-01-30T15:27:37.1337353Z Turn off this advice by setting config variable advice.detachedHead to false -2026-01-30T15:27:37.1338501Z -2026-01-30T15:27:37.1339822Z HEAD is now at 41eb43c Merge 9be645df93245290851e18200eefbe91796b46c1 into ce1e9b24def0b15691baec44174a9a7a044d554d -2026-01-30T15:27:37.1343930Z ##[endgroup] -2026-01-30T15:27:37.1364968Z [command]/usr/bin/git log -1 --format=%H -2026-01-30T15:27:37.1386695Z 41eb43c3e700e94de5fbb4c1db03d66579c7306b -2026-01-30T15:27:37.1617523Z ##[group]Run curl https://fastdl.mongodb.org/mongocli/mongodb-atlas-cli_1.47.0_linux_x86_64.deb --output atlas-cli.deb -2026-01-30T15:27:37.1621210Z curl https://fastdl.mongodb.org/mongocli/mongodb-atlas-cli_1.47.0_linux_x86_64.deb --output atlas-cli.deb -2026-01-30T15:27:37.1624041Z sudo apt install ./atlas-cli.deb -2026-01-30T15:27:37.1662581Z shell: /usr/bin/bash -e {0} -2026-01-30T15:27:37.1663674Z ##[endgroup] -2026-01-30T15:27:37.1793739Z % Total % Received % Xferd Average Speed Time Time Time Current -2026-01-30T15:27:37.1796272Z Dload Upload Total Spent Left Speed -2026-01-30T15:27:37.1797394Z -2026-01-30T15:27:37.3083084Z 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 -2026-01-30T15:27:37.3084862Z 100 15.3M 100 15.3M 0 0 118M 0 --:--:-- --:--:-- --:--:-- 118M -2026-01-30T15:27:37.3234233Z -2026-01-30T15:27:37.3235626Z WARNING: apt does not have a stable CLI interface. Use with caution in scripts. -2026-01-30T15:27:37.3237051Z -2026-01-30T15:27:37.3618069Z Reading package lists... -2026-01-30T15:27:37.5325438Z Building dependency tree... -2026-01-30T15:27:37.5332920Z Reading state information... -2026-01-30T15:27:37.7056766Z The following NEW packages will be installed: -2026-01-30T15:27:37.7058939Z mongodb-atlas-cli -2026-01-30T15:27:37.7308589Z 0 upgraded, 1 newly installed, 0 to remove and 65 not upgraded. -2026-01-30T15:27:37.8233723Z Need to get 0 B/16.1 MB of archives. -2026-01-30T15:27:37.8237877Z After this operation, 52.6 MB of additional disk space will be used. -2026-01-30T15:27:37.8242348Z Get:1 /home/runner/work/docs-sample-apps/docs-sample-apps/atlas-cli.deb mongodb-atlas-cli amd64 1.47.0 [16.1 MB] -2026-01-30T15:27:38.1043873Z Selecting previously unselected package mongodb-atlas-cli. -2026-01-30T15:27:38.1367661Z (Reading database ... -2026-01-30T15:27:38.1369131Z (Reading database ... 5% -2026-01-30T15:27:38.1370344Z (Reading database ... 10% -2026-01-30T15:27:38.1371751Z (Reading database ... 15% -2026-01-30T15:27:38.1373251Z (Reading database ... 20% -2026-01-30T15:27:38.1374574Z (Reading database ... 25% -2026-01-30T15:27:38.1375779Z (Reading database ... 30% -2026-01-30T15:27:38.1377126Z (Reading database ... 35% -2026-01-30T15:27:38.1378134Z (Reading database ... 40% -2026-01-30T15:27:38.1379106Z (Reading database ... 45% -2026-01-30T15:27:38.1380069Z (Reading database ... 50% -2026-01-30T15:27:38.1545678Z (Reading database ... 55% -2026-01-30T15:27:38.2799976Z (Reading database ... 60% -2026-01-30T15:27:38.3781343Z (Reading database ... 65% -2026-01-30T15:27:38.4457403Z (Reading database ... 70% -2026-01-30T15:27:38.5334976Z (Reading database ... 75% -2026-01-30T15:27:38.6852065Z (Reading database ... 80% -2026-01-30T15:27:38.8245926Z (Reading database ... 85% -2026-01-30T15:27:38.9423870Z (Reading database ... 90% -2026-01-30T15:27:39.0925788Z (Reading database ... 95% -2026-01-30T15:27:39.0926236Z (Reading database ... 100% -2026-01-30T15:27:39.0926661Z (Reading database ... 217639 files and directories currently installed.) -2026-01-30T15:27:39.0974960Z Preparing to unpack .../docs-sample-apps/atlas-cli.deb ... -2026-01-30T15:27:39.1002732Z Unpacking mongodb-atlas-cli (1.47.0) ... -2026-01-30T15:27:39.3569215Z Setting up mongodb-atlas-cli (1.47.0) ... -2026-01-30T15:27:40.0594326Z -2026-01-30T15:27:40.0594951Z Running kernel seems to be up-to-date. -2026-01-30T15:27:40.0597035Z -2026-01-30T15:27:40.0597302Z No services need to be restarted. -2026-01-30T15:27:40.0597735Z -2026-01-30T15:27:40.0598120Z No containers need to be restarted. -2026-01-30T15:27:40.0598424Z -2026-01-30T15:27:40.0598621Z No user sessions are running outdated binaries. -2026-01-30T15:27:40.0599010Z -2026-01-30T15:27:40.0599478Z No VM guests are running outdated hypervisor (qemu) binaries on this host. -2026-01-30T15:27:40.9036476Z ##[group]Run atlas deployments setup myLocalRs1 --type local --port 27017 --force -2026-01-30T15:27:40.9037100Z atlas deployments setup myLocalRs1 --type local --port 27017 --force -2026-01-30T15:27:40.9069690Z shell: /usr/bin/bash -e {0} -2026-01-30T15:27:40.9069944Z ##[endgroup] -2026-01-30T15:27:40.9429886Z -2026-01-30T15:27:40.9430487Z Warning: Secure storage is not available, falling back to insecure storage -2026-01-30T15:27:40.9431357Z To disable this alert, run "atlas config set silence_storage_warning true" -2026-01-30T15:27:43.2827646Z -2026-01-30T15:27:43.2828080Z [Default Settings] -2026-01-30T15:27:43.2828610Z Deployment Name myLocalRs1 -2026-01-30T15:27:43.2829054Z MongoDB Version 8.0 -2026-01-30T15:27:43.2829273Z -2026-01-30T15:27:43.3804860Z Creating your cluster myLocalRs1 -2026-01-30T15:27:43.3806463Z 1/3: Starting your local environment... -2026-01-30T15:27:43.3942607Z 2/3: Downloading the latest MongoDB image to your local environment... -2026-01-30T15:27:58.3714397Z 3/3: Creating your deployment myLocalRs1... -2026-01-30T15:28:07.7721550Z Deployment created! -2026-01-30T15:28:07.7721838Z -2026-01-30T15:28:07.7721994Z connection skipped -2026-01-30T15:28:07.7722924Z Connection string: "mongodb://localhost:27017/?directConnection=true" -2026-01-30T15:28:07.7816626Z ##[group]Run curl https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2204-x86_64-100.13.0.deb --output mdb-db-tools.deb -2026-01-30T15:28:07.7817661Z curl https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2204-x86_64-100.13.0.deb --output mdb-db-tools.deb -2026-01-30T15:28:07.7818270Z sudo apt install ./mdb-db-tools.deb -2026-01-30T15:28:07.7850788Z shell: /usr/bin/bash -e {0} -2026-01-30T15:28:07.7851036Z ##[endgroup] -2026-01-30T15:28:07.7956736Z % Total % Received % Xferd Average Speed Time Time Time Current -2026-01-30T15:28:07.7958829Z Dload Upload Total Spent Left Speed -2026-01-30T15:28:07.7959409Z -2026-01-30T15:28:07.9015237Z 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 -2026-01-30T15:28:08.0314466Z 37 56.1M 37 20.8M 0 0 196M 0 --:--:-- --:--:-- --:--:-- 196M -2026-01-30T15:28:08.0315277Z 100 56.1M 100 56.1M 0 0 238M 0 --:--:-- --:--:-- --:--:-- 237M -2026-01-30T15:28:08.0440908Z -2026-01-30T15:28:08.0441418Z WARNING: apt does not have a stable CLI interface. Use with caution in scripts. -2026-01-30T15:28:08.0441784Z -2026-01-30T15:28:08.0863637Z Reading package lists... -2026-01-30T15:28:08.3362134Z Building dependency tree... -2026-01-30T15:28:08.3370186Z Reading state information... -2026-01-30T15:28:08.6238860Z The following NEW packages will be installed: -2026-01-30T15:28:08.6240442Z mongodb-database-tools -2026-01-30T15:28:08.6508089Z 0 upgraded, 1 newly installed, 0 to remove and 65 not upgraded. -2026-01-30T15:28:08.9299090Z Need to get 0 B/58.9 MB of archives. -2026-01-30T15:28:08.9299894Z After this operation, 0 B of additional disk space will be used. -2026-01-30T15:28:08.9300819Z Get:1 /home/runner/work/docs-sample-apps/docs-sample-apps/mdb-db-tools.deb mongodb-database-tools amd64 100.13.0 [58.9 MB] -2026-01-30T15:28:09.2262685Z Selecting previously unselected package mongodb-database-tools. -2026-01-30T15:28:09.2316709Z (Reading database ... -2026-01-30T15:28:09.2317157Z (Reading database ... 5% -2026-01-30T15:28:09.2317562Z (Reading database ... 10% -2026-01-30T15:28:09.2322915Z (Reading database ... 15% -2026-01-30T15:28:09.2323334Z (Reading database ... 20% -2026-01-30T15:28:09.2323734Z (Reading database ... 25% -2026-01-30T15:28:09.2324013Z (Reading database ... 30% -2026-01-30T15:28:09.2324265Z (Reading database ... 35% -2026-01-30T15:28:09.2324505Z (Reading database ... 40% -2026-01-30T15:28:09.2324750Z (Reading database ... 45% -2026-01-30T15:28:09.2324985Z (Reading database ... 50% -2026-01-30T15:28:09.2340414Z (Reading database ... 55% -2026-01-30T15:28:09.2460057Z (Reading database ... 60% -2026-01-30T15:28:09.2485715Z (Reading database ... 65% -2026-01-30T15:28:09.2503977Z (Reading database ... 70% -2026-01-30T15:28:09.2529842Z (Reading database ... 75% -2026-01-30T15:28:09.2571291Z (Reading database ... 80% -2026-01-30T15:28:09.2746073Z (Reading database ... 85% -2026-01-30T15:28:09.2799680Z (Reading database ... 90% -2026-01-30T15:28:09.3126218Z (Reading database ... 95% -2026-01-30T15:28:09.3126680Z (Reading database ... 100% -2026-01-30T15:28:09.3127187Z (Reading database ... 217642 files and directories currently installed.) -2026-01-30T15:28:09.3174212Z Preparing to unpack .../mdb-db-tools.deb ... -2026-01-30T15:28:09.3187806Z Unpacking mongodb-database-tools (100.13.0) ... -2026-01-30T15:28:10.3334069Z Setting up mongodb-database-tools (100.13.0) ... -2026-01-30T15:28:10.9204512Z -2026-01-30T15:28:10.9205288Z Running kernel seems to be up-to-date. -2026-01-30T15:28:10.9205691Z -2026-01-30T15:28:10.9205848Z No services need to be restarted. -2026-01-30T15:28:10.9206166Z -2026-01-30T15:28:10.9206322Z No containers need to be restarted. -2026-01-30T15:28:10.9206606Z -2026-01-30T15:28:10.9206790Z No user sessions are running outdated binaries. -2026-01-30T15:28:10.9207118Z -2026-01-30T15:28:10.9207423Z No VM guests are running outdated hypervisor (qemu) binaries on this host. -2026-01-30T15:28:12.1495205Z ##[group]Run curl https://atlas-education.s3.amazonaws.com/sampledata.archive -o sampledata.archive -2026-01-30T15:28:12.1495961Z curl https://atlas-education.s3.amazonaws.com/sampledata.archive -o sampledata.archive -2026-01-30T15:28:12.1527533Z shell: /usr/bin/bash -e {0} -2026-01-30T15:28:12.1527782Z ##[endgroup] -2026-01-30T15:28:12.1628537Z % Total % Received % Xferd Average Speed Time Time Time Current -2026-01-30T15:28:12.1629272Z Dload Upload Total Spent Left Speed -2026-01-30T15:28:12.1629665Z -2026-01-30T15:28:12.9531067Z 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 -2026-01-30T15:28:13.9110912Z 0 353M 0 1715k 0 0 2170k 0 0:02:46 --:--:-- 0:02:46 2168k -2026-01-30T15:28:14.9238775Z 12 353M 12 44.6M 0 0 25.5M 0 0:00:13 0:00:01 0:00:12 25.5M -2026-01-30T15:28:15.9462854Z 26 353M 26 93.3M 0 0 33.7M 0 0:00:10 0:00:02 0:00:08 33.7M -2026-01-30T15:28:16.9007807Z 39 353M 39 140M 0 0 37.2M 0 0:00:09 0:00:03 0:00:06 37.2M -2026-01-30T15:28:17.9010198Z 53 353M 53 187M 0 0 39.5M 0 0:00:08 0:00:04 0:00:04 39.5M -2026-01-30T15:28:18.9011085Z 66 353M 66 234M 0 0 40.7M 0 0:00:08 0:00:05 0:00:03 46.9M -2026-01-30T15:28:19.9010571Z 79 353M 79 282M 0 0 41.9M 0 0:00:08 0:00:06 0:00:02 47.6M -2026-01-30T15:28:20.4463657Z 93 353M 93 329M 0 0 42.6M 0 0:00:08 0:00:07 0:00:01 47.5M -2026-01-30T15:28:20.4464604Z 100 353M 100 353M 0 0 42.6M 0 0:00:08 0:00:08 --:--:-- 47.1M -2026-01-30T15:28:20.4518846Z ##[group]Run mongorestore --archive=sampledata.archive --port=27017 -2026-01-30T15:28:20.4519359Z mongorestore --archive=sampledata.archive --port=27017 -2026-01-30T15:28:20.4550551Z shell: /usr/bin/bash -e {0} -2026-01-30T15:28:20.4550792Z ##[endgroup] -2026-01-30T15:28:20.4745833Z 2026-01-30T15:28:20.474+0000 preparing collections to restore from -2026-01-30T15:28:20.4771992Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.companies from archive 'sampledata.archive' -2026-01-30T15:28:20.4773522Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.embedded_movies from archive 'sampledata.archive' -2026-01-30T15:28:20.4774814Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_weatherdata.data from archive 'sampledata.archive' -2026-01-30T15:28:20.4776081Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.inspections from archive 'sampledata.archive' -2026-01-30T15:28:20.4777447Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.grades from archive 'sampledata.archive' -2026-01-30T15:28:20.4778673Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.routes from archive 'sampledata.archive' -2026-01-30T15:28:20.4779962Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_airbnb.listingsAndReviews from archive 'sampledata.archive' -2026-01-30T15:28:20.4781201Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.theaters from archive 'sampledata.archive' -2026-01-30T15:28:20.4782442Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_guides.planets from archive 'sampledata.archive' -2026-01-30T15:28:20.4783547Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_supplies.sales from archive 'sampledata.archive' -2026-01-30T15:28:20.4784526Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.zips from archive 'sampledata.archive' -2026-01-30T15:28:20.4785558Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.movies from archive 'sampledata.archive' -2026-01-30T15:28:20.4786645Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.users from archive 'sampledata.archive' -2026-01-30T15:28:20.4787859Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_restaurants.neighborhoods from archive 'sampledata.archive' -2026-01-30T15:28:20.4789027Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_analytics.transactions from archive 'sampledata.archive' -2026-01-30T15:28:20.4790133Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_analytics.accounts from archive 'sampledata.archive' -2026-01-30T15:28:20.4791268Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_analytics.customers from archive 'sampledata.archive' -2026-01-30T15:28:20.4792542Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.trips from archive 'sampledata.archive' -2026-01-30T15:28:20.4793431Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.posts from archive 'sampledata.archive' -2026-01-30T15:28:20.4794149Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_geospatial.shipwrecks from archive 'sampledata.archive' -2026-01-30T15:28:20.4794817Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.comments from archive 'sampledata.archive' -2026-01-30T15:28:20.4795477Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.sessions from archive 'sampledata.archive' -2026-01-30T15:28:20.4796149Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_restaurants.restaurants from archive 'sampledata.archive' -2026-01-30T15:28:20.4856545Z 2026-01-30T15:28:20.485+0000 restoring sample_airbnb.listingsAndReviews from archive 'sampledata.archive' -2026-01-30T15:28:21.1878962Z 2026-01-30T15:28:21.187+0000 finished restoring sample_airbnb.listingsAndReviews (5555 documents, 0 failures) -2026-01-30T15:28:21.1956611Z 2026-01-30T15:28:21.195+0000 restoring sample_analytics.transactions from archive 'sampledata.archive' -2026-01-30T15:28:21.3166838Z 2026-01-30T15:28:21.316+0000 finished restoring sample_analytics.transactions (1746 documents, 0 failures) -2026-01-30T15:28:21.3270090Z 2026-01-30T15:28:21.326+0000 restoring sample_analytics.customers from archive 'sampledata.archive' -2026-01-30T15:28:21.3397708Z 2026-01-30T15:28:21.339+0000 finished restoring sample_analytics.customers (500 documents, 0 failures) -2026-01-30T15:28:21.3477493Z 2026-01-30T15:28:21.347+0000 restoring sample_analytics.accounts from archive 'sampledata.archive' -2026-01-30T15:28:21.3672074Z 2026-01-30T15:28:21.367+0000 finished restoring sample_analytics.accounts (1746 documents, 0 failures) -2026-01-30T15:28:21.3756604Z 2026-01-30T15:28:21.375+0000 restoring sample_geospatial.shipwrecks from archive 'sampledata.archive' -2026-01-30T15:28:21.5239796Z 2026-01-30T15:28:21.523+0000 finished restoring sample_geospatial.shipwrecks (11095 documents, 0 failures) -2026-01-30T15:28:21.5316552Z 2026-01-30T15:28:21.531+0000 restoring sample_guides.planets from archive 'sampledata.archive' -2026-01-30T15:28:21.5437970Z 2026-01-30T15:28:21.543+0000 finished restoring sample_guides.planets (8 documents, 0 failures) -2026-01-30T15:28:21.5528588Z 2026-01-30T15:28:21.552+0000 restoring sample_mflix.theaters from archive 'sampledata.archive' -2026-01-30T15:28:21.5771220Z 2026-01-30T15:28:21.576+0000 finished restoring sample_mflix.theaters (1564 documents, 0 failures) -2026-01-30T15:28:21.5856986Z 2026-01-30T15:28:21.585+0000 restoring sample_mflix.comments from archive 'sampledata.archive' -2026-01-30T15:28:22.1558574Z 2026-01-30T15:28:22.155+0000 finished restoring sample_mflix.comments (41079 documents, 0 failures) -2026-01-30T15:28:22.1615890Z 2026-01-30T15:28:22.161+0000 restoring sample_mflix.embedded_movies from archive 'sampledata.archive' -2026-01-30T15:28:22.4586106Z 2026-01-30T15:28:22.458+0000 finished restoring sample_mflix.embedded_movies (3483 documents, 0 failures) -2026-01-30T15:28:22.4647484Z 2026-01-30T15:28:22.464+0000 restoring sample_mflix.movies from archive 'sampledata.archive' -2026-01-30T15:28:23.0024272Z 2026-01-30T15:28:23.002+0000 finished restoring sample_mflix.movies (21349 documents, 0 failures) -2026-01-30T15:28:23.0092392Z 2026-01-30T15:28:23.009+0000 restoring sample_mflix.sessions from archive 'sampledata.archive' -2026-01-30T15:28:23.0211974Z 2026-01-30T15:28:23.020+0000 finished restoring sample_mflix.sessions (1 document, 0 failures) -2026-01-30T15:28:23.0297549Z 2026-01-30T15:28:23.029+0000 restoring sample_mflix.users from archive 'sampledata.archive' -2026-01-30T15:28:23.0402561Z 2026-01-30T15:28:23.039+0000 finished restoring sample_mflix.users (185 documents, 0 failures) -2026-01-30T15:28:23.0488212Z 2026-01-30T15:28:23.048+0000 restoring sample_restaurants.neighborhoods from archive 'sampledata.archive' -2026-01-30T15:28:23.0782579Z 2026-01-30T15:28:23.078+0000 finished restoring sample_restaurants.neighborhoods (195 documents, 0 failures) -2026-01-30T15:28:23.0867526Z 2026-01-30T15:28:23.086+0000 restoring sample_restaurants.restaurants from archive 'sampledata.archive' -2026-01-30T15:28:23.4687012Z 2026-01-30T15:28:23.468+0000 sample_restaurants.restaurants 10.1MB -2026-01-30T15:28:23.4720305Z 2026-01-30T15:28:23.471+0000 sample_restaurants.restaurants 10.1MB -2026-01-30T15:28:23.4721355Z 2026-01-30T15:28:23.471+0000 finished restoring sample_restaurants.restaurants (25359 documents, 0 failures) -2026-01-30T15:28:23.4786234Z 2026-01-30T15:28:23.478+0000 restoring sample_supplies.sales from archive 'sampledata.archive' -2026-01-30T15:28:23.5635449Z 2026-01-30T15:28:23.563+0000 finished restoring sample_supplies.sales (5000 documents, 0 failures) -2026-01-30T15:28:23.5706582Z 2026-01-30T15:28:23.570+0000 restoring sample_training.routes from archive 'sampledata.archive' -2026-01-30T15:28:24.3381979Z 2026-01-30T15:28:24.337+0000 finished restoring sample_training.routes (66985 documents, 0 failures) -2026-01-30T15:28:24.3437376Z 2026-01-30T15:28:24.343+0000 restoring sample_training.trips from archive 'sampledata.archive' -2026-01-30T15:28:24.4834244Z 2026-01-30T15:28:24.483+0000 finished restoring sample_training.trips (10000 documents, 0 failures) -2026-01-30T15:28:24.4896038Z 2026-01-30T15:28:24.489+0000 restoring sample_training.posts from archive 'sampledata.archive' -2026-01-30T15:28:24.5911641Z 2026-01-30T15:28:24.590+0000 finished restoring sample_training.posts (500 documents, 0 failures) -2026-01-30T15:28:24.5966069Z 2026-01-30T15:28:24.596+0000 restoring sample_training.companies from archive 'sampledata.archive' -2026-01-30T15:28:24.9876997Z 2026-01-30T15:28:24.987+0000 finished restoring sample_training.companies (9500 documents, 0 failures) -2026-01-30T15:28:24.9936909Z 2026-01-30T15:28:24.993+0000 restoring sample_training.inspections from archive 'sampledata.archive' -2026-01-30T15:28:26.0450226Z 2026-01-30T15:28:26.044+0000 finished restoring sample_training.inspections (80047 documents, 0 failures) -2026-01-30T15:28:26.0508960Z 2026-01-30T15:28:26.050+0000 restoring sample_training.zips from archive 'sampledata.archive' -2026-01-30T15:28:26.3560828Z 2026-01-30T15:28:26.355+0000 finished restoring sample_training.zips (29470 documents, 0 failures) -2026-01-30T15:28:26.3697689Z 2026-01-30T15:28:26.369+0000 restoring sample_training.grades from archive 'sampledata.archive' -2026-01-30T15:28:26.4682888Z 2026-01-30T15:28:26.468+0000 sample_training.grades 1.96MB -2026-01-30T15:28:27.5184549Z 2026-01-30T15:28:27.518+0000 sample_training.grades 22.2MB -2026-01-30T15:28:27.5185499Z 2026-01-30T15:28:27.518+0000 finished restoring sample_training.grades (100000 documents, 0 failures) -2026-01-30T15:28:27.5264711Z 2026-01-30T15:28:27.526+0000 restoring sample_weatherdata.data from archive 'sampledata.archive' -2026-01-30T15:28:27.7636523Z 2026-01-30T15:28:27.763+0000 finished restoring sample_weatherdata.data (10000 documents, 0 failures) -2026-01-30T15:28:27.7637638Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_guides.planets -2026-01-30T15:28:27.7643175Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_analytics.transactions -2026-01-30T15:28:27.7644122Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_analytics.accounts -2026-01-30T15:28:27.7645116Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_analytics.customers -2026-01-30T15:28:27.7646192Z 2026-01-30T15:28:27.763+0000 restoring indexes for collection sample_geospatial.shipwrecks from metadata -2026-01-30T15:28:27.7648394Z 2026-01-30T15:28:27.763+0000 index: &idx.IndexDocument{Options:primitive.M{"2dsphereIndexVersion":3, "background":true, "name":"coordinates_2dsphere", "v":2}, Key:primitive.D{primitive.E{Key:"coordinates", Value:"2dsphere"}}, PartialFilterExpression:primitive.D(nil)} -2026-01-30T15:28:27.7650439Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_supplies.sales -2026-01-30T15:28:27.7651351Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.trips -2026-01-30T15:28:27.7652431Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.posts -2026-01-30T15:28:27.7653542Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.companies -2026-01-30T15:28:27.7654524Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.inspections -2026-01-30T15:28:27.7655466Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.grades -2026-01-30T15:28:27.7656381Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.routes -2026-01-30T15:28:27.7657259Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.zips -2026-01-30T15:28:27.7658218Z 2026-01-30T15:28:27.763+0000 restoring indexes for collection sample_mflix.theaters from metadata -2026-01-30T15:28:27.7660088Z 2026-01-30T15:28:27.763+0000 index: &idx.IndexDocument{Options:primitive.M{"2dsphereIndexVersion":3, "name":"geo index", "v":2}, Key:primitive.D{primitive.E{Key:"location.geo", Value:"2dsphere"}}, PartialFilterExpression:primitive.D(nil)} -2026-01-30T15:28:27.7662012Z 2026-01-30T15:28:27.763+0000 restoring indexes for collection sample_mflix.movies from metadata -2026-01-30T15:28:27.7665763Z 2026-01-30T15:28:27.763+0000 index: &idx.IndexDocument{Options:primitive.M{"default_language":"english", "language_override":"language", "name":"cast_text_fullplot_text_genres_text_title_text", "textIndexVersion":3, "v":2, "weights":primitive.M{"cast":1, "fullplot":1, "genres":1, "title":1}}, Key:primitive.D{primitive.E{Key:"_fts", Value:"text"}, primitive.E{Key:"_ftsx", Value:1}}, PartialFilterExpression:primitive.D(nil)} -2026-01-30T15:28:27.7675541Z 2026-01-30T15:28:27.764+0000 restoring indexes for collection sample_mflix.users from metadata -2026-01-30T15:28:27.7677455Z 2026-01-30T15:28:27.764+0000 index: &idx.IndexDocument{Options:primitive.M{"name":"email_1", "unique":true, "v":2}, Key:primitive.D{primitive.E{Key:"email", Value:1}}, PartialFilterExpression:primitive.D(nil)} -2026-01-30T15:28:27.8810296Z 2026-01-30T15:28:27.880+0000 no indexes to restore for collection sample_mflix.comments -2026-01-30T15:28:27.8812628Z 2026-01-30T15:28:27.880+0000 restoring indexes for collection sample_mflix.sessions from metadata -2026-01-30T15:28:27.8814439Z 2026-01-30T15:28:27.880+0000 index: &idx.IndexDocument{Options:primitive.M{"name":"user_id_1", "unique":true, "v":2}, Key:primitive.D{primitive.E{Key:"user_id", Value:1}}, PartialFilterExpression:primitive.D(nil)} -2026-01-30T15:28:27.9074686Z 2026-01-30T15:28:27.907+0000 no indexes to restore for collection sample_mflix.embedded_movies -2026-01-30T15:28:27.9075931Z 2026-01-30T15:28:27.907+0000 no indexes to restore for collection sample_weatherdata.data -2026-01-30T15:28:27.9077186Z 2026-01-30T15:28:27.907+0000 restoring indexes for collection sample_airbnb.listingsAndReviews from metadata -2026-01-30T15:28:27.9079471Z 2026-01-30T15:28:27.907+0000 index: &idx.IndexDocument{Options:primitive.M{"2dsphereIndexVersion":3, "background":true, "name":"address.location_2dsphere", "v":2}, Key:primitive.D{primitive.E{Key:"address.location", Value:"2dsphere"}}, PartialFilterExpression:primitive.D(nil)} -2026-01-30T15:28:27.9083262Z 2026-01-30T15:28:27.907+0000 index: &idx.IndexDocument{Options:primitive.M{"background":true, "name":"property_type_1_room_type_1_beds_1", "v":2}, Key:primitive.D{primitive.E{Key:"property_type", Value:1}, primitive.E{Key:"room_type", Value:1}, primitive.E{Key:"beds", Value:1}}, PartialFilterExpression:primitive.D(nil)} -2026-01-30T15:28:27.9086309Z 2026-01-30T15:28:27.907+0000 index: &idx.IndexDocument{Options:primitive.M{"background":true, "name":"name_1", "v":2}, Key:primitive.D{primitive.E{Key:"name", Value:1}}, PartialFilterExpression:primitive.D(nil)} -2026-01-30T15:28:27.9162098Z 2026-01-30T15:28:27.915+0000 no indexes to restore for collection sample_restaurants.neighborhoods -2026-01-30T15:28:27.9163261Z 2026-01-30T15:28:27.916+0000 no indexes to restore for collection sample_restaurants.restaurants -2026-01-30T15:28:30.0014365Z 2026-01-30T15:28:30.001+0000 425367 document(s) restored successfully. 0 document(s) failed to restore. -2026-01-30T15:28:30.0169943Z ##[group]Run actions/setup-node@v4 -2026-01-30T15:28:30.0170235Z with: -2026-01-30T15:28:30.0170420Z node-version: 20 -2026-01-30T15:28:30.0170638Z always-auth: false -2026-01-30T15:28:30.0170833Z check-latest: false -2026-01-30T15:28:30.0171163Z token: *** -2026-01-30T15:28:30.0171343Z ##[endgroup] -2026-01-30T15:28:30.2006783Z Found in cache @ /opt/hostedtoolcache/node/20.20.0/x64 -2026-01-30T15:28:30.2013936Z ##[group]Environment details -2026-01-30T15:28:30.5684087Z node: v20.20.0 -2026-01-30T15:28:30.5684444Z npm: 10.8.2 -2026-01-30T15:28:30.5684730Z yarn: 1.22.22 -2026-01-30T15:28:30.5686085Z ##[endgroup] -2026-01-30T15:28:30.5799341Z ##[group]Run npm install -2026-01-30T15:28:30.5799624Z npm install -2026-01-30T15:28:30.5841696Z shell: /usr/bin/bash -e {0} -2026-01-30T15:28:30.5841953Z ##[endgroup] -2026-01-30T15:28:40.1229025Z npm warn deprecated lodash.get@4.4.2: This package is deprecated. Use the optional chaining (?.) operator instead. -2026-01-30T15:28:40.2170997Z npm warn deprecated lodash.isequal@4.5.0: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. -2026-01-30T15:28:40.8518734Z npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. -2026-01-30T15:28:41.1380118Z npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported -2026-01-30T15:28:41.5227163Z npm warn deprecated glob@7.1.6: Glob versions prior to v9 are no longer supported -2026-01-30T15:28:43.3037437Z -2026-01-30T15:28:43.3038659Z added 456 packages, and audited 457 packages in 13s -2026-01-30T15:28:43.3039418Z -2026-01-30T15:28:43.3040002Z 63 packages are looking for funding -2026-01-30T15:28:43.3046748Z run `npm fund` for details -2026-01-30T15:28:43.3053074Z -2026-01-30T15:28:43.3053358Z found 0 vulnerabilities -2026-01-30T15:28:43.3388365Z ##[group]Run npm run test:unit -- --json --outputFile=test-results-unit.json || true -2026-01-30T15:28:43.3388968Z npm run test:unit -- --json --outputFile=test-results-unit.json || true -2026-01-30T15:28:43.3421476Z shell: /usr/bin/bash -e {0} -2026-01-30T15:28:43.3421711Z env: -2026-01-30T15:28:43.3422026Z MONGODB_URI: mongodb://localhost:27017/sample_mflix?directConnection=true -2026-01-30T15:28:43.3422569Z ##[endgroup] -2026-01-30T15:28:43.4503848Z -2026-01-30T15:28:43.4504526Z > sample-mflix-express-backend@1.0.0 test:unit -2026-01-30T15:28:43.4505467Z > jest tests/controllers --json --outputFile=test-results-unit.json -2026-01-30T15:28:43.4506007Z -2026-01-30T15:28:46.3899426Z PASS tests/controllers/movieController.test.ts -2026-01-30T15:28:46.3904386Z Movie Controller Tests -2026-01-30T15:28:46.3904782Z getAllMovies -2026-01-30T15:28:46.3907676Z ✓ should successfully retrieve movies (3 ms) -2026-01-30T15:28:46.3908480Z ✓ should handle empty results (1 ms) -2026-01-30T15:28:46.3909094Z ✓ should handle database errors (20 ms) -2026-01-30T15:28:46.3909799Z ✓ should handle query parameters for filtering (1 ms) -2026-01-30T15:28:46.3910324Z getMovieById -2026-01-30T15:28:46.3910954Z ✓ should successfully retrieve a movie by valid ID (1 ms) -2026-01-30T15:28:46.3911766Z ✓ should return 400 for invalid ObjectId format (1 ms) -2026-01-30T15:28:46.3912673Z ✓ should return 404 when movie not found (1 ms) -2026-01-30T15:28:46.3913376Z ✓ should handle database errors (1 ms) -2026-01-30T15:28:46.3913842Z createMovie -2026-01-30T15:28:46.3914348Z ✓ should successfully create a movie (1 ms) -2026-01-30T15:28:46.3914973Z ✓ should handle validation errors -2026-01-30T15:28:46.3915689Z ✓ should handle insert acknowledgment failure (14 ms) -2026-01-30T15:28:46.3916211Z createMoviesBatch -2026-01-30T15:28:46.3916800Z ✓ should successfully create multiple movies (1 ms) -2026-01-30T15:28:46.3917606Z ✓ should return 400 for invalid input (not an array) (1 ms) -2026-01-30T15:28:46.3918286Z ✓ should return 400 for empty array -2026-01-30T15:28:46.3918770Z updateMovie -2026-01-30T15:28:46.3919276Z ✓ should successfully update a movie (2 ms) -2026-01-30T15:28:46.3919959Z ✓ should return 400 for invalid ObjectId (1 ms) -2026-01-30T15:28:46.3920602Z ✓ should return 400 for empty update data -2026-01-30T15:28:46.3921220Z ✓ should return 404 when movie not found -2026-01-30T15:28:46.3921664Z deleteMovie -2026-01-30T15:28:46.3922153Z ✓ should successfully delete a movie (1 ms) -2026-01-30T15:28:46.3922943Z ✓ should return 400 for invalid ObjectId -2026-01-30T15:28:46.3923546Z ✓ should return 404 when movie not found -2026-01-30T15:28:46.3924141Z ✓ should handle database errors (1 ms) -2026-01-30T15:28:46.3924589Z updateMoviesBatch -2026-01-30T15:28:46.3925126Z ✓ should successfully update multiple movies -2026-01-30T15:28:46.3925830Z ✓ should return 400 when filter is missing (1 ms) -2026-01-30T15:28:46.3926465Z ✓ should return 400 when update is empty -2026-01-30T15:28:46.3926917Z deleteMoviesBatch -2026-01-30T15:28:46.3927475Z ✓ should successfully delete multiple movies (1 ms) -2026-01-30T15:28:46.3928582Z ✓ should return 400 when filter is missing -2026-01-30T15:28:46.3929244Z ✓ should return 400 when filter is empty (1 ms) -2026-01-30T15:28:46.3929740Z findAndDeleteMovie -2026-01-30T15:28:46.3930319Z ✓ should successfully find and delete a movie -2026-01-30T15:28:46.3931009Z ✓ should return 400 for invalid ObjectId (1 ms) -2026-01-30T15:28:46.3931677Z ✓ should return 404 when movie not found -2026-01-30T15:28:46.3932447Z ✓ should handle database errors (1 ms) -2026-01-30T15:28:46.3932918Z searchMovies -2026-01-30T15:28:46.3933297Z ✓ should successfully search movies by plot (1 ms) -2026-01-30T15:28:46.3933723Z ✓ should handle search with multiple fields -2026-01-30T15:28:46.3934427Z ✓ should return 400 when no search parameters provided -2026-01-30T15:28:46.3934902Z ✓ should return 400 for invalid search operator -2026-01-30T15:28:46.3935290Z ✓ should handle pagination parameters -2026-01-30T15:28:46.3935697Z ✓ should return empty results when no matches found -2026-01-30T15:28:46.3936002Z vectorSearchMovies -2026-01-30T15:28:46.3936343Z ✓ should successfully perform vector search (2 ms) -2026-01-30T15:28:46.3936741Z ✓ should return 400 when query is missing (1 ms) -2026-01-30T15:28:46.3937140Z ✓ should return 400 when query is empty -2026-01-30T15:28:46.3937574Z ✓ should return 400 when VOYAGE_API_KEY is not configured (1 ms) -2026-01-30T15:28:46.3938114Z ✓ should handle Voyage AI authentication errors with 401 status (1 ms) -2026-01-30T15:28:46.3938631Z ✓ should handle other Voyage AI API errors with 503 status -2026-01-30T15:28:46.3939068Z ✓ should use default limit when not provided (1 ms) -2026-01-30T15:28:46.3939434Z getMoviesWithMostRecentComments -2026-01-30T15:28:46.3939831Z ✓ should successfully get movies with comments (1 ms) -2026-01-30T15:28:46.3940259Z ✓ should filter by specific movieId when provided -2026-01-30T15:28:46.3940668Z ✓ should return 400 for invalid movieId format -2026-01-30T15:28:46.3941015Z ✓ should handle empty results -2026-01-30T15:28:46.3941379Z ✓ should use default limit when not provided (1 ms) -2026-01-30T15:28:46.3941689Z getMoviesByYearWithStats -2026-01-30T15:28:46.3942427Z ✓ should successfully get movies statistics by year -2026-01-30T15:28:46.3942960Z ✓ should handle empty results (1 ms) -2026-01-30T15:28:46.3943314Z ✓ should handle database errors (1 ms) -2026-01-30T15:28:46.3943610Z getDirectorsWithMostMovies -2026-01-30T15:28:46.3943952Z ✓ should successfully get directors statistics -2026-01-30T15:28:46.3944316Z ✓ should handle custom limit parameter -2026-01-30T15:28:46.3944676Z ✓ should use default limit when not provided -2026-01-30T15:28:46.3945028Z ✓ should handle empty results -2026-01-30T15:28:46.3945347Z ✓ should handle database errors (4 ms) -2026-01-30T15:28:46.3945524Z -2026-01-30T15:28:46.3953961Z Test Suites: 1 passed, 1 total -2026-01-30T15:28:46.3954990Z Tests: 58 passed, 58 total -2026-01-30T15:28:46.3955473Z Snapshots: 0 total -2026-01-30T15:28:46.3955831Z Time: 2.529 s -2026-01-30T15:28:46.3956328Z Ran all test suites matching /tests\/controllers/i. -2026-01-30T15:28:46.3972469Z Test results written to: test-results-unit.json -2026-01-30T15:28:46.4385359Z ##[group]Run npm run test:integration -- --json --outputFile=test-results-integration.json || true -2026-01-30T15:28:46.4386072Z npm run test:integration -- --json --outputFile=test-results-integration.json || true -2026-01-30T15:28:46.4417524Z shell: /usr/bin/bash -e {0} -2026-01-30T15:28:46.4417763Z env: -2026-01-30T15:28:46.4418086Z MONGODB_URI: mongodb://localhost:27017/sample_mflix?directConnection=true -2026-01-30T15:28:46.4418481Z ENABLE_SEARCH_TESTS: true -2026-01-30T15:28:46.4418700Z ##[endgroup] -2026-01-30T15:28:46.5490415Z -2026-01-30T15:28:46.5491258Z > sample-mflix-express-backend@1.0.0 test:integration -2026-01-30T15:28:46.5492759Z > jest --config jest.integration.config.json --json --outputFile=test-results-integration.json -2026-01-30T15:28:46.5493927Z -2026-01-30T15:28:53.7775652Z PASS tests/integration/mongodbSearch.integration.test.ts (6.259 s) -2026-01-30T15:28:53.8839873Z ● Console -2026-01-30T15:28:53.8845107Z -2026-01-30T15:28:53.8849225Z console.log -2026-01-30T15:28:53.8853292Z [dotenv@17.2.3] injecting env (0) from .env -- tip: ⚙️ specify custom .env file path with { path: '/custom/path/.env' } -2026-01-30T15:28:53.8856254Z -2026-01-30T15:28:53.8858642Z at _log (node_modules/dotenv/lib/main.js:142:11) -2026-01-30T15:28:53.8861157Z -2026-01-30T15:28:53.8863382Z console.log -2026-01-30T15:28:53.8866199Z [dotenv@17.2.3] injecting env (0) from .env -- tip: 📡 add observability to secrets: https://dotenvx.com/ops -2026-01-30T15:28:53.8873985Z -2026-01-30T15:28:53.8874302Z at _log (node_modules/dotenv/lib/main.js:142:11) -2026-01-30T15:28:53.8874688Z -2026-01-30T15:28:53.8874829Z console.error -2026-01-30T15:28:53.8876052Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":"Connected to database: sample_mflix","level":"debug"} -2026-01-30T15:28:53.8877058Z -2026-01-30T15:28:53.8877800Z   42 | database = client.db("sample_mflix"); -2026-01-30T15:28:53.8878594Z  43 | -2026-01-30T15:28:53.8879760Z > 44 | logger.debug(`Connected to database: ${database.databaseName}`); -2026-01-30T15:28:53.8880879Z  | ^ -2026-01-30T15:28:53.8881389Z  45 | -2026-01-30T15:28:53.8881961Z  46 | return database; -2026-01-30T15:28:53.8894519Z  47 | } catch (error) { -2026-01-30T15:28:53.8894906Z -2026-01-30T15:28:53.8895404Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.8896791Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.8898360Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.8899647Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.8900786Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.8902091Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.8903678Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:81:14) -2026-01-30T15:28:53.8904637Z at _connectToDatabase (src/config/database.ts:44:12) -2026-01-30T15:28:53.8905320Z at connectToDatabase (src/config/database.ts:62:10) -2026-01-30T15:28:53.8906037Z at Object. (tests/integration/setup.ts:110:5) -2026-01-30T15:28:53.8906464Z -2026-01-30T15:28:53.8906600Z console.error -2026-01-30T15:28:53.8909016Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"detective mystery"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=detective%20mystery"} -2026-01-30T15:28:53.8910618Z -2026-01-30T15:28:53.8910849Z   32 | -2026-01-30T15:28:53.8911648Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:53.8913644Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:53.8921664Z  | ^ -2026-01-30T15:28:53.8922516Z  35 | headers: { -2026-01-30T15:28:53.8923633Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:53.8925480Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:53.8926190Z -2026-01-30T15:28:53.8926697Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.8928021Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.8929579Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.8931094Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.8932094Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.8936152Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.8937460Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:53.8938574Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:53.8939577Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:53.8940377Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.8941119Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.8941720Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.8942618Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.8943301Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.8943963Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.8944824Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:53.8945754Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.8946518Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.8947118Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.8947738Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.8948394Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.8949029Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.8949768Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:28:53.8950601Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.8951344Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.8951928Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.8952708Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.8953370Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.8953982Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:28:53.8954587Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:28:53.8955239Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:28:53.8955894Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:28:53.8957025Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:28:53.8958065Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:28:53.8959058Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.8960166Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.8960926Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.8961568Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.8962350Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.8963022Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:28:53.8963835Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:28:53.8964854Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:28:53.8965282Z -2026-01-30T15:28:53.8965417Z console.error -2026-01-30T15:28:53.8966687Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=detective%20mystery 200 - 210ms"} -2026-01-30T15:28:53.8967748Z -2026-01-30T15:28:53.8969253Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:53.8970541Z  166 | -2026-01-30T15:28:53.8971854Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:53.8973317Z  | ^ -2026-01-30T15:28:53.8973818Z  168 | } -2026-01-30T15:28:53.8974168Z  169 | -2026-01-30T15:28:53.8974861Z  170 | export default logger; -2026-01-30T15:28:53.8975333Z -2026-01-30T15:28:53.8975825Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.8977166Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.8978740Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.8979991Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.8980978Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.8982539Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.8983792Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:53.8984578Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:53.8985364Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:53.8985889Z -2026-01-30T15:28:53.8986031Z console.error -2026-01-30T15:28:53.8987979Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"xyzabc123nonexistent"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=xyzabc123nonexistent"} -2026-01-30T15:28:53.8989629Z -2026-01-30T15:28:53.8989836Z   32 | -2026-01-30T15:28:53.8990636Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:53.8992063Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:53.8993304Z  | ^ -2026-01-30T15:28:53.8993925Z  35 | headers: { -2026-01-30T15:28:53.8995225Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:53.8996766Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:53.8997495Z -2026-01-30T15:28:53.8997981Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.8999320Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9000893Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9002149Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9003579Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9004893Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9006144Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:53.9007263Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:53.9008253Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:53.9009051Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9009808Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9010408Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9011037Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9011691Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9012575Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9013448Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:53.9014433Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9015188Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9015786Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9016406Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9017050Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9017691Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9018437Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:28:53.9019282Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9020077Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9020683Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9021312Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9021957Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9022720Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:28:53.9023310Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:28:53.9023967Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:28:53.9024622Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:28:53.9025263Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:28:53.9026003Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:28:53.9026792Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9027538Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9028135Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9028774Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9029410Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9030074Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:28:53.9031365Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:28:53.9032376Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:28:53.9032823Z -2026-01-30T15:28:53.9032959Z console.error -2026-01-30T15:28:53.9034421Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=xyzabc123nonexistent 200 - 10ms"} -2026-01-30T15:28:53.9035671Z -2026-01-30T15:28:53.9037626Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:53.9039116Z  166 | -2026-01-30T15:28:53.9040630Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:53.9041834Z  | ^ -2026-01-30T15:28:53.9042612Z  168 | } -2026-01-30T15:28:53.9043022Z  169 | -2026-01-30T15:28:53.9043702Z  170 | export default logger; -2026-01-30T15:28:53.9044187Z -2026-01-30T15:28:53.9044668Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9046017Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9047601Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9048842Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9049841Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9051148Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9052534Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:53.9053331Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:53.9054109Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:53.9054626Z -2026-01-30T15:28:53.9054760Z console.error -2026-01-30T15:28:53.9056599Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"directors":"Spielberg"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?directors=Spielberg"} -2026-01-30T15:28:53.9058143Z -2026-01-30T15:28:53.9058341Z   32 | -2026-01-30T15:28:53.9059149Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:53.9060560Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:53.9061623Z  | ^ -2026-01-30T15:28:53.9062384Z  35 | headers: { -2026-01-30T15:28:53.9063585Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:53.9065098Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:53.9065807Z -2026-01-30T15:28:53.9066296Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9067623Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9069208Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9070460Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9071651Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9073148Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9074393Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:53.9075507Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:53.9076488Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:53.9077286Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9078048Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9078831Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9079639Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9080482Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9081310Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9082542Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:53.9083659Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9084981Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9085762Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9086380Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9087029Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9087662Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9088422Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:28:53.9089263Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9090017Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9090926Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9091566Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9092334Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9093048Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:28:53.9093629Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:28:53.9094288Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:28:53.9094937Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:28:53.9095600Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:28:53.9096491Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:28:53.9097469Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9098237Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9098829Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9099460Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9100107Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9100762Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:28:53.9101572Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:28:53.9102527Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:28:53.9102954Z -2026-01-30T15:28:53.9103089Z console.error -2026-01-30T15:28:53.9104294Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?directors=Spielberg 200 - 15ms"} -2026-01-30T15:28:53.9105323Z -2026-01-30T15:28:53.9106801Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:53.9108095Z  166 | -2026-01-30T15:28:53.9109639Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:53.9110866Z  | ^ -2026-01-30T15:28:53.9111384Z  168 | } -2026-01-30T15:28:53.9111771Z  169 | -2026-01-30T15:28:53.9112604Z  170 | export default logger; -2026-01-30T15:28:53.9113081Z -2026-01-30T15:28:53.9113615Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9114948Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9116726Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9117974Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9118962Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9120260Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9121481Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:53.9122419Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:53.9123214Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:53.9123733Z -2026-01-30T15:28:53.9123871Z console.error -2026-01-30T15:28:53.9125670Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"cast":"Tom Hanks"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?cast=Tom%20Hanks"} -2026-01-30T15:28:53.9127145Z -2026-01-30T15:28:53.9127347Z   32 | -2026-01-30T15:28:53.9128148Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:53.9129573Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:53.9130875Z  | ^ -2026-01-30T15:28:53.9131501Z  35 | headers: { -2026-01-30T15:28:53.9132784Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:53.9134301Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:53.9135032Z -2026-01-30T15:28:53.9135515Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9136854Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9138425Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9139679Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9140675Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9142111Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9143646Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:53.9144917Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:53.9146083Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:53.9146872Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9147629Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9148422Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9149064Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9149719Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9150350Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9151191Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:53.9152120Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9153049Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9153656Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9154465Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9155103Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9155734Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9156487Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:28:53.9157315Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9158058Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9158646Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9159255Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9159898Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9160492Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:28:53.9161074Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:28:53.9161728Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:28:53.9162535Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:28:53.9163182Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:28:53.9163928Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:28:53.9164712Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9165462Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9166052Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9166658Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9167297Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9167966Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:28:53.9168775Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:28:53.9169590Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:28:53.9170016Z -2026-01-30T15:28:53.9170161Z console.error -2026-01-30T15:28:53.9171329Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?cast=Tom%20Hanks 200 - 9ms"} -2026-01-30T15:28:53.9172470Z -2026-01-30T15:28:53.9173929Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:53.9175213Z  166 | -2026-01-30T15:28:53.9176485Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:53.9177692Z  | ^ -2026-01-30T15:28:53.9178212Z  168 | } -2026-01-30T15:28:53.9178596Z  169 | -2026-01-30T15:28:53.9179272Z  170 | export default logger; -2026-01-30T15:28:53.9179745Z -2026-01-30T15:28:53.9180237Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9181567Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9183487Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9184750Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9185736Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9187026Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9188255Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:53.9189039Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:53.9189989Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:53.9190509Z -2026-01-30T15:28:53.9190640Z console.error -2026-01-30T15:28:53.9192758Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"adventure","limit":"5"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=adventure&limit=5"} -2026-01-30T15:28:53.9194351Z -2026-01-30T15:28:53.9194572Z   32 | -2026-01-30T15:28:53.9195360Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:53.9196788Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:53.9197850Z  | ^ -2026-01-30T15:28:53.9198453Z  35 | headers: { -2026-01-30T15:28:53.9199532Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:53.9201025Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:53.9201739Z -2026-01-30T15:28:53.9202375Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9203731Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9205310Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9206560Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9207557Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9208862Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9209960Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:53.9211084Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:53.9212083Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:53.9213088Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9213912Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9214513Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9215134Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9215784Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9216420Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9217252Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:53.9218189Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9218943Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9219528Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9220387Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9221059Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9221697Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9222634Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:28:53.9223479Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9224224Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9224825Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9225440Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9226084Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9226876Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:28:53.9227451Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:28:53.9228101Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:28:53.9228750Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:28:53.9229400Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:28:53.9230322Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:28:53.9231577Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9232599Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9233218Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9233857Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9234510Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9235464Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:28:53.9236290Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:28:53.9237093Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:28:53.9237529Z -2026-01-30T15:28:53.9237660Z console.error -2026-01-30T15:28:53.9238891Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=adventure&limit=5 200 - 8ms"} -2026-01-30T15:28:53.9239934Z -2026-01-30T15:28:53.9241699Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:53.9243180Z  166 | -2026-01-30T15:28:53.9244778Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:53.9246015Z  | ^ -2026-01-30T15:28:53.9246530Z  168 | } -2026-01-30T15:28:53.9246922Z  169 | -2026-01-30T15:28:53.9247597Z  170 | export default logger; -2026-01-30T15:28:53.9248073Z -2026-01-30T15:28:53.9248568Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9249909Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9251478Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9252893Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9254194Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9255653Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9257060Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:53.9257854Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:53.9258855Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:53.9259391Z -2026-01-30T15:28:53.9259525Z console.error -2026-01-30T15:28:53.9261535Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"adventure","limit":"5","skip":"0"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=adventure&limit=5&skip=0"} -2026-01-30T15:28:53.9263365Z -2026-01-30T15:28:53.9263582Z   32 | -2026-01-30T15:28:53.9264380Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:53.9265796Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:53.9267061Z  | ^ -2026-01-30T15:28:53.9267663Z  35 | headers: { -2026-01-30T15:28:53.9268746Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:53.9270240Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:53.9270952Z -2026-01-30T15:28:53.9271463Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9273084Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9274798Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9276410Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9277648Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9279066Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9280490Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:53.9281731Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:53.9283071Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:53.9284067Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9285214Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9285935Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9286748Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9287546Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9288339Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9289355Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:53.9306180Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9307011Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9307627Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9308294Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9308957Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9309598Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9310367Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:28:53.9311223Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9311985Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9312803Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9313442Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9314135Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9315028Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:28:53.9315628Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:28:53.9316294Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:28:53.9316957Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:28:53.9317598Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:28:53.9318329Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:28:53.9319124Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9319873Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9320670Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9321297Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9321940Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9322787Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:28:53.9323595Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:28:53.9324411Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:28:53.9324842Z -2026-01-30T15:28:53.9324982Z console.error -2026-01-30T15:28:53.9326269Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=adventure&limit=5&skip=0 200 - 13ms"} -2026-01-30T15:28:53.9327350Z -2026-01-30T15:28:53.9328872Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:53.9330167Z  166 | -2026-01-30T15:28:53.9331752Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:53.9333176Z  | ^ -2026-01-30T15:28:53.9333695Z  168 | } -2026-01-30T15:28:53.9334087Z  169 | -2026-01-30T15:28:53.9334766Z  170 | export default logger; -2026-01-30T15:28:53.9335246Z -2026-01-30T15:28:53.9335725Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9337058Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9338622Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9339864Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9340855Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9342152Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9343546Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:53.9344344Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:53.9345128Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:53.9345654Z -2026-01-30T15:28:53.9345786Z console.error -2026-01-30T15:28:53.9347809Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"adventure","limit":"5","skip":"5"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=adventure&limit=5&skip=5"} -2026-01-30T15:28:53.9349484Z -2026-01-30T15:28:53.9349690Z   32 | -2026-01-30T15:28:53.9350493Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:53.9352114Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:53.9353477Z  | ^ -2026-01-30T15:28:53.9354095Z  35 | headers: { -2026-01-30T15:28:53.9355166Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:53.9356667Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:53.9357376Z -2026-01-30T15:28:53.9357869Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9359378Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9360940Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9362341Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9363348Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9364650Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9365882Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:53.9366990Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:53.9367982Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:53.9368785Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9369573Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9370170Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9370802Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9371448Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9372086Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9373071Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:53.9373997Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9374750Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9375344Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9375956Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9376602Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9377245Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9377983Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:28:53.9378821Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9379584Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9380174Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9380791Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9381431Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9382024Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:28:53.9382762Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:28:53.9383418Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:28:53.9384064Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:28:53.9384715Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:28:53.9385717Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:28:53.9386501Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9387249Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9388056Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9388701Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9389350Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9390000Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:28:53.9390809Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:28:53.9391612Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:28:53.9392032Z -2026-01-30T15:28:53.9392341Z console.error -2026-01-30T15:28:53.9393616Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=adventure&limit=5&skip=5 200 - 14ms"} -2026-01-30T15:28:53.9394927Z -2026-01-30T15:28:53.9396384Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:53.9397672Z  166 | -2026-01-30T15:28:53.9398943Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:53.9400141Z  | ^ -2026-01-30T15:28:53.9400661Z  168 | } -2026-01-30T15:28:53.9401047Z  169 | -2026-01-30T15:28:53.9401730Z  170 | export default logger; -2026-01-30T15:28:53.9402370Z -2026-01-30T15:28:53.9402863Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9404215Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9405784Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9407038Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9408018Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9409308Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9410532Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:53.9411306Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:53.9412083Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:53.9412737Z -2026-01-30T15:28:53.9412891Z console.error -2026-01-30T15:28:53.9415277Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"detective","directors":"Nolan","searchOperator":"must"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=detective&directors=Nolan&searchOperator=must"} -2026-01-30T15:28:53.9417261Z -2026-01-30T15:28:53.9417463Z   32 | -2026-01-30T15:28:53.9418261Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:53.9419671Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:53.9420713Z  | ^ -2026-01-30T15:28:53.9421332Z  35 | headers: { -2026-01-30T15:28:53.9422551Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:53.9424050Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:53.9424780Z -2026-01-30T15:28:53.9425448Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9427205Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9428784Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9430020Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9431191Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9432702Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9434152Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:53.9435262Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:53.9436258Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:53.9437054Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9437802Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9438399Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9439013Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9439659Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9440285Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9441122Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:53.9442053Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9442977Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9443578Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9444204Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9444852Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9445450Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9446169Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:28:53.9446996Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9447743Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9448335Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9448947Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9449590Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9450189Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:28:53.9462687Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:28:53.9463410Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:28:53.9464091Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:28:53.9464801Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:28:53.9465563Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:28:53.9466360Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9467128Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9467731Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9468353Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9469001Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9469664Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:28:53.9470669Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:28:53.9471699Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:28:53.9472134Z -2026-01-30T15:28:53.9472438Z console.error -2026-01-30T15:28:53.9474122Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=detective&directors=Nolan&searchOperator=must 200 - 9ms"} -2026-01-30T15:28:53.9475369Z -2026-01-30T15:28:53.9477189Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:53.9478495Z  166 | -2026-01-30T15:28:53.9479784Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:53.9481325Z  | ^ -2026-01-30T15:28:53.9482055Z  168 | } -2026-01-30T15:28:53.9482649Z  169 | -2026-01-30T15:28:53.9483338Z  170 | export default logger; -2026-01-30T15:28:53.9483807Z -2026-01-30T15:28:53.9484311Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9485639Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9487546Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9488799Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9489784Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9491064Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9492442Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:53.9493233Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:53.9494021Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:53.9494566Z -2026-01-30T15:28:54.1870447Z PASS tests/integration/movie.integration.test.ts (6.74 s) -2026-01-30T15:28:54.2238630Z ● Console -2026-01-30T15:28:54.2241902Z -2026-01-30T15:28:54.2242060Z console.log -2026-01-30T15:28:54.2243393Z [dotenv@17.2.3] injecting env (0) from .env -- tip: 🗂️ backup and recover secrets: https://dotenvx.com/ops -2026-01-30T15:28:54.2244119Z -2026-01-30T15:28:54.2244399Z at _log (node_modules/dotenv/lib/main.js:142:11) -2026-01-30T15:28:54.2244779Z -2026-01-30T15:28:54.2244912Z console.log -2026-01-30T15:28:54.2245923Z [dotenv@17.2.3] injecting env (0) from .env -- tip: 📡 add observability to secrets: https://dotenvx.com/ops -2026-01-30T15:28:54.2246672Z -2026-01-30T15:28:54.2246945Z at _log (node_modules/dotenv/lib/main.js:142:11) -2026-01-30T15:28:54.2247311Z -2026-01-30T15:28:54.2247455Z console.error -2026-01-30T15:28:54.2248631Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":"Connected to database: sample_mflix","level":"debug"} -2026-01-30T15:28:54.2249640Z -2026-01-30T15:28:54.2250324Z   42 | database = client.db("sample_mflix"); -2026-01-30T15:28:54.2251232Z  43 | -2026-01-30T15:28:54.2252551Z > 44 | logger.debug(`Connected to database: ${database.databaseName}`); -2026-01-30T15:28:54.2253658Z  | ^ -2026-01-30T15:28:54.2254166Z  45 | -2026-01-30T15:28:54.2254733Z  46 | return database; -2026-01-30T15:28:54.2255442Z  47 | } catch (error) { -2026-01-30T15:28:54.2255794Z -2026-01-30T15:28:54.2256281Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2258025Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2259631Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2261295Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2262418Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2263720Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2265096Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:81:14) -2026-01-30T15:28:54.2266046Z at _connectToDatabase (src/config/database.ts:44:12) -2026-01-30T15:28:54.2266968Z at connectToDatabase (src/config/database.ts:62:10) -2026-01-30T15:28:54.2267682Z at Object. (tests/integration/setup.ts:110:5) -2026-01-30T15:28:54.2268099Z -2026-01-30T15:28:54.2268234Z console.error -2026-01-30T15:28:54.2269941Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} -2026-01-30T15:28:54.2271319Z -2026-01-30T15:28:54.2271533Z   32 | -2026-01-30T15:28:54.2272649Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:54.2274075Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:54.2275119Z  | ^ -2026-01-30T15:28:54.2275747Z  35 | headers: { -2026-01-30T15:28:54.2276830Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:54.2278324Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:54.2279027Z -2026-01-30T15:28:54.2279515Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2280825Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2282557Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2283799Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2284792Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2286081Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2287299Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:54.2288406Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:54.2289381Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:54.2290175Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2290930Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2291524Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2292155Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2292950Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2293591Z at read (node_modules/body-parser/lib/read.js:42:5) -2026-01-30T15:28:54.2294440Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:54.2295356Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2296100Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2296885Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2297517Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2298169Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2298777Z at node_modules/body-parser/lib/read.js:171:5 -2026-01-30T15:28:54.2299453Z at invokeCallback (node_modules/raw-body/index.js:238:16) -2026-01-30T15:28:54.2300132Z at done (node_modules/raw-body/index.js:227:7) -2026-01-30T15:28:54.2300857Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) -2026-01-30T15:28:54.2301326Z -2026-01-30T15:28:54.2301461Z console.error -2026-01-30T15:28:54.2302646Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 16ms"} -2026-01-30T15:28:54.2303702Z -2026-01-30T15:28:54.2305170Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:54.2306436Z  166 | -2026-01-30T15:28:54.2307708Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:54.2308897Z  | ^ -2026-01-30T15:28:54.2309406Z  168 | } -2026-01-30T15:28:54.2309807Z  169 | -2026-01-30T15:28:54.2310494Z  170 | export default logger; -2026-01-30T15:28:54.2310967Z -2026-01-30T15:28:54.2311452Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2312970Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2314552Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2315799Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2316781Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2318087Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2319312Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:54.2320098Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:54.2320875Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:54.2321392Z -2026-01-30T15:28:54.2321535Z console.error -2026-01-30T15:28:54.2323329Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} -2026-01-30T15:28:54.2324719Z -2026-01-30T15:28:54.2324915Z   32 | -2026-01-30T15:28:54.2325703Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:54.2327098Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:54.2328150Z  | ^ -2026-01-30T15:28:54.2328763Z  35 | headers: { -2026-01-30T15:28:54.2329831Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:54.2331304Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:54.2332017Z -2026-01-30T15:28:54.2332627Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2334135Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2336197Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2337443Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2338423Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2339707Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2340927Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:54.2342402Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:54.2343383Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:54.2344190Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2344943Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2345535Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2346164Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2346807Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2347436Z at read (node_modules/body-parser/lib/read.js:42:5) -2026-01-30T15:28:54.2348275Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:54.2349199Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2349946Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2350548Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2351159Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2351852Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2352606Z at node_modules/body-parser/lib/read.js:171:5 -2026-01-30T15:28:54.2353299Z at invokeCallback (node_modules/raw-body/index.js:238:16) -2026-01-30T15:28:54.2353975Z at done (node_modules/raw-body/index.js:227:7) -2026-01-30T15:28:54.2354698Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) -2026-01-30T15:28:54.2355183Z -2026-01-30T15:28:54.2355317Z console.error -2026-01-30T15:28:54.2394827Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":"Error occurred: Missing required fields: title","stack":"ValidationError: Missing required fields: title\n at validateRequiredFields (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/src/utils/errorHandler.ts:209:11)\n at createMovie (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/src/controllers/movieController.ts:211:25)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/src/utils/errorHandler.ts:142:7\n at Layer.handleRequest (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/layer.js:152:17)\n at next (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/route.js:157:13)\n at Route.dispatch (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/route.js:117:3)\n at handle (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:435:11)\n at Layer.handleRequest (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/layer.js:152:17)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:295:15\n at processParams (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:582:12)\n at next (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:291:5)\n at Function.handle (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:186:3)\n at router (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:60:12)\n at Layer.handleRequest (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/layer.js:152:17)\n at trimPrefix (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:342:13)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:297:9\n at processParams (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:582:12)\n at next (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:291:5)\n at requestLogger (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/src/middleware/requestLogger.ts:49:3)\n at Layer.handleRequest (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/layer.js:152:17)\n at trimPrefix (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:342:13)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:297:9\n at processParams (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:582:12)\n at next (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:291:5)\n at read (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/body-parser/lib/read.js:42:5)\n at urlencodedParser (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/body-parser/lib/types/urlencoded.js:57:5)\n at Layer.handleRequest (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/layer.js:152:17)\n at trimPrefix (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:342:13)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:297:9\n at processParams (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:582:12)\n at next (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:291:5)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/body-parser/lib/read.js:171:5\n at AsyncResource.runInAsyncScope (node:async_hooks:206:9)\n at invokeCallback (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/raw-body/index.js:238:16)\n at done (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/raw-body/index.js:227:7)\n at IncomingMessage.onEnd (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/raw-body/index.js:287:7)\n at IncomingMessage.emit (node:events:524:28)\n at endReadableNT (node:internal/streams/readable:1698:12)\n at processTicksAndRejections (node:internal/process/task_queues:82:21)","url":"/api/movies","method":"POST","level":"error"} -2026-01-30T15:28:54.2428510Z -2026-01-30T15:28:54.2429145Z   40 | // Log the error for debugging purposes -2026-01-30T15:28:54.2430272Z  41 | // The logger automatically handles environment-specific behavior -2026-01-30T15:28:54.2431545Z > 42 | logger.error("Error occurred:", { -2026-01-30T15:28:54.2432583Z  | ^ -2026-01-30T15:28:54.2433562Z  43 | message: err.message, -2026-01-30T15:28:54.2434436Z  44 | stack: err.stack, -2026-01-30T15:28:54.2435267Z  45 | url: req.url, -2026-01-30T15:28:54.2435678Z -2026-01-30T15:28:54.2436167Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2437484Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2439050Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2440461Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2441441Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2442880Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2444105Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:54.2445206Z at DerivedLogger. [as error] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:54.2446145Z at errorHandler (src/utils/errorHandler.ts:42:10) -2026-01-30T15:28:54.2446884Z at Layer.handleError (node_modules/router/lib/layer.js:116:17) -2026-01-30T15:28:54.2447639Z at trimPrefix (node_modules/router/index.js:340:13) -2026-01-30T15:28:54.2448253Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2448887Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2449542Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2450115Z at node_modules/router/index.js:688:15 -2026-01-30T15:28:54.2450682Z at next (node_modules/router/index.js:276:14) -2026-01-30T15:28:54.2451303Z at next (node_modules/router/lib/route.js:132:14) -2026-01-30T15:28:54.2451733Z -2026-01-30T15:28:54.2451869Z console.error -2026-01-30T15:28:54.2453109Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"warn","message":"POST /api/movies 400 - 29ms"} -2026-01-30T15:28:54.2454081Z -2026-01-30T15:28:54.2455490Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:54.2456763Z  166 | -2026-01-30T15:28:54.2458036Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:54.2459231Z  | ^ -2026-01-30T15:28:54.2459735Z  168 | } -2026-01-30T15:28:54.2460121Z  169 | -2026-01-30T15:28:54.2461126Z  170 | export default logger; -2026-01-30T15:28:54.2461596Z -2026-01-30T15:28:54.2462076Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2463542Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2465104Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2466333Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2467314Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2468606Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2469812Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:54.2470775Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:54.2471565Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:54.2472080Z -2026-01-30T15:28:54.2472357Z console.error -2026-01-30T15:28:54.2474078Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies/batch"} -2026-01-30T15:28:54.2475485Z -2026-01-30T15:28:54.2475694Z   32 | -2026-01-30T15:28:54.2476482Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:54.2478070Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:54.2479120Z  | ^ -2026-01-30T15:28:54.2479727Z  35 | headers: { -2026-01-30T15:28:54.2480804Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:54.2482467Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:54.2483181Z -2026-01-30T15:28:54.2483668Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2484986Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2486538Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2487809Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2488800Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2490095Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2491313Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:54.2492549Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:54.2493539Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:54.2494328Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2495077Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2495669Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2496294Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2496935Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2497573Z at read (node_modules/body-parser/lib/read.js:42:5) -2026-01-30T15:28:54.2498418Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:54.2499338Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2500087Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2500679Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2501289Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2501930Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2502668Z at node_modules/body-parser/lib/read.js:171:5 -2026-01-30T15:28:54.2503345Z at invokeCallback (node_modules/raw-body/index.js:238:16) -2026-01-30T15:28:54.2504018Z at done (node_modules/raw-body/index.js:227:7) -2026-01-30T15:28:54.2504757Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) -2026-01-30T15:28:54.2505228Z -2026-01-30T15:28:54.2505363Z console.error -2026-01-30T15:28:54.2506586Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST /batch 201 - 8ms"} -2026-01-30T15:28:54.2507492Z -2026-01-30T15:28:54.2508901Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:54.2510180Z  166 | -2026-01-30T15:28:54.2511446Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:54.2512782Z  | ^ -2026-01-30T15:28:54.2513298Z  168 | } -2026-01-30T15:28:54.2513882Z  169 | -2026-01-30T15:28:54.2514561Z  170 | export default logger; -2026-01-30T15:28:54.2515027Z -2026-01-30T15:28:54.2515508Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2516840Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2518391Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2519623Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2520598Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2521876Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2523243Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:54.2524035Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:54.2524811Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:54.2525324Z -2026-01-30T15:28:54.2525464Z console.error -2026-01-30T15:28:54.2527145Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies/batch"} -2026-01-30T15:28:54.2528555Z -2026-01-30T15:28:54.2528750Z   32 | -2026-01-30T15:28:54.2529547Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:54.2530948Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:54.2531981Z  | ^ -2026-01-30T15:28:54.2532751Z  35 | headers: { -2026-01-30T15:28:54.2533823Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:54.2535301Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:54.2536018Z -2026-01-30T15:28:54.2536493Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2537816Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2539364Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2540601Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2541582Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2543008Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2544227Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:54.2545554Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:54.2546554Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:54.2547345Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2548090Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2548680Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2549299Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2549942Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2550576Z at read (node_modules/body-parser/lib/read.js:42:5) -2026-01-30T15:28:54.2551582Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:54.2552695Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2553435Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2554036Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2554655Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2555286Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2555894Z at node_modules/body-parser/lib/read.js:171:5 -2026-01-30T15:28:54.2556575Z at invokeCallback (node_modules/raw-body/index.js:238:16) -2026-01-30T15:28:54.2557239Z at done (node_modules/raw-body/index.js:227:7) -2026-01-30T15:28:54.2557967Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) -2026-01-30T15:28:54.2558442Z -2026-01-30T15:28:54.2558580Z console.error -2026-01-30T15:28:54.2559623Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"warn","message":"POST /batch 400 - 1ms"} -2026-01-30T15:28:54.2560823Z -2026-01-30T15:28:54.2562139Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:54.2563612Z  166 | -2026-01-30T15:28:54.2564885Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:54.2566084Z  | ^ -2026-01-30T15:28:54.2566595Z  168 | } -2026-01-30T15:28:54.2566981Z  169 | -2026-01-30T15:28:54.2567660Z  170 | export default logger; -2026-01-30T15:28:54.2568133Z -2026-01-30T15:28:54.2568620Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2569941Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2571510Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2572888Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2573872Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2575158Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2576373Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:54.2577150Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:54.2577913Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:54.2578438Z -2026-01-30T15:28:54.2578571Z console.error -2026-01-30T15:28:54.2580401Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} -2026-01-30T15:28:54.2581783Z -2026-01-30T15:28:54.2581991Z   32 | -2026-01-30T15:28:54.2582927Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:54.2584340Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:54.2585388Z  | ^ -2026-01-30T15:28:54.2586002Z  35 | headers: { -2026-01-30T15:28:54.2587072Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:54.2588740Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:54.2589456Z -2026-01-30T15:28:54.2589941Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2591275Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2592984Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2594221Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2595215Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2596502Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2597717Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:54.2598836Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:54.2599823Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:54.2600613Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2601365Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2601967Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2602754Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2603401Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2604033Z at read (node_modules/body-parser/lib/read.js:42:5) -2026-01-30T15:28:54.2604870Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:54.2605797Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2606550Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2607135Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2607757Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2608392Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2608996Z at node_modules/body-parser/lib/read.js:171:5 -2026-01-30T15:28:54.2609678Z at invokeCallback (node_modules/raw-body/index.js:238:16) -2026-01-30T15:28:54.2610350Z at done (node_modules/raw-body/index.js:227:7) -2026-01-30T15:28:54.2611083Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) -2026-01-30T15:28:54.2611559Z -2026-01-30T15:28:54.2611701Z console.error -2026-01-30T15:28:54.2612846Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 8ms"} -2026-01-30T15:28:54.2613738Z -2026-01-30T15:28:54.2615001Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:54.2616299Z  166 | -2026-01-30T15:28:54.2617762Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:54.2618992Z  | ^ -2026-01-30T15:28:54.2619512Z  168 | } -2026-01-30T15:28:54.2619906Z  169 | -2026-01-30T15:28:54.2620577Z  170 | export default logger; -2026-01-30T15:28:54.2621051Z -2026-01-30T15:28:54.2621529Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2623017Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2624572Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2626003Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2627006Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2628296Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2629516Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:54.2630297Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:54.2631073Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:54.2631591Z -2026-01-30T15:28:54.2631724Z console.error -2026-01-30T15:28:54.2633472Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/697cce35e56c4fd35ac6c981"} -2026-01-30T15:28:54.2634777Z -2026-01-30T15:28:54.2634986Z   32 | -2026-01-30T15:28:54.2635775Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:54.2637183Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:54.2638236Z  | ^ -2026-01-30T15:28:54.2638839Z  35 | headers: { -2026-01-30T15:28:54.2639912Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:54.2641400Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:54.2642107Z -2026-01-30T15:28:54.2642721Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2644053Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2645628Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2646860Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2647843Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2649132Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2650346Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:54.2651442Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:54.2652640Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:54.2653461Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2654208Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2654808Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2655596Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2656263Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2656901Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:54.2657738Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:54.2658664Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2659410Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2660001Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2660743Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2661391Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2662325Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:54.2663084Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:28:54.2663925Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2664665Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2665257Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2665869Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2666507Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2667103Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:28:54.2667676Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:28:54.2668322Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:28:54.2668967Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:28:54.2669605Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:28:54.2670345Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:28:54.2671129Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2671871Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2672597Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2673209Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2673841Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2674500Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:28:54.2675300Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:28:54.2676099Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:28:54.2676517Z -2026-01-30T15:28:54.2676651Z console.error -2026-01-30T15:28:54.2677810Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /697cce35e56c4fd35ac6c981 200 - 5ms"} -2026-01-30T15:28:54.2678798Z -2026-01-30T15:28:54.2680209Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:54.2681486Z  166 | -2026-01-30T15:28:54.2682902Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:54.2684101Z  | ^ -2026-01-30T15:28:54.2684608Z  168 | } -2026-01-30T15:28:54.2685002Z  169 | -2026-01-30T15:28:54.2685671Z  170 | export default logger; -2026-01-30T15:28:54.2686145Z -2026-01-30T15:28:54.2686624Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2687952Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2689675Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2690934Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2691917Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2693358Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2694568Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:54.2695352Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:54.2696123Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:54.2696822Z -2026-01-30T15:28:54.2696957Z console.error -2026-01-30T15:28:54.2698509Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/697cce35e56c4fd35ac6c982"} -2026-01-30T15:28:54.2699810Z -2026-01-30T15:28:54.2700022Z   32 | -2026-01-30T15:28:54.2700815Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:54.2702392Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:54.2703213Z  | ^ -2026-01-30T15:28:54.2703580Z  35 | headers: { -2026-01-30T15:28:54.2704188Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:54.2704996Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:54.2705397Z -2026-01-30T15:28:54.2705669Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2706390Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2707229Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2707898Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2708432Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2709131Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2709790Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:54.2710398Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:54.2710949Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:54.2711394Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2711813Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2712150Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2712722Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2713080Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2713440Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:54.2713901Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:54.2714403Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2714818Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2715155Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2715492Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2715847Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2716336Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:54.2716752Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:28:54.2717205Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2717608Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2717934Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2718280Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2718627Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2718960Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:28:54.2719281Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:28:54.2719749Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:28:54.2720110Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:28:54.2720463Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:28:54.2720866Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:28:54.2721292Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2721704Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2722035Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2722589Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2722947Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2723308Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:28:54.2723752Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:28:54.2724205Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:28:54.2724433Z -2026-01-30T15:28:54.2724514Z console.error -2026-01-30T15:28:54.2725167Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"warn","message":"GET /697cce35e56c4fd35ac6c982 404 - 3ms"} -2026-01-30T15:28:54.2725763Z -2026-01-30T15:28:54.2726527Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:54.2727216Z  166 | -2026-01-30T15:28:54.2727907Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:54.2728556Z  | ^ -2026-01-30T15:28:54.2728840Z  168 | } -2026-01-30T15:28:54.2729062Z  169 | -2026-01-30T15:28:54.2729444Z  170 | export default logger; -2026-01-30T15:28:54.2729700Z -2026-01-30T15:28:54.2729967Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2730699Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2731548Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2732328Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2732866Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2733559Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2734216Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:54.2734645Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:54.2735070Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:54.2735348Z -2026-01-30T15:28:54.2735434Z console.error -2026-01-30T15:28:54.2736371Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/invalid-id"} -2026-01-30T15:28:54.2737051Z -2026-01-30T15:28:54.2737168Z   32 | -2026-01-30T15:28:54.2737616Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:54.2738382Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:54.2738961Z  | ^ -2026-01-30T15:28:54.2739304Z  35 | headers: { -2026-01-30T15:28:54.2740010Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:54.2740828Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:54.2741222Z -2026-01-30T15:28:54.2741489Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2742363Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2743237Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2743907Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2744441Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2745129Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2745797Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:54.2746406Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:54.2746950Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:54.2747424Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2747854Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2748185Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2748538Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2748897Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2749247Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:54.2749713Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:54.2750228Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2750642Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2750977Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2751328Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2751680Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2752067Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:54.2752595Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:28:54.2753056Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2753463Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2753799Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2754167Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2754537Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2754868Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:28:54.2755193Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:28:54.2755687Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:28:54.2756053Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:28:54.2756414Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:28:54.2756827Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:28:54.2757252Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2757665Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2757992Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2758324Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2758680Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2759173Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:28:54.2759623Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:28:54.2760075Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:28:54.2760304Z -2026-01-30T15:34:58.4859828Z FAIL tests/integration/advancedEndpoints.integration.test.ts (370.976 s) -2026-01-30T15:34:58.5544994Z ● Console -2026-01-30T15:34:58.5545532Z -2026-01-30T15:34:58.5565709Z console.log -2026-01-30T15:34:58.5566897Z [dotenv@17.2.3] injecting env (0) from .env -- tip: ⚙️ write to custom object with { processEnv: myObject } -2026-01-30T15:34:58.5567622Z -2026-01-30T15:34:58.5567901Z at _log (node_modules/dotenv/lib/main.js:142:11) -2026-01-30T15:34:58.5568282Z -2026-01-30T15:34:58.5568422Z console.log -2026-01-30T15:34:58.5569466Z [dotenv@17.2.3] injecting env (0) from .env -- tip: 🔑 add access controls to secrets: https://dotenvx.com/ops -2026-01-30T15:34:58.5570238Z -2026-01-30T15:34:58.5570511Z at _log (node_modules/dotenv/lib/main.js:142:11) -2026-01-30T15:34:58.5570887Z -2026-01-30T15:34:58.5571022Z console.log -2026-01-30T15:34:58.5571319Z -2026-01-30T15:34:58.5572095Z ⚠️ Vector Search tests skipped: VOYAGE_API_KEY environment variable is not set -2026-01-30T15:34:58.5573293Z To run Vector Search integration tests, set VOYAGE_API_KEY in your .env file -2026-01-30T15:34:58.5574243Z Example: VOYAGE_API_KEY=your-api-key npm run test:integration -2026-01-30T15:34:58.5574721Z -2026-01-30T15:34:58.5575259Z at Object..exports.describeVectorSearch (tests/integration/setup.ts:97:21) -2026-01-30T15:34:58.5575902Z -2026-01-30T15:34:58.5576044Z console.error -2026-01-30T15:34:58.5577213Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":"Connected to database: sample_mflix","level":"debug"} -2026-01-30T15:34:58.5578223Z -2026-01-30T15:34:58.5578920Z   42 | database = client.db("sample_mflix"); -2026-01-30T15:34:58.5579735Z  43 | -2026-01-30T15:34:58.5580869Z > 44 | logger.debug(`Connected to database: ${database.databaseName}`); -2026-01-30T15:34:58.5581993Z  | ^ -2026-01-30T15:34:58.5582648Z  45 | -2026-01-30T15:34:58.5583214Z  46 | return database; -2026-01-30T15:34:58.5583919Z  47 | } catch (error) { -2026-01-30T15:34:58.5584270Z -2026-01-30T15:34:58.5584760Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5586142Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5587732Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5589007Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5590001Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5591721Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5593301Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:81:14) -2026-01-30T15:34:58.5594278Z at _connectToDatabase (src/config/database.ts:44:12) -2026-01-30T15:34:58.5594964Z at connectToDatabase (src/config/database.ts:62:10) -2026-01-30T15:34:58.5595677Z at Object. (tests/integration/setup.ts:110:5) -2026-01-30T15:34:58.5596102Z -2026-01-30T15:34:58.5596250Z console.error -2026-01-30T15:34:58.5597932Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} -2026-01-30T15:34:58.5599581Z -2026-01-30T15:34:58.5599791Z   32 | -2026-01-30T15:34:58.5600605Z  33 | // Log request details at debug level when request starts -2026-01-30T15:34:58.5602032Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:34:58.5604503Z  | ^ -2026-01-30T15:34:58.5605140Z  35 | headers: { -2026-01-30T15:34:58.5606242Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:34:58.5607866Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:34:58.5608600Z -2026-01-30T15:34:58.5609088Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5610446Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5612029Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5613433Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5614438Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5615749Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5616993Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:34:58.5618121Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:34:58.5619111Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:34:58.5619926Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5621061Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5621649Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5622440Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5623117Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5623761Z at read (node_modules/body-parser/lib/read.js:42:5) -2026-01-30T15:34:58.5624622Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:34:58.5625562Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5626323Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5626928Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5627553Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5628209Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5628821Z at node_modules/body-parser/lib/read.js:171:5 -2026-01-30T15:34:58.5629513Z at invokeCallback (node_modules/raw-body/index.js:238:16) -2026-01-30T15:34:58.5630384Z at done (node_modules/raw-body/index.js:227:7) -2026-01-30T15:34:58.5631144Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) -2026-01-30T15:34:58.5631631Z -2026-01-30T15:34:58.5631779Z console.error -2026-01-30T15:34:58.5632945Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 23ms"} -2026-01-30T15:34:58.5633855Z -2026-01-30T15:34:58.5635296Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:34:58.5636593Z  166 | -2026-01-30T15:34:58.5638058Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:34:58.5639266Z  | ^ -2026-01-30T15:34:58.5639782Z  168 | } -2026-01-30T15:34:58.5640173Z  169 | -2026-01-30T15:34:58.5640863Z  170 | export default logger; -2026-01-30T15:34:58.5641338Z -2026-01-30T15:34:58.5641834Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5643425Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5645014Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5646239Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5647253Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5648566Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5649813Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:34:58.5650602Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:34:58.5651387Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:34:58.5651908Z -2026-01-30T15:34:58.5652047Z console.error -2026-01-30T15:34:58.5654143Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"limit":"10"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/aggregations/reportingByComments?limit=10"} -2026-01-30T15:34:58.5655704Z -2026-01-30T15:34:58.5655916Z   32 | -2026-01-30T15:34:58.5656725Z  33 | // Log request details at debug level when request starts -2026-01-30T15:34:58.5658151Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:34:58.5659217Z  | ^ -2026-01-30T15:34:58.5659827Z  35 | headers: { -2026-01-30T15:34:58.5660908Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:34:58.5662550Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:34:58.5663280Z -2026-01-30T15:34:58.5663763Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5665106Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5666695Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5667957Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5669146Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5670472Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5671747Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:34:58.5673037Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:34:58.5674033Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:34:58.5674825Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5675585Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5676367Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5676987Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5677642Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5678288Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:34:58.5679130Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:34:58.5680064Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5680808Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5681405Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5682024Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5682912Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5683543Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:34:58.5684300Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:34:58.5685140Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5685936Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5686541Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5687162Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5687819Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5688425Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:34:58.5689004Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:34:58.5689659Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:34:58.5690310Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:34:58.5690955Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:34:58.5691693Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:34:58.5692625Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5693385Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5693984Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5694601Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5695246Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5695906Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:34:58.5696715Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:34:58.5697532Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:34:58.5697952Z -2026-01-30T15:34:58.5698091Z console.error -2026-01-30T15:34:58.5699730Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} -2026-01-30T15:34:58.5701139Z -2026-01-30T15:34:58.5701345Z   32 | -2026-01-30T15:34:58.5702142Z  33 | // Log request details at debug level when request starts -2026-01-30T15:34:58.5703877Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:34:58.5704951Z  | ^ -2026-01-30T15:34:58.5705562Z  35 | headers: { -2026-01-30T15:34:58.5706662Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:34:58.5708163Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:34:58.5708894Z -2026-01-30T15:34:58.5709377Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5710724Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5712704Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5713978Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5714985Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5716290Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5717522Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:34:58.5718643Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:34:58.5719644Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:34:58.5720439Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5721430Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5722036Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5722789Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5723457Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5724092Z at read (node_modules/body-parser/lib/read.js:42:5) -2026-01-30T15:34:58.5724939Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:34:58.5725876Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5726628Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5727226Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5727852Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5728493Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5729098Z at node_modules/body-parser/lib/read.js:171:5 -2026-01-30T15:34:58.5729796Z at invokeCallback (node_modules/raw-body/index.js:238:16) -2026-01-30T15:34:58.5730466Z at done (node_modules/raw-body/index.js:227:7) -2026-01-30T15:34:58.5731209Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) -2026-01-30T15:34:58.5731693Z -2026-01-30T15:34:58.5731833Z console.error -2026-01-30T15:34:58.5732991Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 7ms"} -2026-01-30T15:34:58.5733888Z -2026-01-30T15:34:58.5735329Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:34:58.5736627Z  166 | -2026-01-30T15:34:58.5737908Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:34:58.5739126Z  | ^ -2026-01-30T15:34:58.5739642Z  168 | } -2026-01-30T15:34:58.5740024Z  169 | -2026-01-30T15:34:58.5740875Z  170 | export default logger; -2026-01-30T15:34:58.5741360Z -2026-01-30T15:34:58.5741850Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5743427Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5745011Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5746276Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5747276Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5748759Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5749996Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:34:58.5750800Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:34:58.5751577Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:34:58.5752102Z -2026-01-30T15:34:58.5752374Z console.error -2026-01-30T15:34:58.5754203Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"limit":"3"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/aggregations/reportingByComments?limit=3"} -2026-01-30T15:34:58.5755741Z -2026-01-30T15:34:58.5755947Z   32 | -2026-01-30T15:34:58.5756739Z  33 | // Log request details at debug level when request starts -2026-01-30T15:34:58.5758168Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:34:58.5759231Z  | ^ -2026-01-30T15:34:58.5759834Z  35 | headers: { -2026-01-30T15:34:58.5760920Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:34:58.5762572Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:34:58.5763308Z -2026-01-30T15:34:58.5763791Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5765144Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5766736Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5767987Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5768985Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5770297Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5771535Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:34:58.5772888Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:34:58.5773894Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:34:58.5774688Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5775448Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5776053Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5776682Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5777348Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5777990Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:34:58.5778998Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:34:58.5779946Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5780706Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5781294Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5781919Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5782711Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5783334Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:34:58.5784084Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:34:58.5784926Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5785841Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5786480Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5787093Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5787747Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5788351Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:34:58.5788927Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:34:58.5789587Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:34:58.5790239Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:34:58.5790885Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:34:58.5791627Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:34:58.5792565Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5793314Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5793918Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5794535Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5795175Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5795840Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:34:58.5796657Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:34:58.5797467Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:34:58.5797895Z -2026-01-30T15:34:58.5798028Z console.error -2026-01-30T15:34:58.5799671Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} -2026-01-30T15:34:58.5801059Z -2026-01-30T15:34:58.5801269Z   32 | -2026-01-30T15:34:58.5802066Z  33 | // Log request details at debug level when request starts -2026-01-30T15:34:58.5803640Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:34:58.5804693Z  | ^ -2026-01-30T15:34:58.5805306Z  35 | headers: { -2026-01-30T15:34:58.5806398Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:34:58.5807894Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:34:58.5808622Z -2026-01-30T15:34:58.5809108Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5810455Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5812051Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5813546Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5814719Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5816049Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5817285Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:34:58.5818401Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:34:58.5819395Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:34:58.5820185Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5821178Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5821999Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5822786Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5823446Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5824093Z at read (node_modules/body-parser/lib/read.js:42:5) -2026-01-30T15:34:58.5824935Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:34:58.5825871Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5826639Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5827231Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5827863Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5828511Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5829109Z at node_modules/body-parser/lib/read.js:171:5 -2026-01-30T15:34:58.5829817Z at invokeCallback (node_modules/raw-body/index.js:238:16) -2026-01-30T15:34:58.5830507Z at done (node_modules/raw-body/index.js:227:7) -2026-01-30T15:34:58.5831234Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) -2026-01-30T15:34:58.5831723Z -2026-01-30T15:34:58.5831855Z console.error -2026-01-30T15:34:58.5833141Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 6ms"} -2026-01-30T15:34:58.5834040Z -2026-01-30T15:34:58.5835491Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:34:58.5836797Z  166 | -2026-01-30T15:34:58.5838083Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:34:58.5839280Z  | ^ -2026-01-30T15:34:58.5839809Z  168 | } -2026-01-30T15:34:58.5840202Z  169 | -2026-01-30T15:34:58.5840875Z  170 | export default logger; -2026-01-30T15:34:58.5841356Z -2026-01-30T15:34:58.5841860Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5843381Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5844992Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5846266Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5847283Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5848609Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5849855Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:34:58.5850650Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:34:58.5851440Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:34:58.5852422Z -2026-01-30T15:34:58.5852578Z console.error -2026-01-30T15:34:58.5856301Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"limit":"100"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/aggregations/reportingByComments?limit=100"} -2026-01-30T15:34:58.5857885Z -2026-01-30T15:34:58.5858119Z   32 | -2026-01-30T15:34:58.5858933Z  33 | // Log request details at debug level when request starts -2026-01-30T15:34:58.5860362Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:34:58.5861644Z  | ^ -2026-01-30T15:34:58.5882627Z  35 | headers: { -2026-01-30T15:34:58.5883913Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:34:58.5885440Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:34:58.5886211Z -2026-01-30T15:34:58.5886712Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5888054Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5889624Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5890878Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5891890Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5893370Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5894612Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:34:58.5895729Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:34:58.5896713Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:34:58.5897516Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5898261Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5898860Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5899486Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5900129Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5900768Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:34:58.5901609Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:34:58.5902677Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5903436Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5904031Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5904642Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5905285Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5905912Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:34:58.5906647Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:34:58.5907481Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5908225Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5908818Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5909433Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5910083Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5910907Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:34:58.5911512Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:34:58.5912315Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:34:58.5912985Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:34:58.5913640Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:34:58.5914365Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:34:58.5915144Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5915890Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5916474Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5917307Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5917949Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5918599Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:34:58.5919401Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:34:58.5920214Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:34:58.5920893Z -2026-01-30T15:34:58.5921032Z console.error -2026-01-30T15:34:58.5922524Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /aggregations/reportingByComments?limit=10 200 - 288070ms"} -2026-01-30T15:34:58.5923674Z -2026-01-30T15:34:58.5925102Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:34:58.5926388Z  166 | -2026-01-30T15:34:58.5927658Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:34:58.5928853Z  | ^ -2026-01-30T15:34:58.5929372Z  168 | } -2026-01-30T15:34:58.5929753Z  169 | -2026-01-30T15:34:58.5930429Z  170 | export default logger; -2026-01-30T15:34:58.5930897Z -2026-01-30T15:34:58.5931375Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5933023Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5934607Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5935858Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5936857Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5938150Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5939372Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:34:58.5940144Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:34:58.5940919Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:34:58.5941435Z -2026-01-30T15:34:58.5941574Z console.error -2026-01-30T15:34:58.5943346Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} -2026-01-30T15:34:58.5944723Z -2026-01-30T15:34:58.5944928Z   32 | -2026-01-30T15:34:58.5945740Z  33 | // Log request details at debug level when request starts -2026-01-30T15:34:58.5947150Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:34:58.5948372Z  | ^ -2026-01-30T15:34:58.5949000Z  35 | headers: { -2026-01-30T15:34:58.5950077Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:34:58.5951537Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:34:58.5952392Z -2026-01-30T15:34:58.5952873Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5954191Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5955905Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5957151Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5958139Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5959416Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5960628Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:34:58.5961725Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:34:58.5962833Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:34:58.5963623Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5964369Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5964971Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5965599Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5966245Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5966874Z at read (node_modules/body-parser/lib/read.js:42:5) -2026-01-30T15:34:58.5967713Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:34:58.5968633Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5969369Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5969990Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5970620Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5971265Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5971869Z at node_modules/body-parser/lib/read.js:171:5 -2026-01-30T15:34:58.5972693Z at invokeCallback (node_modules/raw-body/index.js:238:16) -2026-01-30T15:34:58.5973375Z at done (node_modules/raw-body/index.js:227:7) -2026-01-30T15:34:58.5974111Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) -2026-01-30T15:34:58.5974593Z -2026-01-30T15:34:58.5974731Z console.error -2026-01-30T15:34:58.5975761Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 6ms"} -2026-01-30T15:34:58.5976654Z -2026-01-30T15:34:58.5978067Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:34:58.5979354Z  166 | -2026-01-30T15:34:58.5980634Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:34:58.5981843Z  | ^ -2026-01-30T15:34:58.5982498Z  168 | } -2026-01-30T15:34:58.5982886Z  169 | -2026-01-30T15:34:58.5983602Z  170 | export default logger; -2026-01-30T15:34:58.5984072Z -2026-01-30T15:34:58.5984730Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5986121Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5987731Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5988993Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5989978Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5991276Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5992891Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:34:58.5993673Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:34:58.5994457Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:34:58.5994979Z -2026-01-30T15:34:58.5995111Z console.error -2026-01-30T15:34:58.5996745Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} -2026-01-30T15:34:58.5998132Z -2026-01-30T15:34:58.5998333Z   32 | -2026-01-30T15:34:58.5999130Z  33 | // Log request details at debug level when request starts -2026-01-30T15:34:58.6000544Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:34:58.6001595Z  | ^ -2026-01-30T15:34:58.6002339Z  35 | headers: { -2026-01-30T15:34:58.6003437Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:34:58.6004919Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:34:58.6005636Z -2026-01-30T15:34:58.6006115Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.6007457Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.6009019Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.6010252Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.6011250Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.6012678Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.6013913Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:34:58.6015022Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:34:58.6016010Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:34:58.6016799Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.6017549Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.6018145Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.6018760Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.6019411Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.6020051Z at read (node_modules/body-parser/lib/read.js:42:5) -2026-01-30T15:34:58.6021104Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:34:58.6022392Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.6023183Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.6023781Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.6024407Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.6025047Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.6025652Z at node_modules/body-parser/lib/read.js:171:5 -2026-01-30T15:34:58.6026334Z at invokeCallback (node_modules/raw-body/index.js:238:16) -2026-01-30T15:34:58.6027002Z at done (node_modules/raw-body/index.js:227:7) -2026-01-30T15:34:58.6027734Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) -2026-01-30T15:34:58.6028367Z -2026-01-30T15:34:58.6028508Z console.error -2026-01-30T15:34:58.6029531Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 9ms"} -2026-01-30T15:34:58.6030412Z -2026-01-30T15:34:58.6031847Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:34:58.6033270Z  166 | -2026-01-30T15:34:58.6034545Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:34:58.6035734Z  | ^ -2026-01-30T15:34:58.6036242Z  168 | } -2026-01-30T15:34:58.6036624Z  169 | -2026-01-30T15:34:58.6037292Z  170 | export default logger; -2026-01-30T15:34:58.6037774Z -2026-01-30T15:34:58.6038255Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.6039590Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.6041152Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.6042525Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.6043514Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.6044806Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.6046026Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:34:58.6046807Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:34:58.6047582Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:34:58.6048102Z -2026-01-30T15:34:58.6048234Z console.error -2026-01-30T15:34:58.6050024Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"limit":"50"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/aggregations/reportingByYear?limit=50"} -2026-01-30T15:34:58.6051527Z -2026-01-30T15:34:58.6051726Z   32 | -2026-01-30T15:34:58.6052653Z  33 | // Log request details at debug level when request starts -2026-01-30T15:34:58.6054069Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:34:58.6055118Z  | ^ -2026-01-30T15:34:58.6055718Z  35 | headers: { -2026-01-30T15:34:58.6056791Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:34:58.6058277Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:34:58.6059004Z -2026-01-30T15:34:58.6059646Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.6060992Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.6062699Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.6063950Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.6064932Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.6066229Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.6067622Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:34:58.6068727Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:34:58.6069724Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:34:58.6070520Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.6071266Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.6071863Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.6072742Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.6073394Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.6074026Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:34:58.6074856Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:34:58.6075786Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.6076526Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.6077110Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.6077734Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.6078378Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.6079000Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:34:58.6079749Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:34:58.6080579Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.6081313Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.6081902Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.6082653Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.6083287Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.6083890Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:34:58.6084471Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:34:58.6085113Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:34:58.6085763Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:34:58.6086460Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:34:58.6087212Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:34:58.6087993Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.6088731Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.6089342Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.6089954Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.6090586Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.6091243Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:34:58.6092076Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:34:58.6093019Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:34:58.6093445Z -2026-01-30T15:34:58.6093581Z console.error -2026-01-30T15:34:58.6095035Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /aggregations/reportingByYear?limit=50 200 - 111ms"} -2026-01-30T15:34:58.6096147Z -2026-01-30T15:34:58.6097578Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:34:58.6098900Z  166 | -2026-01-30T15:34:58.6100193Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:34:58.6101689Z  | ^ -2026-01-30T15:34:58.6102456Z  168 | } -2026-01-30T15:34:58.6102892Z  169 | -2026-01-30T15:34:58.6103577Z  170 | export default logger; -2026-01-30T15:34:58.6104061Z -2026-01-30T15:34:58.6104539Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.6105870Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.6107444Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.6108679Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.6109667Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.6110968Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.6112326Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:34:58.6113124Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:34:58.6113907Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:34:58.6114425Z -2026-01-30T15:34:58.6115640Z ● Advanced Endpoints Integration Tests › GET /api/movies/aggregations/reportingByComments › should return movies with their most recent comments -2026-01-30T15:34:58.6116683Z -2026-01-30T15:34:58.6116961Z thrown: "Exceeded timeout of 120000 ms for a test. -2026-01-30T15:34:58.6118264Z Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." -2026-01-30T15:34:58.6119222Z -2026-01-30T15:34:58.6119430Z   66 | -2026-01-30T15:34:58.6120767Z  67 | describe("GET /api/movies/aggregations/reportingByComments", () => { -2026-01-30T15:34:58.6123159Z > 68 | test("should return movies with their most recent comments", async () => { -2026-01-30T15:34:58.6124382Z  | ^ -2026-01-30T15:34:58.6125078Z  69 | // Create test movie via API -2026-01-30T15:34:58.6125861Z  70 | const testMovie = { -2026-01-30T15:34:58.6126846Z  71 | title: "Test Aggregation Movie 1", -2026-01-30T15:34:58.6127389Z -2026-01-30T15:34:58.6127787Z at tests/integration/advancedEndpoints.integration.test.ts:68:5 -2026-01-30T15:34:58.6128679Z at tests/integration/advancedEndpoints.integration.test.ts:67:3 -2026-01-30T15:34:58.6129722Z at Object. (tests/integration/advancedEndpoints.integration.test.ts:25:20) -2026-01-30T15:34:58.6130377Z -2026-01-30T15:34:58.6131447Z ● Advanced Endpoints Integration Tests › GET /api/movies/aggregations/reportingByComments › should limit recent comments per movie -2026-01-30T15:34:58.6132539Z -2026-01-30T15:34:58.6132806Z thrown: "Exceeded timeout of 120000 ms for a test. -2026-01-30T15:34:58.6134280Z Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." -2026-01-30T15:34:58.6135247Z -2026-01-30T15:34:58.6135533Z   139 | }); -2026-01-30T15:34:58.6136010Z  140 | -2026-01-30T15:34:58.6137186Z > 141 | test("should limit recent comments per movie", async () => { -2026-01-30T15:34:58.6138291Z  | ^ -2026-01-30T15:34:58.6138953Z  142 | // Create test movie -2026-01-30T15:34:58.6139719Z  143 | const testMovie = { -2026-01-30T15:34:58.6140989Z  144 | title: "Test Aggregation Movie Limit", -2026-01-30T15:34:58.6141564Z -2026-01-30T15:34:58.6141970Z at tests/integration/advancedEndpoints.integration.test.ts:141:5 -2026-01-30T15:34:58.6143068Z at tests/integration/advancedEndpoints.integration.test.ts:67:3 -2026-01-30T15:34:58.6144109Z at Object. (tests/integration/advancedEndpoints.integration.test.ts:25:20) -2026-01-30T15:34:58.6144755Z -2026-01-30T15:34:58.6145807Z ● Advanced Endpoints Integration Tests › GET /api/movies/aggregations/reportingByComments › should handle movies with no comments -2026-01-30T15:34:58.6146756Z -2026-01-30T15:34:58.6147019Z thrown: "Exceeded timeout of 120000 ms for a test. -2026-01-30T15:34:58.6148304Z Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." -2026-01-30T15:34:58.6149259Z -2026-01-30T15:34:58.6149535Z   187 | }); -2026-01-30T15:34:58.6150004Z  188 | -2026-01-30T15:34:58.6151164Z > 189 | test("should handle movies with no comments", async () => { -2026-01-30T15:34:58.6153030Z  | ^ -2026-01-30T15:34:58.6153803Z  190 | // Create a movie without comments -2026-01-30T15:34:58.6154646Z  191 | const testMovie = { -2026-01-30T15:34:58.6155724Z  192 | title: "Test Aggregation Movie No Comments", -2026-01-30T15:34:58.6156349Z -2026-01-30T15:34:58.6156755Z at tests/integration/advancedEndpoints.integration.test.ts:189:5 -2026-01-30T15:34:58.6157654Z at tests/integration/advancedEndpoints.integration.test.ts:67:3 -2026-01-30T15:34:58.6158699Z at Object. (tests/integration/advancedEndpoints.integration.test.ts:25:20) -2026-01-30T15:34:58.6159353Z -2026-01-30T15:34:58.6586651Z Test Suites: 1 failed, 2 passed, 3 total -2026-01-30T15:34:58.6589624Z Tests: 3 failed, 4 skipped, 38 passed, 45 total -2026-01-30T15:34:58.6592445Z Snapshots: 0 total -2026-01-30T15:34:58.6594995Z Time: 371.746 s -2026-01-30T15:34:58.6597496Z Ran all test suites. -2026-01-30T15:34:58.6605521Z Test results written to: test-results-integration.json -2026-01-30T15:34:58.6906238Z ##[group]Run actions/upload-artifact@v4 -2026-01-30T15:34:58.6906689Z with: -2026-01-30T15:34:58.6906978Z name: test-results -2026-01-30T15:34:58.6908004Z path: mflix/server/js-express/coverage/ -mflix/server/js-express/test-results-unit.json -mflix/server/js-express/test-results-integration.json - -2026-01-30T15:34:58.6909141Z retention-days: 30 -2026-01-30T15:34:58.6909483Z if-no-files-found: warn -2026-01-30T15:34:58.6909850Z compression-level: 6 -2026-01-30T15:34:58.6910199Z overwrite: false -2026-01-30T15:34:58.6910546Z include-hidden-files: false -2026-01-30T15:34:58.6910929Z ##[endgroup] -2026-01-30T15:34:58.9130422Z Multiple search paths detected. Calculating the least common ancestor of all paths -2026-01-30T15:34:58.9136383Z The least common ancestor is /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express. This will be the root directory of the artifact -2026-01-30T15:34:58.9138183Z With the provided path, there will be 2 files uploaded -2026-01-30T15:34:58.9143759Z Artifact name is valid! -2026-01-30T15:34:58.9144873Z Root directory input is valid! -2026-01-30T15:34:59.2145814Z Beginning upload of artifact content to blob storage -2026-01-30T15:34:59.5225592Z Uploaded bytes 4995 -2026-01-30T15:34:59.6058936Z Finished uploading artifact content to blob storage! -2026-01-30T15:34:59.6061852Z SHA256 digest of uploaded artifact zip is 132af0a45ae192a2d928fa422d5dbc5071b42eb5af768a6d8822dcc36a18d581 -2026-01-30T15:34:59.6063866Z Finalizing artifact upload -2026-01-30T15:34:59.7514008Z Artifact test-results.zip successfully finalized. Artifact ID 5320296235 -2026-01-30T15:34:59.7515600Z Artifact test-results has been successfully uploaded! Final size is 4995 bytes. Artifact ID is 5320296235 -2026-01-30T15:34:59.7521660Z Artifact download URL: https://github.com/mongodb/docs-sample-apps/actions/runs/21521030923/artifacts/5320296235 -2026-01-30T15:34:59.7626389Z ##[group]Run chmod +x .github/scripts/generate-test-summary-jest.sh -2026-01-30T15:34:59.7627093Z chmod +x .github/scripts/generate-test-summary-jest.sh -2026-01-30T15:34:59.7627591Z .github/scripts/generate-test-summary-jest.sh \ -2026-01-30T15:34:59.7628129Z  mflix/server/js-express/test-results-unit.json \ -2026-01-30T15:34:59.7628596Z  mflix/server/js-express/test-results-integration.json -2026-01-30T15:34:59.7661908Z shell: /usr/bin/bash -e {0} -2026-01-30T15:34:59.7662468Z ##[endgroup] -2026-01-30T15:34:59.8107679Z ##[error]Process completed with exit code 1. -2026-01-30T15:34:59.8218985Z Post job cleanup. -2026-01-30T15:34:59.9199939Z [command]/usr/bin/git version -2026-01-30T15:34:59.9243522Z git version 2.52.0 -2026-01-30T15:34:59.9290095Z Temporarily overriding HOME='/home/runner/work/_temp/afc3ecc7-3169-4246-8b27-083c313fdabd' before making global git config changes -2026-01-30T15:34:59.9291649Z Adding repository directory to the temporary git global config as a safe directory -2026-01-30T15:34:59.9296689Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/docs-sample-apps/docs-sample-apps -2026-01-30T15:34:59.9341782Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand -2026-01-30T15:34:59.9376942Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :" -2026-01-30T15:34:59.9614114Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader -2026-01-30T15:34:59.9637751Z http.https://github.com/.extraheader -2026-01-30T15:34:59.9647915Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader -2026-01-30T15:34:59.9680848Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :" -2026-01-30T15:34:59.9911103Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir: -2026-01-30T15:34:59.9945502Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url -2026-01-30T15:35:00.0307615Z Cleaning up orphan processes diff --git a/Run Express Tests/10_Run unit tests.txt b/Run Express Tests/10_Run unit tests.txt deleted file mode 100644 index c26a39e..0000000 --- a/Run Express Tests/10_Run unit tests.txt +++ /dev/null @@ -1,91 +0,0 @@ -2026-01-30T15:28:43.3388355Z ##[group]Run npm run test:unit -- --json --outputFile=test-results-unit.json || true -2026-01-30T15:28:43.3388958Z npm run test:unit -- --json --outputFile=test-results-unit.json || true -2026-01-30T15:28:43.3421470Z shell: /usr/bin/bash -e {0} -2026-01-30T15:28:43.3421709Z env: -2026-01-30T15:28:43.3422023Z MONGODB_URI: mongodb://localhost:27017/sample_mflix?directConnection=true -2026-01-30T15:28:43.3422566Z ##[endgroup] -2026-01-30T15:28:43.4503823Z -2026-01-30T15:28:43.4504518Z > sample-mflix-express-backend@1.0.0 test:unit -2026-01-30T15:28:43.4505456Z > jest tests/controllers --json --outputFile=test-results-unit.json -2026-01-30T15:28:43.4506000Z -2026-01-30T15:28:46.3899393Z PASS tests/controllers/movieController.test.ts -2026-01-30T15:28:46.3904375Z Movie Controller Tests -2026-01-30T15:28:46.3904778Z getAllMovies -2026-01-30T15:28:46.3907666Z ✓ should successfully retrieve movies (3 ms) -2026-01-30T15:28:46.3908387Z ✓ should handle empty results (1 ms) -2026-01-30T15:28:46.3909090Z ✓ should handle database errors (20 ms) -2026-01-30T15:28:46.3909795Z ✓ should handle query parameters for filtering (1 ms) -2026-01-30T15:28:46.3910313Z getMovieById -2026-01-30T15:28:46.3910949Z ✓ should successfully retrieve a movie by valid ID (1 ms) -2026-01-30T15:28:46.3911762Z ✓ should return 400 for invalid ObjectId format (1 ms) -2026-01-30T15:28:46.3912668Z ✓ should return 404 when movie not found (1 ms) -2026-01-30T15:28:46.3913371Z ✓ should handle database errors (1 ms) -2026-01-30T15:28:46.3913838Z createMovie -2026-01-30T15:28:46.3914344Z ✓ should successfully create a movie (1 ms) -2026-01-30T15:28:46.3914969Z ✓ should handle validation errors -2026-01-30T15:28:46.3915684Z ✓ should handle insert acknowledgment failure (14 ms) -2026-01-30T15:28:46.3916207Z createMoviesBatch -2026-01-30T15:28:46.3916796Z ✓ should successfully create multiple movies (1 ms) -2026-01-30T15:28:46.3917585Z ✓ should return 400 for invalid input (not an array) (1 ms) -2026-01-30T15:28:46.3918281Z ✓ should return 400 for empty array -2026-01-30T15:28:46.3918766Z updateMovie -2026-01-30T15:28:46.3919271Z ✓ should successfully update a movie (2 ms) -2026-01-30T15:28:46.3919954Z ✓ should return 400 for invalid ObjectId (1 ms) -2026-01-30T15:28:46.3920598Z ✓ should return 400 for empty update data -2026-01-30T15:28:46.3921208Z ✓ should return 404 when movie not found -2026-01-30T15:28:46.3921660Z deleteMovie -2026-01-30T15:28:46.3922148Z ✓ should successfully delete a movie (1 ms) -2026-01-30T15:28:46.3922938Z ✓ should return 400 for invalid ObjectId -2026-01-30T15:28:46.3923542Z ✓ should return 404 when movie not found -2026-01-30T15:28:46.3924137Z ✓ should handle database errors (1 ms) -2026-01-30T15:28:46.3924585Z updateMoviesBatch -2026-01-30T15:28:46.3925121Z ✓ should successfully update multiple movies -2026-01-30T15:28:46.3925810Z ✓ should return 400 when filter is missing (1 ms) -2026-01-30T15:28:46.3926460Z ✓ should return 400 when update is empty -2026-01-30T15:28:46.3926914Z deleteMoviesBatch -2026-01-30T15:28:46.3927472Z ✓ should successfully delete multiple movies (1 ms) -2026-01-30T15:28:46.3928576Z ✓ should return 400 when filter is missing -2026-01-30T15:28:46.3929238Z ✓ should return 400 when filter is empty (1 ms) -2026-01-30T15:28:46.3929736Z findAndDeleteMovie -2026-01-30T15:28:46.3930314Z ✓ should successfully find and delete a movie -2026-01-30T15:28:46.3931004Z ✓ should return 400 for invalid ObjectId (1 ms) -2026-01-30T15:28:46.3931673Z ✓ should return 404 when movie not found -2026-01-30T15:28:46.3932442Z ✓ should handle database errors (1 ms) -2026-01-30T15:28:46.3932913Z searchMovies -2026-01-30T15:28:46.3933294Z ✓ should successfully search movies by plot (1 ms) -2026-01-30T15:28:46.3933721Z ✓ should handle search with multiple fields -2026-01-30T15:28:46.3934165Z ✓ should return 400 when no search parameters provided -2026-01-30T15:28:46.3934899Z ✓ should return 400 for invalid search operator -2026-01-30T15:28:46.3935287Z ✓ should handle pagination parameters -2026-01-30T15:28:46.3935694Z ✓ should return empty results when no matches found -2026-01-30T15:28:46.3936000Z vectorSearchMovies -2026-01-30T15:28:46.3936340Z ✓ should successfully perform vector search (2 ms) -2026-01-30T15:28:46.3936739Z ✓ should return 400 when query is missing (1 ms) -2026-01-30T15:28:46.3937137Z ✓ should return 400 when query is empty -2026-01-30T15:28:46.3937571Z ✓ should return 400 when VOYAGE_API_KEY is not configured (1 ms) -2026-01-30T15:28:46.3938111Z ✓ should handle Voyage AI authentication errors with 401 status (1 ms) -2026-01-30T15:28:46.3938628Z ✓ should handle other Voyage AI API errors with 503 status -2026-01-30T15:28:46.3939065Z ✓ should use default limit when not provided (1 ms) -2026-01-30T15:28:46.3939420Z getMoviesWithMostRecentComments -2026-01-30T15:28:46.3939829Z ✓ should successfully get movies with comments (1 ms) -2026-01-30T15:28:46.3940257Z ✓ should filter by specific movieId when provided -2026-01-30T15:28:46.3940665Z ✓ should return 400 for invalid movieId format -2026-01-30T15:28:46.3941013Z ✓ should handle empty results -2026-01-30T15:28:46.3941377Z ✓ should use default limit when not provided (1 ms) -2026-01-30T15:28:46.3941687Z getMoviesByYearWithStats -2026-01-30T15:28:46.3942419Z ✓ should successfully get movies statistics by year -2026-01-30T15:28:46.3942957Z ✓ should handle empty results (1 ms) -2026-01-30T15:28:46.3943311Z ✓ should handle database errors (1 ms) -2026-01-30T15:28:46.3943608Z getDirectorsWithMostMovies -2026-01-30T15:28:46.3943949Z ✓ should successfully get directors statistics -2026-01-30T15:28:46.3944314Z ✓ should handle custom limit parameter -2026-01-30T15:28:46.3944674Z ✓ should use default limit when not provided -2026-01-30T15:28:46.3945011Z ✓ should handle empty results -2026-01-30T15:28:46.3945345Z ✓ should handle database errors (4 ms) -2026-01-30T15:28:46.3945521Z -2026-01-30T15:28:46.3953954Z Test Suites: 1 passed, 1 total -2026-01-30T15:28:46.3954983Z Tests: 58 passed, 58 total -2026-01-30T15:28:46.3955468Z Snapshots: 0 total -2026-01-30T15:28:46.3955828Z Time: 2.529 s -2026-01-30T15:28:46.3956324Z Ran all test suites matching /tests\/controllers/i. -2026-01-30T15:28:46.3972456Z Test results written to: test-results-unit.json diff --git a/Run Express Tests/11_Run integration tests.txt b/Run Express Tests/11_Run integration tests.txt deleted file mode 100644 index 5fd2a52..0000000 --- a/Run Express Tests/11_Run integration tests.txt +++ /dev/null @@ -1,1852 +0,0 @@ -2026-01-30T15:28:46.4385347Z ##[group]Run npm run test:integration -- --json --outputFile=test-results-integration.json || true -2026-01-30T15:28:46.4386064Z npm run test:integration -- --json --outputFile=test-results-integration.json || true -2026-01-30T15:28:46.4417518Z shell: /usr/bin/bash -e {0} -2026-01-30T15:28:46.4417761Z env: -2026-01-30T15:28:46.4418076Z MONGODB_URI: mongodb://localhost:27017/sample_mflix?directConnection=true -2026-01-30T15:28:46.4418479Z ENABLE_SEARCH_TESTS: true -2026-01-30T15:28:46.4418697Z ##[endgroup] -2026-01-30T15:28:46.5490373Z -2026-01-30T15:28:46.5491246Z > sample-mflix-express-backend@1.0.0 test:integration -2026-01-30T15:28:46.5492737Z > jest --config jest.integration.config.json --json --outputFile=test-results-integration.json -2026-01-30T15:28:46.5493916Z -2026-01-30T15:28:53.7775617Z PASS tests/integration/mongodbSearch.integration.test.ts (6.259 s) -2026-01-30T15:28:53.8839831Z ● Console -2026-01-30T15:28:53.8845101Z -2026-01-30T15:28:53.8849146Z console.log -2026-01-30T15:28:53.8853284Z [dotenv@17.2.3] injecting env (0) from .env -- tip: ⚙️ specify custom .env file path with { path: '/custom/path/.env' } -2026-01-30T15:28:53.8856249Z -2026-01-30T15:28:53.8858637Z at _log (node_modules/dotenv/lib/main.js:142:11) -2026-01-30T15:28:53.8861153Z -2026-01-30T15:28:53.8863375Z console.log -2026-01-30T15:28:53.8866192Z [dotenv@17.2.3] injecting env (0) from .env -- tip: 📡 add observability to secrets: https://dotenvx.com/ops -2026-01-30T15:28:53.8873978Z -2026-01-30T15:28:53.8874297Z at _log (node_modules/dotenv/lib/main.js:142:11) -2026-01-30T15:28:53.8874685Z -2026-01-30T15:28:53.8874825Z console.error -2026-01-30T15:28:53.8876047Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":"Connected to database: sample_mflix","level":"debug"} -2026-01-30T15:28:53.8877054Z -2026-01-30T15:28:53.8877782Z   42 | database = client.db("sample_mflix"); -2026-01-30T15:28:53.8878590Z  43 | -2026-01-30T15:28:53.8879756Z > 44 | logger.debug(`Connected to database: ${database.databaseName}`); -2026-01-30T15:28:53.8880874Z  | ^ -2026-01-30T15:28:53.8881386Z  45 | -2026-01-30T15:28:53.8881957Z  46 | return database; -2026-01-30T15:28:53.8894506Z  47 | } catch (error) { -2026-01-30T15:28:53.8894901Z -2026-01-30T15:28:53.8895401Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.8896786Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.8898357Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.8899621Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.8900782Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.8902086Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.8903672Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:81:14) -2026-01-30T15:28:53.8904633Z at _connectToDatabase (src/config/database.ts:44:12) -2026-01-30T15:28:53.8905317Z at connectToDatabase (src/config/database.ts:62:10) -2026-01-30T15:28:53.8906034Z at Object. (tests/integration/setup.ts:110:5) -2026-01-30T15:28:53.8906460Z -2026-01-30T15:28:53.8906597Z console.error -2026-01-30T15:28:53.8908507Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"detective mystery"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=detective%20mystery"} -2026-01-30T15:28:53.8910614Z -2026-01-30T15:28:53.8910845Z   32 | -2026-01-30T15:28:53.8911644Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:53.8913638Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:53.8921651Z  | ^ -2026-01-30T15:28:53.8922512Z  35 | headers: { -2026-01-30T15:28:53.8923628Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:53.8925475Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:53.8926187Z -2026-01-30T15:28:53.8926685Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.8928017Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.8929575Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.8931088Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.8932090Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.8936138Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.8937455Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:53.8938570Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:53.8939566Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:53.8940373Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.8941115Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.8941716Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.8942613Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.8943297Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.8943959Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.8944820Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:53.8945750Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.8946515Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.8947114Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.8947735Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.8948385Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.8949026Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.8949764Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:28:53.8950597Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.8951334Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.8951924Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.8952703Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.8953367Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.8953979Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:28:53.8954583Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:28:53.8955236Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:28:53.8955891Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:28:53.8956543Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:28:53.8958059Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:28:53.8959054Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.8960161Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.8960921Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.8961564Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.8962347Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.8963019Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:28:53.8963831Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:28:53.8964850Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:28:53.8965278Z -2026-01-30T15:28:53.8965413Z console.error -2026-01-30T15:28:53.8966676Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=detective%20mystery 200 - 210ms"} -2026-01-30T15:28:53.8967745Z -2026-01-30T15:28:53.8969248Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:53.8970537Z  166 | -2026-01-30T15:28:53.8971849Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:53.8973313Z  | ^ -2026-01-30T15:28:53.8973813Z  168 | } -2026-01-30T15:28:53.8974163Z  169 | -2026-01-30T15:28:53.8974856Z  170 | export default logger; -2026-01-30T15:28:53.8975329Z -2026-01-30T15:28:53.8975816Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.8977162Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.8978736Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.8979988Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.8980975Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.8982421Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.8983779Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:53.8984575Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:53.8985361Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:53.8985880Z -2026-01-30T15:28:53.8986028Z console.error -2026-01-30T15:28:53.8987974Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"xyzabc123nonexistent"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=xyzabc123nonexistent"} -2026-01-30T15:28:53.8989626Z -2026-01-30T15:28:53.8989833Z   32 | -2026-01-30T15:28:53.8990633Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:53.8992059Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:53.8993299Z  | ^ -2026-01-30T15:28:53.8993922Z  35 | headers: { -2026-01-30T15:28:53.8995004Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:53.8996759Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:53.8997492Z -2026-01-30T15:28:53.8997977Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.8999317Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9000889Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9002146Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9003574Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9004890Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9006133Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:53.9007259Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:53.9008249Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:53.9009048Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9009805Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9010404Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9011034Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9011688Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9012569Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9013445Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:53.9014429Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9015177Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9015783Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9016403Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9017046Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9017689Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9018434Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:28:53.9019279Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9020074Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9020679Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9021309Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9021955Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9022716Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:28:53.9023300Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:28:53.9023965Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:28:53.9024620Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:28:53.9025260Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:28:53.9026000Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:28:53.9026789Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9027535Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9028132Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9028771Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9029407Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9030071Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:28:53.9031155Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:28:53.9032370Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:28:53.9032819Z -2026-01-30T15:28:53.9032955Z console.error -2026-01-30T15:28:53.9034415Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=xyzabc123nonexistent 200 - 10ms"} -2026-01-30T15:28:53.9035666Z -2026-01-30T15:28:53.9037611Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:53.9039111Z  166 | -2026-01-30T15:28:53.9040625Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:53.9041831Z  | ^ -2026-01-30T15:28:53.9042598Z  168 | } -2026-01-30T15:28:53.9043019Z  169 | -2026-01-30T15:28:53.9043699Z  170 | export default logger; -2026-01-30T15:28:53.9044184Z -2026-01-30T15:28:53.9044664Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9046014Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9047597Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9048839Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9049837Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9051145Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9052518Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:53.9053327Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:53.9054105Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:53.9054623Z -2026-01-30T15:28:53.9054758Z console.error -2026-01-30T15:28:53.9056594Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"directors":"Spielberg"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?directors=Spielberg"} -2026-01-30T15:28:53.9058140Z -2026-01-30T15:28:53.9058337Z   32 | -2026-01-30T15:28:53.9059145Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:53.9060556Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:53.9061612Z  | ^ -2026-01-30T15:28:53.9062377Z  35 | headers: { -2026-01-30T15:28:53.9063580Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:53.9065094Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:53.9065804Z -2026-01-30T15:28:53.9066293Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9067620Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9069204Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9070457Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9071442Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9073144Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9074389Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:53.9075503Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:53.9076484Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:53.9077283Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9078038Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9078827Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9079635Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9080478Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9081299Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9082537Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:53.9083654Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9084976Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9085758Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9086376Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9087025Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9087658Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9088418Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:28:53.9089260Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9090013Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9090913Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9091562Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9092330Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9093044Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:28:53.9093625Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:28:53.9094285Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:28:53.9094934Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:28:53.9095597Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:28:53.9096487Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:28:53.9097464Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9098233Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9098826Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9099450Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9100104Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9100759Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:28:53.9101569Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:28:53.9102523Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:28:53.9102950Z -2026-01-30T15:28:53.9103086Z console.error -2026-01-30T15:28:53.9104290Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?directors=Spielberg 200 - 15ms"} -2026-01-30T15:28:53.9105320Z -2026-01-30T15:28:53.9106796Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:53.9108092Z  166 | -2026-01-30T15:28:53.9109370Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:53.9110862Z  | ^ -2026-01-30T15:28:53.9111381Z  168 | } -2026-01-30T15:28:53.9111768Z  169 | -2026-01-30T15:28:53.9112599Z  170 | export default logger; -2026-01-30T15:28:53.9113078Z -2026-01-30T15:28:53.9113603Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9114944Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9116722Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9117971Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9118951Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9120256Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9121477Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:53.9122411Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:53.9123210Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:53.9123731Z -2026-01-30T15:28:53.9123868Z console.error -2026-01-30T15:28:53.9125665Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"cast":"Tom Hanks"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?cast=Tom%20Hanks"} -2026-01-30T15:28:53.9127142Z -2026-01-30T15:28:53.9127344Z   32 | -2026-01-30T15:28:53.9128139Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:53.9129569Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:53.9130870Z  | ^ -2026-01-30T15:28:53.9131498Z  35 | headers: { -2026-01-30T15:28:53.9132777Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:53.9134297Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:53.9135028Z -2026-01-30T15:28:53.9135512Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9136851Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9138415Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9139676Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9140671Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9142106Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9143642Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:53.9144912Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:53.9146072Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:53.9146869Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9147625Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9148221Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9149060Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9149715Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9150346Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9151187Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:53.9152116Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9153044Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9153652Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9154461Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9155100Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9155731Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9156477Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:28:53.9157311Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9158054Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9158643Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9159252Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9159894Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9160489Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:28:53.9161071Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:28:53.9161725Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:28:53.9162530Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:28:53.9163179Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:28:53.9163925Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:28:53.9164703Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9165458Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9166049Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9166655Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9167294Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9167963Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:28:53.9168771Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:28:53.9169587Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:28:53.9170013Z -2026-01-30T15:28:53.9170158Z console.error -2026-01-30T15:28:53.9171324Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?cast=Tom%20Hanks 200 - 9ms"} -2026-01-30T15:28:53.9172465Z -2026-01-30T15:28:53.9173918Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:53.9175209Z  166 | -2026-01-30T15:28:53.9176481Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:53.9177688Z  | ^ -2026-01-30T15:28:53.9178208Z  168 | } -2026-01-30T15:28:53.9178593Z  169 | -2026-01-30T15:28:53.9179268Z  170 | export default logger; -2026-01-30T15:28:53.9179743Z -2026-01-30T15:28:53.9180233Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9181563Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9183278Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9184746Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9185733Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9187023Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9188252Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:53.9189035Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:53.9189985Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:53.9190506Z -2026-01-30T15:28:53.9190637Z console.error -2026-01-30T15:28:53.9192744Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"adventure","limit":"5"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=adventure&limit=5"} -2026-01-30T15:28:53.9194347Z -2026-01-30T15:28:53.9194562Z   32 | -2026-01-30T15:28:53.9195356Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:53.9196784Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:53.9197840Z  | ^ -2026-01-30T15:28:53.9198449Z  35 | headers: { -2026-01-30T15:28:53.9199528Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:53.9201021Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:53.9201736Z -2026-01-30T15:28:53.9202365Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9203726Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9205307Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9206557Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9207553Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9208859Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9209952Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:53.9211079Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:53.9212073Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:53.9213083Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9213907Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9214509Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9215130Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9215781Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9216416Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9217248Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:53.9218186Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9218939Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9219525Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9220141Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9221056Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9221694Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9222630Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:28:53.9223476Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9224221Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9224821Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9225436Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9226080Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9226873Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:28:53.9227448Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:28:53.9228098Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:28:53.9228741Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:28:53.9229397Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:28:53.9230319Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:28:53.9231570Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9232595Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9233214Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9233853Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9234507Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9235460Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:28:53.9236286Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:28:53.9237090Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:28:53.9237526Z -2026-01-30T15:28:53.9237657Z console.error -2026-01-30T15:28:53.9238882Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=adventure&limit=5 200 - 8ms"} -2026-01-30T15:28:53.9239931Z -2026-01-30T15:28:53.9241693Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:53.9243174Z  166 | -2026-01-30T15:28:53.9244773Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:53.9246011Z  | ^ -2026-01-30T15:28:53.9246526Z  168 | } -2026-01-30T15:28:53.9246919Z  169 | -2026-01-30T15:28:53.9247594Z  170 | export default logger; -2026-01-30T15:28:53.9248070Z -2026-01-30T15:28:53.9248555Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9249905Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9251475Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9252888Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9254189Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9255642Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9257055Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:53.9257851Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:53.9258626Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:53.9259387Z -2026-01-30T15:28:53.9259522Z console.error -2026-01-30T15:28:53.9261530Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"adventure","limit":"5","skip":"0"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=adventure&limit=5&skip=0"} -2026-01-30T15:28:53.9263359Z -2026-01-30T15:28:53.9263579Z   32 | -2026-01-30T15:28:53.9264376Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:53.9265792Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:53.9267057Z  | ^ -2026-01-30T15:28:53.9267659Z  35 | headers: { -2026-01-30T15:28:53.9268734Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:53.9270236Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:53.9270949Z -2026-01-30T15:28:53.9271459Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9273078Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9274793Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9276405Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9277644Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9279056Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9280486Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:53.9281728Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:53.9283066Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:53.9284063Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9285209Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9285931Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9286745Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9287542Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9288335Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9289350Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:53.9306152Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9307006Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9307624Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9308291Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9308953Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9309594Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9310364Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:28:53.9311220Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9311981Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9312798Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9313438Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9314131Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9314746Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:28:53.9315624Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:28:53.9316290Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:28:53.9316953Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:28:53.9317595Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:28:53.9318326Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:28:53.9319121Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9319870Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9320665Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9321294Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9321937Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9322774Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:28:53.9323591Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:28:53.9324407Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:28:53.9324838Z -2026-01-30T15:28:53.9324979Z console.error -2026-01-30T15:28:53.9326264Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=adventure&limit=5&skip=0 200 - 13ms"} -2026-01-30T15:28:53.9327347Z -2026-01-30T15:28:53.9328868Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:53.9330164Z  166 | -2026-01-30T15:28:53.9331747Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:53.9333162Z  | ^ -2026-01-30T15:28:53.9333691Z  168 | } -2026-01-30T15:28:53.9334084Z  169 | -2026-01-30T15:28:53.9334762Z  170 | export default logger; -2026-01-30T15:28:53.9335242Z -2026-01-30T15:28:53.9335722Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9337054Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9338619Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9339860Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9340852Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9342142Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9343541Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:53.9344340Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:53.9345125Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:53.9345650Z -2026-01-30T15:28:53.9345783Z console.error -2026-01-30T15:28:53.9347804Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"adventure","limit":"5","skip":"5"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=adventure&limit=5&skip=5"} -2026-01-30T15:28:53.9349480Z -2026-01-30T15:28:53.9349687Z   32 | -2026-01-30T15:28:53.9350489Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:53.9351901Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:53.9353470Z  | ^ -2026-01-30T15:28:53.9354092Z  35 | headers: { -2026-01-30T15:28:53.9355162Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:53.9356663Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:53.9357372Z -2026-01-30T15:28:53.9357866Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9359374Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9360936Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9362328Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9363344Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9364646Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9365878Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:53.9366979Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:53.9367978Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:53.9368781Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9369552Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9370167Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9370799Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9371438Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9372083Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9373066Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:53.9373994Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9374747Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9375341Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9375953Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9376598Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9377242Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9377980Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:28:53.9378817Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9379573Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9380170Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9380788Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9381427Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9382021Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:28:53.9382758Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:28:53.9383415Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:28:53.9384061Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:28:53.9384711Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:28:53.9385713Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:28:53.9386498Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9387245Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9387832Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9388697Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9389346Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9389996Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:28:53.9390805Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:28:53.9391608Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:28:53.9392028Z -2026-01-30T15:28:53.9392336Z console.error -2026-01-30T15:28:53.9393611Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=adventure&limit=5&skip=5 200 - 14ms"} -2026-01-30T15:28:53.9394924Z -2026-01-30T15:28:53.9396361Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:53.9397658Z  166 | -2026-01-30T15:28:53.9398939Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:53.9400137Z  | ^ -2026-01-30T15:28:53.9400657Z  168 | } -2026-01-30T15:28:53.9401044Z  169 | -2026-01-30T15:28:53.9401725Z  170 | export default logger; -2026-01-30T15:28:53.9402366Z -2026-01-30T15:28:53.9402851Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9404210Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9405780Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9407025Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9408015Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9409304Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9410529Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:53.9411303Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:53.9412079Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:53.9412733Z -2026-01-30T15:28:53.9412888Z console.error -2026-01-30T15:28:53.9415266Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"plot":"detective","directors":"Nolan","searchOperator":"must"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/search?plot=detective&directors=Nolan&searchOperator=must"} -2026-01-30T15:28:53.9417257Z -2026-01-30T15:28:53.9417460Z   32 | -2026-01-30T15:28:53.9418258Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:53.9419667Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:53.9420709Z  | ^ -2026-01-30T15:28:53.9421328Z  35 | headers: { -2026-01-30T15:28:53.9422546Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:53.9424045Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:53.9424777Z -2026-01-30T15:28:53.9425258Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9427199Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9428772Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9430016Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9431183Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9432694Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9434145Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:53.9435259Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:53.9436254Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:53.9437040Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9437799Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9438396Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9439010Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9439656Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9440281Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9441118Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:53.9442049Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9442972Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9443575Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9444201Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9444839Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9445447Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:53.9446163Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:28:53.9446992Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9447741Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9448332Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9448944Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9449586Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9450186Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:28:53.9462670Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:28:53.9463406Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:28:53.9464087Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:28:53.9464784Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:28:53.9465560Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:28:53.9466356Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:53.9467124Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:53.9467728Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:53.9468348Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:53.9468997Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:53.9469661Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:28:53.9470664Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:28:53.9471694Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:28:53.9472131Z -2026-01-30T15:28:53.9472434Z console.error -2026-01-30T15:28:53.9473885Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /search?plot=detective&directors=Nolan&searchOperator=must 200 - 9ms"} -2026-01-30T15:28:53.9475365Z -2026-01-30T15:28:53.9477184Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:53.9478491Z  166 | -2026-01-30T15:28:53.9479773Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:53.9481319Z  | ^ -2026-01-30T15:28:53.9482052Z  168 | } -2026-01-30T15:28:53.9482644Z  169 | -2026-01-30T15:28:53.9483335Z  170 | export default logger; -2026-01-30T15:28:53.9483803Z -2026-01-30T15:28:53.9484298Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:53.9485626Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:53.9487536Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:53.9488795Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:53.9489780Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:53.9491060Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:53.9492437Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:53.9493230Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:53.9494017Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:53.9494554Z -2026-01-30T15:28:54.1870414Z PASS tests/integration/movie.integration.test.ts (6.74 s) -2026-01-30T15:28:54.2238596Z ● Console -2026-01-30T15:28:54.2241895Z -2026-01-30T15:28:54.2242056Z console.log -2026-01-30T15:28:54.2243387Z [dotenv@17.2.3] injecting env (0) from .env -- tip: 🗂️ backup and recover secrets: https://dotenvx.com/ops -2026-01-30T15:28:54.2244115Z -2026-01-30T15:28:54.2244395Z at _log (node_modules/dotenv/lib/main.js:142:11) -2026-01-30T15:28:54.2244776Z -2026-01-30T15:28:54.2244909Z console.log -2026-01-30T15:28:54.2245918Z [dotenv@17.2.3] injecting env (0) from .env -- tip: 📡 add observability to secrets: https://dotenvx.com/ops -2026-01-30T15:28:54.2246668Z -2026-01-30T15:28:54.2246941Z at _log (node_modules/dotenv/lib/main.js:142:11) -2026-01-30T15:28:54.2247307Z -2026-01-30T15:28:54.2247443Z console.error -2026-01-30T15:28:54.2248611Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":"Connected to database: sample_mflix","level":"debug"} -2026-01-30T15:28:54.2249637Z -2026-01-30T15:28:54.2250320Z   42 | database = client.db("sample_mflix"); -2026-01-30T15:28:54.2251228Z  43 | -2026-01-30T15:28:54.2252544Z > 44 | logger.debug(`Connected to database: ${database.databaseName}`); -2026-01-30T15:28:54.2253654Z  | ^ -2026-01-30T15:28:54.2254163Z  45 | -2026-01-30T15:28:54.2254730Z  46 | return database; -2026-01-30T15:28:54.2255438Z  47 | } catch (error) { -2026-01-30T15:28:54.2255791Z -2026-01-30T15:28:54.2256277Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2257597Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2259627Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2261289Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2262414Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2263716Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2265092Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:81:14) -2026-01-30T15:28:54.2266043Z at _connectToDatabase (src/config/database.ts:44:12) -2026-01-30T15:28:54.2266963Z at connectToDatabase (src/config/database.ts:62:10) -2026-01-30T15:28:54.2267679Z at Object. (tests/integration/setup.ts:110:5) -2026-01-30T15:28:54.2268096Z -2026-01-30T15:28:54.2268230Z console.error -2026-01-30T15:28:54.2269931Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} -2026-01-30T15:28:54.2271315Z -2026-01-30T15:28:54.2271530Z   32 | -2026-01-30T15:28:54.2272644Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:54.2274071Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:54.2275115Z  | ^ -2026-01-30T15:28:54.2275743Z  35 | headers: { -2026-01-30T15:28:54.2276825Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:54.2278313Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:54.2279024Z -2026-01-30T15:28:54.2279511Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2280821Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2282549Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2283796Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2284782Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2286076Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2287295Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:54.2288397Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:54.2289378Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:54.2290171Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2290926Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2291520Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2292152Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2292946Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2293588Z at read (node_modules/body-parser/lib/read.js:42:5) -2026-01-30T15:28:54.2294436Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:54.2295353Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2296096Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2296697Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2297514Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2298166Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2298774Z at node_modules/body-parser/lib/read.js:171:5 -2026-01-30T15:28:54.2299450Z at invokeCallback (node_modules/raw-body/index.js:238:16) -2026-01-30T15:28:54.2300128Z at done (node_modules/raw-body/index.js:227:7) -2026-01-30T15:28:54.2300854Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) -2026-01-30T15:28:54.2301323Z -2026-01-30T15:28:54.2301457Z console.error -2026-01-30T15:28:54.2302640Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 16ms"} -2026-01-30T15:28:54.2303697Z -2026-01-30T15:28:54.2305159Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:54.2306432Z  166 | -2026-01-30T15:28:54.2307703Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:54.2308894Z  | ^ -2026-01-30T15:28:54.2309402Z  168 | } -2026-01-30T15:28:54.2309803Z  169 | -2026-01-30T15:28:54.2310490Z  170 | export default logger; -2026-01-30T15:28:54.2310964Z -2026-01-30T15:28:54.2311449Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2312965Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2314542Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2315795Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2316777Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2318084Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2319309Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:54.2320095Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:54.2320871Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:54.2321389Z -2026-01-30T15:28:54.2321532Z console.error -2026-01-30T15:28:54.2323316Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} -2026-01-30T15:28:54.2324716Z -2026-01-30T15:28:54.2324912Z   32 | -2026-01-30T15:28:54.2325700Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:54.2327095Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:54.2328147Z  | ^ -2026-01-30T15:28:54.2328759Z  35 | headers: { -2026-01-30T15:28:54.2329827Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:54.2331299Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:54.2332014Z -2026-01-30T15:28:54.2332623Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2333951Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2336192Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2337439Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2338420Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2339704Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2340924Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:54.2342397Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:54.2343380Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:54.2344170Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2344939Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2345532Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2346161Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2346804Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2347433Z at read (node_modules/body-parser/lib/read.js:42:5) -2026-01-30T15:28:54.2348272Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:54.2349195Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2349943Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2350544Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2351156Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2351848Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2352595Z at node_modules/body-parser/lib/read.js:171:5 -2026-01-30T15:28:54.2353295Z at invokeCallback (node_modules/raw-body/index.js:238:16) -2026-01-30T15:28:54.2353964Z at done (node_modules/raw-body/index.js:227:7) -2026-01-30T15:28:54.2354694Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) -2026-01-30T15:28:54.2355180Z -2026-01-30T15:28:54.2355314Z console.error -2026-01-30T15:28:54.2394523Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":"Error occurred: Missing required fields: title","stack":"ValidationError: Missing required fields: title\n at validateRequiredFields (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/src/utils/errorHandler.ts:209:11)\n at createMovie (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/src/controllers/movieController.ts:211:25)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/src/utils/errorHandler.ts:142:7\n at Layer.handleRequest (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/layer.js:152:17)\n at next (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/route.js:157:13)\n at Route.dispatch (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/route.js:117:3)\n at handle (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:435:11)\n at Layer.handleRequest (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/layer.js:152:17)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:295:15\n at processParams (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:582:12)\n at next (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:291:5)\n at Function.handle (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:186:3)\n at router (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:60:12)\n at Layer.handleRequest (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/layer.js:152:17)\n at trimPrefix (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:342:13)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:297:9\n at processParams (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:582:12)\n at next (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:291:5)\n at requestLogger (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/src/middleware/requestLogger.ts:49:3)\n at Layer.handleRequest (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/layer.js:152:17)\n at trimPrefix (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:342:13)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:297:9\n at processParams (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:582:12)\n at next (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:291:5)\n at read (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/body-parser/lib/read.js:42:5)\n at urlencodedParser (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/body-parser/lib/types/urlencoded.js:57:5)\n at Layer.handleRequest (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/lib/layer.js:152:17)\n at trimPrefix (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:342:13)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:297:9\n at processParams (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:582:12)\n at next (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/router/index.js:291:5)\n at /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/body-parser/lib/read.js:171:5\n at AsyncResource.runInAsyncScope (node:async_hooks:206:9)\n at invokeCallback (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/raw-body/index.js:238:16)\n at done (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/raw-body/index.js:227:7)\n at IncomingMessage.onEnd (/home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express/node_modules/raw-body/index.js:287:7)\n at IncomingMessage.emit (node:events:524:28)\n at endReadableNT (node:internal/streams/readable:1698:12)\n at processTicksAndRejections (node:internal/process/task_queues:82:21)","url":"/api/movies","method":"POST","level":"error"} -2026-01-30T15:28:54.2428505Z -2026-01-30T15:28:54.2429140Z   40 | // Log the error for debugging purposes -2026-01-30T15:28:54.2430268Z  41 | // The logger automatically handles environment-specific behavior -2026-01-30T15:28:54.2431542Z > 42 | logger.error("Error occurred:", { -2026-01-30T15:28:54.2432579Z  | ^ -2026-01-30T15:28:54.2433367Z  43 | message: err.message, -2026-01-30T15:28:54.2434429Z  44 | stack: err.stack, -2026-01-30T15:28:54.2435263Z  45 | url: req.url, -2026-01-30T15:28:54.2435674Z -2026-01-30T15:28:54.2436164Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2437481Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2439046Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2440456Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2441438Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2442868Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2444101Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:54.2445202Z at DerivedLogger. [as error] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:54.2446141Z at errorHandler (src/utils/errorHandler.ts:42:10) -2026-01-30T15:28:54.2446881Z at Layer.handleError (node_modules/router/lib/layer.js:116:17) -2026-01-30T15:28:54.2447635Z at trimPrefix (node_modules/router/index.js:340:13) -2026-01-30T15:28:54.2448250Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2448884Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2449538Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2450112Z at node_modules/router/index.js:688:15 -2026-01-30T15:28:54.2450679Z at next (node_modules/router/index.js:276:14) -2026-01-30T15:28:54.2451294Z at next (node_modules/router/lib/route.js:132:14) -2026-01-30T15:28:54.2451730Z -2026-01-30T15:28:54.2451866Z console.error -2026-01-30T15:28:54.2453104Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"warn","message":"POST /api/movies 400 - 29ms"} -2026-01-30T15:28:54.2454077Z -2026-01-30T15:28:54.2455485Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:54.2456759Z  166 | -2026-01-30T15:28:54.2458032Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:54.2459227Z  | ^ -2026-01-30T15:28:54.2459731Z  168 | } -2026-01-30T15:28:54.2460118Z  169 | -2026-01-30T15:28:54.2461113Z  170 | export default logger; -2026-01-30T15:28:54.2461593Z -2026-01-30T15:28:54.2462073Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2463537Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2465100Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2466330Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2467310Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2468602Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2469809Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:54.2470594Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:54.2471562Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:54.2472077Z -2026-01-30T15:28:54.2472353Z console.error -2026-01-30T15:28:54.2474074Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies/batch"} -2026-01-30T15:28:54.2475482Z -2026-01-30T15:28:54.2475691Z   32 | -2026-01-30T15:28:54.2476479Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:54.2478066Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:54.2479116Z  | ^ -2026-01-30T15:28:54.2479724Z  35 | headers: { -2026-01-30T15:28:54.2480793Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:54.2482462Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:54.2483177Z -2026-01-30T15:28:54.2483665Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2484983Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2486534Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2487805Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2488791Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2490086Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2491309Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:54.2492544Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:54.2493534Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:54.2494325Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2495073Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2495666Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2496291Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2496932Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2497570Z at read (node_modules/body-parser/lib/read.js:42:5) -2026-01-30T15:28:54.2498408Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:54.2499335Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2500084Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2500675Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2501286Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2501927Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2502664Z at node_modules/body-parser/lib/read.js:171:5 -2026-01-30T15:28:54.2503341Z at invokeCallback (node_modules/raw-body/index.js:238:16) -2026-01-30T15:28:54.2504015Z at done (node_modules/raw-body/index.js:227:7) -2026-01-30T15:28:54.2504753Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) -2026-01-30T15:28:54.2505226Z -2026-01-30T15:28:54.2505360Z console.error -2026-01-30T15:28:54.2506410Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST /batch 201 - 8ms"} -2026-01-30T15:28:54.2507489Z -2026-01-30T15:28:54.2508897Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:54.2510170Z  166 | -2026-01-30T15:28:54.2511442Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:54.2512777Z  | ^ -2026-01-30T15:28:54.2513289Z  168 | } -2026-01-30T15:28:54.2513878Z  169 | -2026-01-30T15:28:54.2514557Z  170 | export default logger; -2026-01-30T15:28:54.2515024Z -2026-01-30T15:28:54.2515499Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2516830Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2518388Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2519619Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2520594Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2521873Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2523238Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:54.2524028Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:54.2524807Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:54.2525321Z -2026-01-30T15:28:54.2525461Z console.error -2026-01-30T15:28:54.2527131Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies/batch"} -2026-01-30T15:28:54.2528552Z -2026-01-30T15:28:54.2528747Z   32 | -2026-01-30T15:28:54.2529543Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:54.2530937Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:54.2531978Z  | ^ -2026-01-30T15:28:54.2532747Z  35 | headers: { -2026-01-30T15:28:54.2533814Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:54.2535290Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:54.2536014Z -2026-01-30T15:28:54.2536489Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2537812Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2539361Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2540597Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2541579Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2543004Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2544224Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:54.2545327Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:54.2546550Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:54.2547342Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2548087Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2548676Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2549295Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2549938Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2550573Z at read (node_modules/body-parser/lib/read.js:42:5) -2026-01-30T15:28:54.2551578Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:54.2552691Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2553432Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2554022Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2554652Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2555283Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2555891Z at node_modules/body-parser/lib/read.js:171:5 -2026-01-30T15:28:54.2556572Z at invokeCallback (node_modules/raw-body/index.js:238:16) -2026-01-30T15:28:54.2557236Z at done (node_modules/raw-body/index.js:227:7) -2026-01-30T15:28:54.2557963Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) -2026-01-30T15:28:54.2558439Z -2026-01-30T15:28:54.2558577Z console.error -2026-01-30T15:28:54.2559619Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"warn","message":"POST /batch 400 - 1ms"} -2026-01-30T15:28:54.2560820Z -2026-01-30T15:28:54.2562123Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:54.2563607Z  166 | -2026-01-30T15:28:54.2564881Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:54.2566080Z  | ^ -2026-01-30T15:28:54.2566592Z  168 | } -2026-01-30T15:28:54.2566977Z  169 | -2026-01-30T15:28:54.2567656Z  170 | export default logger; -2026-01-30T15:28:54.2568130Z -2026-01-30T15:28:54.2568616Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2569937Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2571499Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2572884Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2573868Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2575154Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2576369Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:54.2577141Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:54.2577910Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:54.2578434Z -2026-01-30T15:28:54.2578568Z console.error -2026-01-30T15:28:54.2580209Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} -2026-01-30T15:28:54.2581778Z -2026-01-30T15:28:54.2581987Z   32 | -2026-01-30T15:28:54.2582922Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:54.2584336Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:54.2585384Z  | ^ -2026-01-30T15:28:54.2585999Z  35 | headers: { -2026-01-30T15:28:54.2587069Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:54.2588736Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:54.2589452Z -2026-01-30T15:28:54.2589937Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2591265Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2592979Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2594217Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2595212Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2596498Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2597713Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:54.2598831Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:54.2599819Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:54.2600604Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2601361Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2601963Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2602749Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2603397Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2604028Z at read (node_modules/body-parser/lib/read.js:42:5) -2026-01-30T15:28:54.2604866Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:54.2605793Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2606546Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2607131Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2607753Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2608388Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2608986Z at node_modules/body-parser/lib/read.js:171:5 -2026-01-30T15:28:54.2609675Z at invokeCallback (node_modules/raw-body/index.js:238:16) -2026-01-30T15:28:54.2610346Z at done (node_modules/raw-body/index.js:227:7) -2026-01-30T15:28:54.2611079Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) -2026-01-30T15:28:54.2611556Z -2026-01-30T15:28:54.2611698Z console.error -2026-01-30T15:28:54.2612840Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 8ms"} -2026-01-30T15:28:54.2613735Z -2026-01-30T15:28:54.2614996Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:54.2616295Z  166 | -2026-01-30T15:28:54.2617580Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:54.2618989Z  | ^ -2026-01-30T15:28:54.2619508Z  168 | } -2026-01-30T15:28:54.2619903Z  169 | -2026-01-30T15:28:54.2620574Z  170 | export default logger; -2026-01-30T15:28:54.2621048Z -2026-01-30T15:28:54.2621525Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2623013Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2624568Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2625999Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2626995Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2628292Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2629513Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:54.2630293Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:54.2631070Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:54.2631587Z -2026-01-30T15:28:54.2631722Z console.error -2026-01-30T15:28:54.2633466Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/697cce35e56c4fd35ac6c981"} -2026-01-30T15:28:54.2634772Z -2026-01-30T15:28:54.2634983Z   32 | -2026-01-30T15:28:54.2635771Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:54.2637173Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:54.2638233Z  | ^ -2026-01-30T15:28:54.2638835Z  35 | headers: { -2026-01-30T15:28:54.2639908Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:54.2641396Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:54.2642104Z -2026-01-30T15:28:54.2642717Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2644050Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2645616Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2646857Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2647839Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2649129Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2650338Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:54.2651439Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:54.2652635Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:54.2653457Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2654205Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2654805Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2655421Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2656260Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2656898Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:54.2657734Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:54.2658660Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2659407Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2659997Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2660739Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2661388Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2662318Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:54.2663080Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:28:54.2663915Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2664661Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2665254Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2665865Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2666504Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2667100Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:28:54.2667673Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:28:54.2668319Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:28:54.2668964Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:28:54.2669602Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:28:54.2670340Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:28:54.2671126Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2671861Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2672594Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2673206Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2673839Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2674496Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:28:54.2675297Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:28:54.2676096Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:28:54.2676515Z -2026-01-30T15:28:54.2676648Z console.error -2026-01-30T15:28:54.2677806Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /697cce35e56c4fd35ac6c981 200 - 5ms"} -2026-01-30T15:28:54.2678794Z -2026-01-30T15:28:54.2680199Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:54.2681482Z  166 | -2026-01-30T15:28:54.2682897Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:54.2684097Z  | ^ -2026-01-30T15:28:54.2684605Z  168 | } -2026-01-30T15:28:54.2684999Z  169 | -2026-01-30T15:28:54.2685667Z  170 | export default logger; -2026-01-30T15:28:54.2686142Z -2026-01-30T15:28:54.2686620Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2687948Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2689504Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2690931Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2691913Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2693353Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2694564Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:54.2695348Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:54.2696120Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:54.2696818Z -2026-01-30T15:28:54.2696954Z console.error -2026-01-30T15:28:54.2698504Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/697cce35e56c4fd35ac6c982"} -2026-01-30T15:28:54.2699796Z -2026-01-30T15:28:54.2700019Z   32 | -2026-01-30T15:28:54.2700811Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:54.2702386Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:54.2703209Z  | ^ -2026-01-30T15:28:54.2703578Z  35 | headers: { -2026-01-30T15:28:54.2704185Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:54.2704993Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:54.2705395Z -2026-01-30T15:28:54.2705667Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2706384Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2707226Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2707895Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2708430Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2709129Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2709787Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:54.2710396Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:54.2710947Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:54.2711388Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2711811Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2712148Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2712719Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2713078Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2713437Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:54.2713899Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:54.2714401Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2714817Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2715153Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2715490Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2715845Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2716191Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:54.2716750Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:28:54.2717202Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2717602Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2717931Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2718278Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2718625Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2718958Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:28:54.2719279Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:28:54.2719747Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:28:54.2720108Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:28:54.2720461Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:28:54.2720858Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:28:54.2721290Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2721702Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2722033Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2722586Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2722946Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2723307Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:28:54.2723749Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:28:54.2724196Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:28:54.2724431Z -2026-01-30T15:28:54.2724512Z console.error -2026-01-30T15:28:54.2725160Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"warn","message":"GET /697cce35e56c4fd35ac6c982 404 - 3ms"} -2026-01-30T15:28:54.2725761Z -2026-01-30T15:28:54.2726524Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:28:54.2727214Z  166 | -2026-01-30T15:28:54.2727905Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:28:54.2728554Z  | ^ -2026-01-30T15:28:54.2728838Z  168 | } -2026-01-30T15:28:54.2729060Z  169 | -2026-01-30T15:28:54.2729442Z  170 | export default logger; -2026-01-30T15:28:54.2729699Z -2026-01-30T15:28:54.2729965Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2730693Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2731546Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2732318Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2732864Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2733557Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2734214Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:28:54.2734643Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:28:54.2735068Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:28:54.2735346Z -2026-01-30T15:28:54.2735432Z console.error -2026-01-30T15:28:54.2736223Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/invalid-id"} -2026-01-30T15:28:54.2737049Z -2026-01-30T15:28:54.2737166Z   32 | -2026-01-30T15:28:54.2737614Z  33 | // Log request details at debug level when request starts -2026-01-30T15:28:54.2738379Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:28:54.2738959Z  | ^ -2026-01-30T15:28:54.2739302Z  35 | headers: { -2026-01-30T15:28:54.2740008Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:28:54.2740817Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:28:54.2741220Z -2026-01-30T15:28:54.2741487Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:28:54.2742356Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:28:54.2743234Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:28:54.2743905Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:28:54.2744439Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:28:54.2745127Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:28:54.2745795Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:28:54.2746399Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:28:54.2746947Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:28:54.2747422Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2747851Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2748183Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2748536Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2748896Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2749245Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:54.2749711Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:28:54.2750227Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2750640Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2750975Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2751313Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2751678Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2752065Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:28:54.2752593Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:28:54.2753054Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2753462Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2753797Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2754164Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2754536Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2754866Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:28:54.2755191Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:28:54.2755552Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:28:54.2756051Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:28:54.2756412Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:28:54.2756825Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:28:54.2757250Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:28:54.2757663Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:28:54.2757985Z at node_modules/router/index.js:297:9 -2026-01-30T15:28:54.2758322Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:28:54.2758679Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:28:54.2759171Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:28:54.2759621Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:28:54.2760073Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:28:54.2760302Z -2026-01-30T15:34:58.4859753Z FAIL tests/integration/advancedEndpoints.integration.test.ts (370.976 s) -2026-01-30T15:34:58.5544957Z ● Console -2026-01-30T15:34:58.5545527Z -2026-01-30T15:34:58.5565696Z console.log -2026-01-30T15:34:58.5566891Z [dotenv@17.2.3] injecting env (0) from .env -- tip: ⚙️ write to custom object with { processEnv: myObject } -2026-01-30T15:34:58.5567618Z -2026-01-30T15:34:58.5567898Z at _log (node_modules/dotenv/lib/main.js:142:11) -2026-01-30T15:34:58.5568279Z -2026-01-30T15:34:58.5568418Z console.log -2026-01-30T15:34:58.5569461Z [dotenv@17.2.3] injecting env (0) from .env -- tip: 🔑 add access controls to secrets: https://dotenvx.com/ops -2026-01-30T15:34:58.5570234Z -2026-01-30T15:34:58.5570507Z at _log (node_modules/dotenv/lib/main.js:142:11) -2026-01-30T15:34:58.5570884Z -2026-01-30T15:34:58.5571018Z console.log -2026-01-30T15:34:58.5571315Z -2026-01-30T15:34:58.5572069Z ⚠️ Vector Search tests skipped: VOYAGE_API_KEY environment variable is not set -2026-01-30T15:34:58.5573288Z To run Vector Search integration tests, set VOYAGE_API_KEY in your .env file -2026-01-30T15:34:58.5574239Z Example: VOYAGE_API_KEY=your-api-key npm run test:integration -2026-01-30T15:34:58.5574718Z -2026-01-30T15:34:58.5575256Z at Object..exports.describeVectorSearch (tests/integration/setup.ts:97:21) -2026-01-30T15:34:58.5575899Z -2026-01-30T15:34:58.5576040Z console.error -2026-01-30T15:34:58.5577208Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":"Connected to database: sample_mflix","level":"debug"} -2026-01-30T15:34:58.5578220Z -2026-01-30T15:34:58.5578916Z   42 | database = client.db("sample_mflix"); -2026-01-30T15:34:58.5579731Z  43 | -2026-01-30T15:34:58.5580865Z > 44 | logger.debug(`Connected to database: ${database.databaseName}`); -2026-01-30T15:34:58.5581982Z  | ^ -2026-01-30T15:34:58.5582644Z  45 | -2026-01-30T15:34:58.5583211Z  46 | return database; -2026-01-30T15:34:58.5583915Z  47 | } catch (error) { -2026-01-30T15:34:58.5584267Z -2026-01-30T15:34:58.5584757Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5586138Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5587728Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5589003Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5589998Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5591306Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5593296Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:81:14) -2026-01-30T15:34:58.5594275Z at _connectToDatabase (src/config/database.ts:44:12) -2026-01-30T15:34:58.5594960Z at connectToDatabase (src/config/database.ts:62:10) -2026-01-30T15:34:58.5595674Z at Object. (tests/integration/setup.ts:110:5) -2026-01-30T15:34:58.5596099Z -2026-01-30T15:34:58.5596239Z console.error -2026-01-30T15:34:58.5597927Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} -2026-01-30T15:34:58.5599578Z -2026-01-30T15:34:58.5599787Z   32 | -2026-01-30T15:34:58.5600595Z  33 | // Log request details at debug level when request starts -2026-01-30T15:34:58.5602022Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:34:58.5604497Z  | ^ -2026-01-30T15:34:58.5605136Z  35 | headers: { -2026-01-30T15:34:58.5606231Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:34:58.5607861Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:34:58.5608597Z -2026-01-30T15:34:58.5609084Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5610441Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5612020Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5613429Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5614433Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5615746Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5616989Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:34:58.5618117Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:34:58.5619108Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:34:58.5619923Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5621055Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5621645Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5622427Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5623113Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5623758Z at read (node_modules/body-parser/lib/read.js:42:5) -2026-01-30T15:34:58.5624619Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:34:58.5625558Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5626320Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5626925Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5627549Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5628206Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5628818Z at node_modules/body-parser/lib/read.js:171:5 -2026-01-30T15:34:58.5629509Z at invokeCallback (node_modules/raw-body/index.js:238:16) -2026-01-30T15:34:58.5630188Z at done (node_modules/raw-body/index.js:227:7) -2026-01-30T15:34:58.5631141Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) -2026-01-30T15:34:58.5631627Z -2026-01-30T15:34:58.5631776Z console.error -2026-01-30T15:34:58.5632940Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 23ms"} -2026-01-30T15:34:58.5633851Z -2026-01-30T15:34:58.5635291Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:34:58.5636590Z  166 | -2026-01-30T15:34:58.5638053Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:34:58.5639262Z  | ^ -2026-01-30T15:34:58.5639779Z  168 | } -2026-01-30T15:34:58.5640162Z  169 | -2026-01-30T15:34:58.5640860Z  170 | export default logger; -2026-01-30T15:34:58.5641335Z -2026-01-30T15:34:58.5641830Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5643421Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5645010Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5646234Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5647249Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5648562Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5649803Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:34:58.5650598Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:34:58.5651384Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:34:58.5651905Z -2026-01-30T15:34:58.5652044Z console.error -2026-01-30T15:34:58.5654130Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"limit":"10"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/aggregations/reportingByComments?limit=10"} -2026-01-30T15:34:58.5655701Z -2026-01-30T15:34:58.5655913Z   32 | -2026-01-30T15:34:58.5656722Z  33 | // Log request details at debug level when request starts -2026-01-30T15:34:58.5658147Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:34:58.5659208Z  | ^ -2026-01-30T15:34:58.5659824Z  35 | headers: { -2026-01-30T15:34:58.5660904Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:34:58.5662544Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:34:58.5663277Z -2026-01-30T15:34:58.5663760Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5665102Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5666685Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5667954Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5668958Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5670468Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5671742Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:34:58.5673033Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:34:58.5674030Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:34:58.5674821Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5675582Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5676362Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5676983Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5677639Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5678270Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:34:58.5679126Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:34:58.5680061Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5680804Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5681401Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5682021Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5682908Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5683540Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:34:58.5684297Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:34:58.5685137Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5685931Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5686537Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5687153Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5687815Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5688422Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:34:58.5689000Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:34:58.5689656Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:34:58.5690307Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:34:58.5690952Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:34:58.5691690Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:34:58.5692621Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5693382Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5693980Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5694592Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5695243Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5695902Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:34:58.5696711Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:34:58.5697529Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:34:58.5697949Z -2026-01-30T15:34:58.5698087Z console.error -2026-01-30T15:34:58.5699725Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} -2026-01-30T15:34:58.5701136Z -2026-01-30T15:34:58.5701341Z   32 | -2026-01-30T15:34:58.5702138Z  33 | // Log request details at debug level when request starts -2026-01-30T15:34:58.5703704Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:34:58.5704947Z  | ^ -2026-01-30T15:34:58.5705558Z  35 | headers: { -2026-01-30T15:34:58.5706657Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:34:58.5708159Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:34:58.5708891Z -2026-01-30T15:34:58.5709373Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5710720Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5712698Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5713967Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5714981Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5716280Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5717518Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:34:58.5718639Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:34:58.5719641Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:34:58.5720436Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5721425Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5722025Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5722785Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5723447Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5724089Z at read (node_modules/body-parser/lib/read.js:42:5) -2026-01-30T15:34:58.5724936Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:34:58.5725872Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5726625Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5727223Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5727849Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5728490Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5729095Z at node_modules/body-parser/lib/read.js:171:5 -2026-01-30T15:34:58.5729792Z at invokeCallback (node_modules/raw-body/index.js:238:16) -2026-01-30T15:34:58.5730463Z at done (node_modules/raw-body/index.js:227:7) -2026-01-30T15:34:58.5731200Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) -2026-01-30T15:34:58.5731690Z -2026-01-30T15:34:58.5731830Z console.error -2026-01-30T15:34:58.5732986Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 7ms"} -2026-01-30T15:34:58.5733885Z -2026-01-30T15:34:58.5735323Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:34:58.5736624Z  166 | -2026-01-30T15:34:58.5737903Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:34:58.5739122Z  | ^ -2026-01-30T15:34:58.5739639Z  168 | } -2026-01-30T15:34:58.5740021Z  169 | -2026-01-30T15:34:58.5740701Z  170 | export default logger; -2026-01-30T15:34:58.5741356Z -2026-01-30T15:34:58.5741846Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5743422Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5745007Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5746273Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5747272Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5748754Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5749993Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:34:58.5750789Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:34:58.5751573Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:34:58.5752099Z -2026-01-30T15:34:58.5752370Z console.error -2026-01-30T15:34:58.5754198Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"limit":"3"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/aggregations/reportingByComments?limit=3"} -2026-01-30T15:34:58.5755738Z -2026-01-30T15:34:58.5755943Z   32 | -2026-01-30T15:34:58.5756736Z  33 | // Log request details at debug level when request starts -2026-01-30T15:34:58.5758164Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:34:58.5759221Z  | ^ -2026-01-30T15:34:58.5759830Z  35 | headers: { -2026-01-30T15:34:58.5760910Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:34:58.5762557Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:34:58.5763305Z -2026-01-30T15:34:58.5763788Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5765140Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5766733Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5767983Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5768981Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5770288Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5771532Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:34:58.5772884Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:34:58.5773890Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:34:58.5774684Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5775444Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5776049Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5776679Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5777345Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5777986Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:34:58.5778833Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:34:58.5779943Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5780702Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5781291Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5781916Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5782706Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5783331Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:34:58.5784080Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:34:58.5784922Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5785837Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5786477Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5787090Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5787738Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5788348Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:34:58.5788924Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:34:58.5789584Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:34:58.5790236Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:34:58.5790881Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:34:58.5791623Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:34:58.5792561Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5793311Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5793914Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5794532Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5795172Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5795831Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:34:58.5796648Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:34:58.5797463Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:34:58.5797892Z -2026-01-30T15:34:58.5798024Z console.error -2026-01-30T15:34:58.5799667Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} -2026-01-30T15:34:58.5801056Z -2026-01-30T15:34:58.5801266Z   32 | -2026-01-30T15:34:58.5802062Z  33 | // Log request details at debug level when request starts -2026-01-30T15:34:58.5803634Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:34:58.5804689Z  | ^ -2026-01-30T15:34:58.5805295Z  35 | headers: { -2026-01-30T15:34:58.5806393Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:34:58.5807889Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:34:58.5808619Z -2026-01-30T15:34:58.5809104Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5810452Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5812047Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5813540Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5814549Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5816046Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5817282Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:34:58.5818397Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:34:58.5819392Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:34:58.5820181Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5821171Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5821995Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5822781Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5823443Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5824083Z at read (node_modules/body-parser/lib/read.js:42:5) -2026-01-30T15:34:58.5824931Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:34:58.5825868Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5826636Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5827228Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5827860Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5828508Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5829106Z at node_modules/body-parser/lib/read.js:171:5 -2026-01-30T15:34:58.5829812Z at invokeCallback (node_modules/raw-body/index.js:238:16) -2026-01-30T15:34:58.5830504Z at done (node_modules/raw-body/index.js:227:7) -2026-01-30T15:34:58.5831231Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) -2026-01-30T15:34:58.5831719Z -2026-01-30T15:34:58.5831852Z console.error -2026-01-30T15:34:58.5833129Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 6ms"} -2026-01-30T15:34:58.5834036Z -2026-01-30T15:34:58.5835486Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:34:58.5836794Z  166 | -2026-01-30T15:34:58.5838079Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:34:58.5839277Z  | ^ -2026-01-30T15:34:58.5839805Z  168 | } -2026-01-30T15:34:58.5840198Z  169 | -2026-01-30T15:34:58.5840872Z  170 | export default logger; -2026-01-30T15:34:58.5841353Z -2026-01-30T15:34:58.5841851Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5843376Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5844988Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5846262Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5847280Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5848605Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5849852Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:34:58.5850647Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:34:58.5851436Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:34:58.5851964Z -2026-01-30T15:34:58.5852574Z console.error -2026-01-30T15:34:58.5856292Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"limit":"100"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/aggregations/reportingByComments?limit=100"} -2026-01-30T15:34:58.5857880Z -2026-01-30T15:34:58.5858115Z   32 | -2026-01-30T15:34:58.5858922Z  33 | // Log request details at debug level when request starts -2026-01-30T15:34:58.5860357Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:34:58.5861639Z  | ^ -2026-01-30T15:34:58.5882610Z  35 | headers: { -2026-01-30T15:34:58.5883895Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:34:58.5885436Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:34:58.5886206Z -2026-01-30T15:34:58.5886708Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5888050Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5889620Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5890875Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5891886Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5893365Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5894603Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:34:58.5895719Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:34:58.5896707Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:34:58.5897513Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5898257Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5898857Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5899483Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5900126Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5900764Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:34:58.5901606Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:34:58.5902673Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5903426Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5904028Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5904639Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5905281Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5905908Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:34:58.5906643Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:34:58.5907477Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5908222Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5908814Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5909429Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5910073Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5910672Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:34:58.5911508Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:34:58.5912309Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:34:58.5912982Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:34:58.5913636Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:34:58.5914361Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:34:58.5915140Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5915886Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5916471Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5917303Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5917946Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5918596Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:34:58.5919391Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:34:58.5920210Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:34:58.5920889Z -2026-01-30T15:34:58.5921028Z console.error -2026-01-30T15:34:58.5922519Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /aggregations/reportingByComments?limit=10 200 - 288070ms"} -2026-01-30T15:34:58.5923671Z -2026-01-30T15:34:58.5925097Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:34:58.5926378Z  166 | -2026-01-30T15:34:58.5927654Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:34:58.5928849Z  | ^ -2026-01-30T15:34:58.5929355Z  168 | } -2026-01-30T15:34:58.5929750Z  169 | -2026-01-30T15:34:58.5930425Z  170 | export default logger; -2026-01-30T15:34:58.5930894Z -2026-01-30T15:34:58.5931372Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5933017Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5934603Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5935854Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5936854Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5938147Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5939364Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:34:58.5940141Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:34:58.5940916Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:34:58.5941431Z -2026-01-30T15:34:58.5941571Z console.error -2026-01-30T15:34:58.5943340Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} -2026-01-30T15:34:58.5944720Z -2026-01-30T15:34:58.5944925Z   32 | -2026-01-30T15:34:58.5945736Z  33 | // Log request details at debug level when request starts -2026-01-30T15:34:58.5947139Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:34:58.5948191Z  | ^ -2026-01-30T15:34:58.5948995Z  35 | headers: { -2026-01-30T15:34:58.5950067Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:34:58.5951533Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:34:58.5952389Z -2026-01-30T15:34:58.5952869Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5954186Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5955901Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5957147Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5958129Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5959413Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5960623Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:34:58.5961721Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:34:58.5962829Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:34:58.5963620Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5964365Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5964967Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5965595Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5966242Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5966865Z at read (node_modules/body-parser/lib/read.js:42:5) -2026-01-30T15:34:58.5967710Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:34:58.5968630Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.5969365Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.5969986Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.5970617Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.5971263Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.5971866Z at node_modules/body-parser/lib/read.js:171:5 -2026-01-30T15:34:58.5972680Z at invokeCallback (node_modules/raw-body/index.js:238:16) -2026-01-30T15:34:58.5973372Z at done (node_modules/raw-body/index.js:227:7) -2026-01-30T15:34:58.5974107Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) -2026-01-30T15:34:58.5974590Z -2026-01-30T15:34:58.5974722Z console.error -2026-01-30T15:34:58.5975751Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 6ms"} -2026-01-30T15:34:58.5976649Z -2026-01-30T15:34:58.5978063Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:34:58.5979350Z  166 | -2026-01-30T15:34:58.5980630Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:34:58.5981839Z  | ^ -2026-01-30T15:34:58.5982494Z  168 | } -2026-01-30T15:34:58.5982883Z  169 | -2026-01-30T15:34:58.5983599Z  170 | export default logger; -2026-01-30T15:34:58.5984068Z -2026-01-30T15:34:58.5984557Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.5986117Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.5987728Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.5988989Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.5989974Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.5991271Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.5992886Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:34:58.5993669Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:34:58.5994447Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:34:58.5994971Z -2026-01-30T15:34:58.5995108Z console.error -2026-01-30T15:34:58.5996741Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{"content-type":"application/json"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: POST /api/movies"} -2026-01-30T15:34:58.5998129Z -2026-01-30T15:34:58.5998330Z   32 | -2026-01-30T15:34:58.5999126Z  33 | // Log request details at debug level when request starts -2026-01-30T15:34:58.6000539Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:34:58.6001591Z  | ^ -2026-01-30T15:34:58.6002334Z  35 | headers: { -2026-01-30T15:34:58.6003428Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:34:58.6004914Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:34:58.6005633Z -2026-01-30T15:34:58.6006111Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.6007454Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.6009016Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.6010248Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.6011247Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.6012672Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.6013904Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:34:58.6015018Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:34:58.6016006Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:34:58.6016796Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.6017546Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.6018142Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.6018757Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.6019407Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.6020047Z at read (node_modules/body-parser/lib/read.js:42:5) -2026-01-30T15:34:58.6021098Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:34:58.6022051Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.6023170Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.6023778Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.6024403Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.6025044Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.6025648Z at node_modules/body-parser/lib/read.js:171:5 -2026-01-30T15:34:58.6026330Z at invokeCallback (node_modules/raw-body/index.js:238:16) -2026-01-30T15:34:58.6026998Z at done (node_modules/raw-body/index.js:227:7) -2026-01-30T15:34:58.6027730Z at IncomingMessage.onEnd (node_modules/raw-body/index.js:287:7) -2026-01-30T15:34:58.6028363Z -2026-01-30T15:34:58.6028505Z console.error -2026-01-30T15:34:58.6029527Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"POST / 201 - 9ms"} -2026-01-30T15:34:58.6030410Z -2026-01-30T15:34:58.6031836Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:34:58.6033266Z  166 | -2026-01-30T15:34:58.6034540Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:34:58.6035730Z  | ^ -2026-01-30T15:34:58.6036238Z  168 | } -2026-01-30T15:34:58.6036621Z  169 | -2026-01-30T15:34:58.6037288Z  170 | export default logger; -2026-01-30T15:34:58.6037771Z -2026-01-30T15:34:58.6038251Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.6039586Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.6041143Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.6042521Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.6043510Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.6044802Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.6046023Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:34:58.6046803Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:34:58.6047579Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:34:58.6048099Z -2026-01-30T15:34:58.6048230Z console.error -2026-01-30T15:34:58.6050015Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"headers":{},"query":{"limit":"50"},"ip":"::ffff:127.0.0.1","level":"debug","message":"Incoming request: GET /api/movies/aggregations/reportingByYear?limit=50"} -2026-01-30T15:34:58.6051523Z -2026-01-30T15:34:58.6051723Z   32 | -2026-01-30T15:34:58.6052648Z  33 | // Log request details at debug level when request starts -2026-01-30T15:34:58.6054066Z > 34 | logger.debug(`Incoming request: ${req.method} ${req.url}`, { -2026-01-30T15:34:58.6055115Z  | ^ -2026-01-30T15:34:58.6055714Z  35 | headers: { -2026-01-30T15:34:58.6056787Z  36 | "user-agent": req.get("user-agent"), -2026-01-30T15:34:58.6058274Z  37 | "content-type": req.get("content-type"), -2026-01-30T15:34:58.6059000Z -2026-01-30T15:34:58.6059478Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.6060987Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.6062694Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.6063941Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.6064929Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.6066225Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.6067617Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:276:14) -2026-01-30T15:34:58.6068722Z at DerivedLogger. [as debug] (node_modules/winston/lib/winston/create-logger.js:95:19) -2026-01-30T15:34:58.6069715Z at requestLogger (src/middleware/requestLogger.ts:34:10) -2026-01-30T15:34:58.6070517Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.6071263Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.6071860Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.6072736Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.6073390Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.6074023Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:34:58.6074852Z at urlencodedParser (node_modules/body-parser/lib/types/urlencoded.js:57:5) -2026-01-30T15:34:58.6075782Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.6076522Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.6077107Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.6077725Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.6078375Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.6078997Z at read (node_modules/body-parser/lib/read.js:53:5) -2026-01-30T15:34:58.6079745Z at jsonParser (node_modules/body-parser/lib/types/json.js:88:5) -2026-01-30T15:34:58.6080576Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.6081310Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.6081899Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.6082648Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.6083284Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.6083886Z at cors (node_modules/cors/lib/index.js:188:7) -2026-01-30T15:34:58.6084462Z at node_modules/cors/lib/index.js:224:17 -2026-01-30T15:34:58.6085110Z at originCallback (node_modules/cors/lib/index.js:214:15) -2026-01-30T15:34:58.6085754Z at node_modules/cors/lib/index.js:219:13 -2026-01-30T15:34:58.6086449Z at optionsCallback (node_modules/cors/lib/index.js:199:9) -2026-01-30T15:34:58.6087209Z at corsMiddleware (node_modules/cors/lib/index.js:204:7) -2026-01-30T15:34:58.6087990Z at Layer.handleRequest (node_modules/router/lib/layer.js:152:17) -2026-01-30T15:34:58.6088728Z at trimPrefix (node_modules/router/index.js:342:13) -2026-01-30T15:34:58.6089338Z at node_modules/router/index.js:297:9 -2026-01-30T15:34:58.6089951Z at processParams (node_modules/router/index.js:582:12) -2026-01-30T15:34:58.6090583Z at next (node_modules/router/index.js:291:5) -2026-01-30T15:34:58.6091239Z at Function.handle (node_modules/router/index.js:186:3) -2026-01-30T15:34:58.6092071Z at Function.handle (node_modules/express/lib/application.js:177:15) -2026-01-30T15:34:58.6093015Z at Server.app (node_modules/express/lib/express.js:38:9) -2026-01-30T15:34:58.6093443Z -2026-01-30T15:34:58.6093578Z console.error -2026-01-30T15:34:58.6094865Z [winston] Attempt to write logs with no transports, which can increase memory usage: {"level":"http","message":"GET /aggregations/reportingByYear?limit=50 200 - 111ms"} -2026-01-30T15:34:58.6096144Z -2026-01-30T15:34:58.6097566Z   165 | statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "http"; -2026-01-30T15:34:58.6098896Z  166 | -2026-01-30T15:34:58.6100183Z > 167 | logger.log(statusColor, `${method} ${url} ${statusCode} - ${responseTime}ms`); -2026-01-30T15:34:58.6101685Z  | ^ -2026-01-30T15:34:58.6102451Z  168 | } -2026-01-30T15:34:58.6102879Z  169 | -2026-01-30T15:34:58.6103573Z  170 | export default logger; -2026-01-30T15:34:58.6104050Z -2026-01-30T15:34:58.6104536Z at DerivedLogger._transform (node_modules/winston/lib/winston/logger.js:326:15) -2026-01-30T15:34:58.6105868Z at DerivedLogger.Object..Transform._read (node_modules/readable-stream/lib/_stream_transform.js:166:10) -2026-01-30T15:34:58.6107441Z at DerivedLogger.Object..Transform._write (node_modules/readable-stream/lib/_stream_transform.js:155:83) -2026-01-30T15:34:58.6108676Z at doWrite (node_modules/readable-stream/lib/_stream_writable.js:390:139) -2026-01-30T15:34:58.6109663Z at writeOrBuffer (node_modules/readable-stream/lib/_stream_writable.js:381:5) -2026-01-30T15:34:58.6110965Z at DerivedLogger.Object..Writable.write (node_modules/readable-stream/lib/_stream_writable.js:302:11) -2026-01-30T15:34:58.6112322Z at DerivedLogger.log (node_modules/winston/lib/winston/logger.js:254:12) -2026-01-30T15:34:58.6113120Z at logHttpRequest (src/utils/logger.ts:167:10) -2026-01-30T15:34:58.6113896Z at ServerResponse. (src/middleware/requestLogger.ts:46:19) -2026-01-30T15:34:58.6114422Z -2026-01-30T15:34:58.6115634Z ● Advanced Endpoints Integration Tests › GET /api/movies/aggregations/reportingByComments › should return movies with their most recent comments -2026-01-30T15:34:58.6116680Z -2026-01-30T15:34:58.6116957Z thrown: "Exceeded timeout of 120000 ms for a test. -2026-01-30T15:34:58.6118258Z Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." -2026-01-30T15:34:58.6119219Z -2026-01-30T15:34:58.6119426Z   66 | -2026-01-30T15:34:58.6120762Z  67 | describe("GET /api/movies/aggregations/reportingByComments", () => { -2026-01-30T15:34:58.6123153Z > 68 | test("should return movies with their most recent comments", async () => { -2026-01-30T15:34:58.6124367Z  | ^ -2026-01-30T15:34:58.6125075Z  69 | // Create test movie via API -2026-01-30T15:34:58.6125858Z  70 | const testMovie = { -2026-01-30T15:34:58.6126841Z  71 | title: "Test Aggregation Movie 1", -2026-01-30T15:34:58.6127387Z -2026-01-30T15:34:58.6127783Z at tests/integration/advancedEndpoints.integration.test.ts:68:5 -2026-01-30T15:34:58.6128675Z at tests/integration/advancedEndpoints.integration.test.ts:67:3 -2026-01-30T15:34:58.6129718Z at Object. (tests/integration/advancedEndpoints.integration.test.ts:25:20) -2026-01-30T15:34:58.6130373Z -2026-01-30T15:34:58.6131442Z ● Advanced Endpoints Integration Tests › GET /api/movies/aggregations/reportingByComments › should limit recent comments per movie -2026-01-30T15:34:58.6132536Z -2026-01-30T15:34:58.6132803Z thrown: "Exceeded timeout of 120000 ms for a test. -2026-01-30T15:34:58.6134091Z Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." -2026-01-30T15:34:58.6135244Z -2026-01-30T15:34:58.6135530Z   139 | }); -2026-01-30T15:34:58.6136006Z  140 | -2026-01-30T15:34:58.6137182Z > 141 | test("should limit recent comments per movie", async () => { -2026-01-30T15:34:58.6138288Z  | ^ -2026-01-30T15:34:58.6138949Z  142 | // Create test movie -2026-01-30T15:34:58.6139715Z  143 | const testMovie = { -2026-01-30T15:34:58.6140983Z  144 | title: "Test Aggregation Movie Limit", -2026-01-30T15:34:58.6141561Z -2026-01-30T15:34:58.6141966Z at tests/integration/advancedEndpoints.integration.test.ts:141:5 -2026-01-30T15:34:58.6143056Z at tests/integration/advancedEndpoints.integration.test.ts:67:3 -2026-01-30T15:34:58.6144104Z at Object. (tests/integration/advancedEndpoints.integration.test.ts:25:20) -2026-01-30T15:34:58.6144753Z -2026-01-30T15:34:58.6145802Z ● Advanced Endpoints Integration Tests › GET /api/movies/aggregations/reportingByComments › should handle movies with no comments -2026-01-30T15:34:58.6146753Z -2026-01-30T15:34:58.6147016Z thrown: "Exceeded timeout of 120000 ms for a test. -2026-01-30T15:34:58.6148300Z Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." -2026-01-30T15:34:58.6149256Z -2026-01-30T15:34:58.6149526Z   187 | }); -2026-01-30T15:34:58.6150001Z  188 | -2026-01-30T15:34:58.6151161Z > 189 | test("should handle movies with no comments", async () => { -2026-01-30T15:34:58.6153003Z  | ^ -2026-01-30T15:34:58.6153800Z  190 | // Create a movie without comments -2026-01-30T15:34:58.6154642Z  191 | const testMovie = { -2026-01-30T15:34:58.6155720Z  192 | title: "Test Aggregation Movie No Comments", -2026-01-30T15:34:58.6156345Z -2026-01-30T15:34:58.6156751Z at tests/integration/advancedEndpoints.integration.test.ts:189:5 -2026-01-30T15:34:58.6157651Z at tests/integration/advancedEndpoints.integration.test.ts:67:3 -2026-01-30T15:34:58.6158695Z at Object. (tests/integration/advancedEndpoints.integration.test.ts:25:20) -2026-01-30T15:34:58.6159350Z -2026-01-30T15:34:58.6586609Z Test Suites: 1 failed, 2 passed, 3 total -2026-01-30T15:34:58.6589619Z Tests: 3 failed, 4 skipped, 38 passed, 45 total -2026-01-30T15:34:58.6592438Z Snapshots: 0 total -2026-01-30T15:34:58.6594958Z Time: 371.746 s -2026-01-30T15:34:58.6597492Z Ran all test suites. -2026-01-30T15:34:58.6605515Z Test results written to: test-results-integration.json diff --git a/Run Express Tests/12_Upload test results.txt b/Run Express Tests/12_Upload test results.txt deleted file mode 100644 index 5942dab..0000000 --- a/Run Express Tests/12_Upload test results.txt +++ /dev/null @@ -1,26 +0,0 @@ -2026-01-30T15:34:58.6906225Z ##[group]Run actions/upload-artifact@v4 -2026-01-30T15:34:58.6906685Z with: -2026-01-30T15:34:58.6906975Z name: test-results -2026-01-30T15:34:58.6907996Z path: mflix/server/js-express/coverage/ -mflix/server/js-express/test-results-unit.json -mflix/server/js-express/test-results-integration.json - -2026-01-30T15:34:58.6909137Z retention-days: 30 -2026-01-30T15:34:58.6909480Z if-no-files-found: warn -2026-01-30T15:34:58.6909847Z compression-level: 6 -2026-01-30T15:34:58.6910195Z overwrite: false -2026-01-30T15:34:58.6910543Z include-hidden-files: false -2026-01-30T15:34:58.6910925Z ##[endgroup] -2026-01-30T15:34:58.9130381Z Multiple search paths detected. Calculating the least common ancestor of all paths -2026-01-30T15:34:58.9136367Z The least common ancestor is /home/runner/work/docs-sample-apps/docs-sample-apps/mflix/server/js-express. This will be the root directory of the artifact -2026-01-30T15:34:58.9138172Z With the provided path, there will be 2 files uploaded -2026-01-30T15:34:58.9143662Z Artifact name is valid! -2026-01-30T15:34:58.9144864Z Root directory input is valid! -2026-01-30T15:34:59.2145796Z Beginning upload of artifact content to blob storage -2026-01-30T15:34:59.5225548Z Uploaded bytes 4995 -2026-01-30T15:34:59.6058897Z Finished uploading artifact content to blob storage! -2026-01-30T15:34:59.6061844Z SHA256 digest of uploaded artifact zip is 132af0a45ae192a2d928fa422d5dbc5071b42eb5af768a6d8822dcc36a18d581 -2026-01-30T15:34:59.6063860Z Finalizing artifact upload -2026-01-30T15:34:59.7513968Z Artifact test-results.zip successfully finalized. Artifact ID 5320296235 -2026-01-30T15:34:59.7515594Z Artifact test-results has been successfully uploaded! Final size is 4995 bytes. Artifact ID is 5320296235 -2026-01-30T15:34:59.7521651Z Artifact download URL: https://github.com/mongodb/docs-sample-apps/actions/runs/21521030923/artifacts/5320296235 diff --git a/Run Express Tests/13_Generate Test Summary.txt b/Run Express Tests/13_Generate Test Summary.txt deleted file mode 100644 index 1715c6d..0000000 --- a/Run Express Tests/13_Generate Test Summary.txt +++ /dev/null @@ -1,8 +0,0 @@ -2026-01-30T15:34:59.7626378Z ##[group]Run chmod +x .github/scripts/generate-test-summary-jest.sh -2026-01-30T15:34:59.7627089Z chmod +x .github/scripts/generate-test-summary-jest.sh -2026-01-30T15:34:59.7627588Z .github/scripts/generate-test-summary-jest.sh \ -2026-01-30T15:34:59.7628125Z  mflix/server/js-express/test-results-unit.json \ -2026-01-30T15:34:59.7628594Z  mflix/server/js-express/test-results-integration.json -2026-01-30T15:34:59.7661898Z shell: /usr/bin/bash -e {0} -2026-01-30T15:34:59.7662460Z ##[endgroup] -2026-01-30T15:34:59.8107658Z ##[error]Process completed with exit code 1. diff --git a/Run Express Tests/1_Set up job.txt b/Run Express Tests/1_Set up job.txt deleted file mode 100644 index 0700380..0000000 --- a/Run Express Tests/1_Set up job.txt +++ /dev/null @@ -1,46 +0,0 @@ -2026-01-30T15:27:35.4021090Z Current runner version: '2.331.0' -2026-01-30T15:27:35.4044828Z ##[group]Runner Image Provisioner -2026-01-30T15:27:35.4045760Z Hosted Compute Agent -2026-01-30T15:27:35.4046300Z Version: 20260123.484 -2026-01-30T15:27:35.4046957Z Commit: 6bd6555ca37d84114959e1c76d2c01448ff61c5d -2026-01-30T15:27:35.4047649Z Build Date: 2026-01-23T19:41:17Z -2026-01-30T15:27:35.4048256Z Worker ID: {1c5318de-9485-4f85-b747-b92f544a1cd0} -2026-01-30T15:27:35.4048981Z Azure Region: westus -2026-01-30T15:27:35.4049550Z ##[endgroup] -2026-01-30T15:27:35.4050848Z ##[group]Operating System -2026-01-30T15:27:35.4051538Z Ubuntu -2026-01-30T15:27:35.4051971Z 24.04.3 -2026-01-30T15:27:35.4052596Z LTS -2026-01-30T15:27:35.4053062Z ##[endgroup] -2026-01-30T15:27:35.4053606Z ##[group]Runner Image -2026-01-30T15:27:35.4054102Z Image: ubuntu-24.04 -2026-01-30T15:27:35.4054636Z Version: 20260126.10.1 -2026-01-30T15:27:35.4055636Z Included Software: https://github.com/actions/runner-images/blob/ubuntu24/20260126.10/images/ubuntu/Ubuntu2404-Readme.md -2026-01-30T15:27:35.4057369Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu24%2F20260126.10 -2026-01-30T15:27:35.4058244Z ##[endgroup] -2026-01-30T15:27:35.4060840Z ##[group]GITHUB_TOKEN Permissions -2026-01-30T15:27:35.4063590Z Actions: write -2026-01-30T15:27:35.4064176Z ArtifactMetadata: write -2026-01-30T15:27:35.4064676Z Attestations: write -2026-01-30T15:27:35.4065289Z Checks: write -2026-01-30T15:27:35.4065773Z Contents: write -2026-01-30T15:27:35.4066232Z Deployments: write -2026-01-30T15:27:35.4066828Z Discussions: write -2026-01-30T15:27:35.4067276Z Issues: write -2026-01-30T15:27:35.4067728Z Metadata: read -2026-01-30T15:27:35.4068228Z Models: read -2026-01-30T15:27:35.4068702Z Packages: write -2026-01-30T15:27:35.4069156Z Pages: write -2026-01-30T15:27:35.4069812Z PullRequests: write -2026-01-30T15:27:35.4070343Z RepositoryProjects: write -2026-01-30T15:27:35.4070857Z SecurityEvents: write -2026-01-30T15:27:35.4071420Z Statuses: write -2026-01-30T15:27:35.4071869Z ##[endgroup] -2026-01-30T15:27:35.4074259Z Secret source: Actions -2026-01-30T15:27:35.4075183Z Prepare workflow directory -2026-01-30T15:27:35.4388143Z Prepare all required actions -2026-01-30T15:27:35.4425033Z Getting action download info -2026-01-30T15:27:35.9628797Z Download action repository 'actions/checkout@v5' (SHA:93cb6efe18208431cddfb8368fd83d5badbf9bfd) -2026-01-30T15:27:36.0508180Z Download action repository 'actions/setup-node@v4' (SHA:49933ea5288caeca8642d1e84afbd3f7d6820020) -2026-01-30T15:27:36.1435369Z Download action repository 'actions/upload-artifact@v4' (SHA:ea165f8d65b6e75b540449e92b4886f43607fa02) -2026-01-30T15:27:36.3648136Z Complete job name: Run Express Tests diff --git a/Run Express Tests/26_Post Checkout code.txt b/Run Express Tests/26_Post Checkout code.txt deleted file mode 100644 index 5ce4ba0..0000000 --- a/Run Express Tests/26_Post Checkout code.txt +++ /dev/null @@ -1,14 +0,0 @@ -2026-01-30T15:34:59.8218974Z Post job cleanup. -2026-01-30T15:34:59.9199900Z [command]/usr/bin/git version -2026-01-30T15:34:59.9243494Z git version 2.52.0 -2026-01-30T15:34:59.9290073Z Temporarily overriding HOME='/home/runner/work/_temp/afc3ecc7-3169-4246-8b27-083c313fdabd' before making global git config changes -2026-01-30T15:34:59.9291643Z Adding repository directory to the temporary git global config as a safe directory -2026-01-30T15:34:59.9296677Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/docs-sample-apps/docs-sample-apps -2026-01-30T15:34:59.9341748Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand -2026-01-30T15:34:59.9376926Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :" -2026-01-30T15:34:59.9614076Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader -2026-01-30T15:34:59.9637661Z http.https://github.com/.extraheader -2026-01-30T15:34:59.9647904Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader -2026-01-30T15:34:59.9680830Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :" -2026-01-30T15:34:59.9911077Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir: -2026-01-30T15:34:59.9945473Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url diff --git a/Run Express Tests/27_Complete job.txt b/Run Express Tests/27_Complete job.txt deleted file mode 100644 index 3c29ec8..0000000 --- a/Run Express Tests/27_Complete job.txt +++ /dev/null @@ -1 +0,0 @@ -2026-01-30T15:35:00.0307603Z Cleaning up orphan processes diff --git a/Run Express Tests/2_Checkout code.txt b/Run Express Tests/2_Checkout code.txt deleted file mode 100644 index 412f686..0000000 --- a/Run Express Tests/2_Checkout code.txt +++ /dev/null @@ -1,88 +0,0 @@ -2026-01-30T15:27:36.4368829Z ##[group]Run actions/checkout@v5 -2026-01-30T15:27:36.4369722Z with: -2026-01-30T15:27:36.4370188Z repository: mongodb/docs-sample-apps -2026-01-30T15:27:36.4370922Z token: *** -2026-01-30T15:27:36.4371330Z ssh-strict: true -2026-01-30T15:27:36.4371752Z ssh-user: git -2026-01-30T15:27:36.4372343Z persist-credentials: true -2026-01-30T15:27:36.4372858Z clean: true -2026-01-30T15:27:36.4373282Z sparse-checkout-cone-mode: true -2026-01-30T15:27:36.4373808Z fetch-depth: 1 -2026-01-30T15:27:36.4374222Z fetch-tags: false -2026-01-30T15:27:36.4374707Z show-progress: true -2026-01-30T15:27:36.4375149Z lfs: false -2026-01-30T15:27:36.4375540Z submodules: false -2026-01-30T15:27:36.4375975Z set-safe-directory: true -2026-01-30T15:27:36.4376687Z ##[endgroup] -2026-01-30T15:27:36.5281454Z Syncing repository: mongodb/docs-sample-apps -2026-01-30T15:27:36.5283622Z ##[group]Getting Git version info -2026-01-30T15:27:36.5284537Z Working directory is '/home/runner/work/docs-sample-apps/docs-sample-apps' -2026-01-30T15:27:36.5285724Z [command]/usr/bin/git version -2026-01-30T15:27:36.5360639Z git version 2.52.0 -2026-01-30T15:27:36.5381749Z ##[endgroup] -2026-01-30T15:27:36.5397373Z Temporarily overriding HOME='/home/runner/work/_temp/0dfb3aa4-9072-4dfc-b117-396528f81849' before making global git config changes -2026-01-30T15:27:36.5400120Z Adding repository directory to the temporary git global config as a safe directory -2026-01-30T15:27:36.5403245Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/docs-sample-apps/docs-sample-apps -2026-01-30T15:27:36.5442144Z Deleting the contents of '/home/runner/work/docs-sample-apps/docs-sample-apps' -2026-01-30T15:27:36.5446233Z ##[group]Initializing the repository -2026-01-30T15:27:36.5450969Z [command]/usr/bin/git init /home/runner/work/docs-sample-apps/docs-sample-apps -2026-01-30T15:27:36.5556489Z hint: Using 'master' as the name for the initial branch. This default branch name -2026-01-30T15:27:36.5557740Z hint: will change to "main" in Git 3.0. To configure the initial branch name -2026-01-30T15:27:36.5558828Z hint: to use in all of your new repositories, which will suppress this warning, -2026-01-30T15:27:36.5559561Z hint: call: -2026-01-30T15:27:36.5559955Z hint: -2026-01-30T15:27:36.5560793Z hint: git config --global init.defaultBranch -2026-01-30T15:27:36.5561667Z hint: -2026-01-30T15:27:36.5562540Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and -2026-01-30T15:27:36.5564402Z hint: 'development'. The just-created branch can be renamed via this command: -2026-01-30T15:27:36.5565909Z hint: -2026-01-30T15:27:36.5566732Z hint: git branch -m -2026-01-30T15:27:36.5567695Z hint: -2026-01-30T15:27:36.5568878Z hint: Disable this message with "git config set advice.defaultBranchName false" -2026-01-30T15:27:36.5570996Z Initialized empty Git repository in /home/runner/work/docs-sample-apps/docs-sample-apps/.git/ -2026-01-30T15:27:36.5574631Z [command]/usr/bin/git remote add origin https://github.com/mongodb/docs-sample-apps -2026-01-30T15:27:36.5609580Z ##[endgroup] -2026-01-30T15:27:36.5610970Z ##[group]Disabling automatic garbage collection -2026-01-30T15:27:36.5613924Z [command]/usr/bin/git config --local gc.auto 0 -2026-01-30T15:27:36.5640984Z ##[endgroup] -2026-01-30T15:27:36.5642567Z ##[group]Setting up auth -2026-01-30T15:27:36.5648180Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand -2026-01-30T15:27:36.5679005Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :" -2026-01-30T15:27:36.6022023Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader -2026-01-30T15:27:36.6052697Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :" -2026-01-30T15:27:36.6274207Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir: -2026-01-30T15:27:36.6303038Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url -2026-01-30T15:27:36.6516155Z [command]/usr/bin/git config --local http.https://github.com/.extraheader AUTHORIZATION: basic *** -2026-01-30T15:27:36.6547036Z ##[endgroup] -2026-01-30T15:27:36.6555125Z ##[group]Fetching the repository -2026-01-30T15:27:36.6556570Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +41eb43c3e700e94de5fbb4c1db03d66579c7306b:refs/remotes/pull/80/merge -2026-01-30T15:27:37.1060391Z From https://github.com/mongodb/docs-sample-apps -2026-01-30T15:27:37.1062402Z * [new ref] 41eb43c3e700e94de5fbb4c1db03d66579c7306b -> pull/80/merge -2026-01-30T15:27:37.1093035Z ##[endgroup] -2026-01-30T15:27:37.1094870Z ##[group]Determining the checkout info -2026-01-30T15:27:37.1096991Z ##[endgroup] -2026-01-30T15:27:37.1101716Z [command]/usr/bin/git sparse-checkout disable -2026-01-30T15:27:37.1142652Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig -2026-01-30T15:27:37.1167671Z ##[group]Checking out the ref -2026-01-30T15:27:37.1172659Z [command]/usr/bin/git checkout --progress --force refs/remotes/pull/80/merge -2026-01-30T15:27:37.1321796Z Note: switching to 'refs/remotes/pull/80/merge'. -2026-01-30T15:27:37.1323314Z -2026-01-30T15:27:37.1324344Z You are in 'detached HEAD' state. You can look around, make experimental -2026-01-30T15:27:37.1326750Z changes and commit them, and you can discard any commits you make in this -2026-01-30T15:27:37.1328412Z state without impacting any branches by switching back to a branch. -2026-01-30T15:27:37.1329828Z -2026-01-30T15:27:37.1330819Z If you want to create a new branch to retain commits you create, you may -2026-01-30T15:27:37.1333118Z do so (now or later) by using -c with the switch command. Example: -2026-01-30T15:27:37.1334107Z -2026-01-30T15:27:37.1334463Z git switch -c -2026-01-30T15:27:37.1335089Z -2026-01-30T15:27:37.1335413Z Or undo this operation with: -2026-01-30T15:27:37.1335953Z -2026-01-30T15:27:37.1336239Z git switch - -2026-01-30T15:27:37.1336648Z -2026-01-30T15:27:37.1337348Z Turn off this advice by setting config variable advice.detachedHead to false -2026-01-30T15:27:37.1338497Z -2026-01-30T15:27:37.1339815Z HEAD is now at 41eb43c Merge 9be645df93245290851e18200eefbe91796b46c1 into ce1e9b24def0b15691baec44174a9a7a044d554d -2026-01-30T15:27:37.1343919Z ##[endgroup] -2026-01-30T15:27:37.1364941Z [command]/usr/bin/git log -1 --format=%H -2026-01-30T15:27:37.1386665Z 41eb43c3e700e94de5fbb4c1db03d66579c7306b diff --git a/Run Express Tests/3_Install Atlas CLI.txt b/Run Express Tests/3_Install Atlas CLI.txt deleted file mode 100644 index ad10217..0000000 --- a/Run Express Tests/3_Install Atlas CLI.txt +++ /dev/null @@ -1,58 +0,0 @@ -2026-01-30T15:27:37.1617500Z ##[group]Run curl https://fastdl.mongodb.org/mongocli/mongodb-atlas-cli_1.47.0_linux_x86_64.deb --output atlas-cli.deb -2026-01-30T15:27:37.1621203Z curl https://fastdl.mongodb.org/mongocli/mongodb-atlas-cli_1.47.0_linux_x86_64.deb --output atlas-cli.deb -2026-01-30T15:27:37.1624031Z sudo apt install ./atlas-cli.deb -2026-01-30T15:27:37.1662552Z shell: /usr/bin/bash -e {0} -2026-01-30T15:27:37.1663669Z ##[endgroup] -2026-01-30T15:27:37.1793709Z % Total % Received % Xferd Average Speed Time Time Time Current -2026-01-30T15:27:37.1796252Z Dload Upload Total Spent Left Speed -2026-01-30T15:27:37.1797389Z -2026-01-30T15:27:37.3083057Z 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 -2026-01-30T15:27:37.3084856Z 100 15.3M 100 15.3M 0 0 118M 0 --:--:-- --:--:-- --:--:-- 118M -2026-01-30T15:27:37.3234205Z -2026-01-30T15:27:37.3235564Z WARNING: apt does not have a stable CLI interface. Use with caution in scripts. -2026-01-30T15:27:37.3237047Z -2026-01-30T15:27:37.3617977Z Reading package lists... -2026-01-30T15:27:37.5325383Z Building dependency tree... -2026-01-30T15:27:37.5332897Z Reading state information... -2026-01-30T15:27:37.7056676Z The following NEW packages will be installed: -2026-01-30T15:27:37.7058928Z mongodb-atlas-cli -2026-01-30T15:27:37.7308516Z 0 upgraded, 1 newly installed, 0 to remove and 65 not upgraded. -2026-01-30T15:27:37.8233659Z Need to get 0 B/16.1 MB of archives. -2026-01-30T15:27:37.8237845Z After this operation, 52.6 MB of additional disk space will be used. -2026-01-30T15:27:37.8242138Z Get:1 /home/runner/work/docs-sample-apps/docs-sample-apps/atlas-cli.deb mongodb-atlas-cli amd64 1.47.0 [16.1 MB] -2026-01-30T15:27:38.1043824Z Selecting previously unselected package mongodb-atlas-cli. -2026-01-30T15:27:38.1367629Z (Reading database ... -2026-01-30T15:27:38.1369119Z (Reading database ... 5% -2026-01-30T15:27:38.1370338Z (Reading database ... 10% -2026-01-30T15:27:38.1371717Z (Reading database ... 15% -2026-01-30T15:27:38.1373245Z (Reading database ... 20% -2026-01-30T15:27:38.1374569Z (Reading database ... 25% -2026-01-30T15:27:38.1375774Z (Reading database ... 30% -2026-01-30T15:27:38.1377120Z (Reading database ... 35% -2026-01-30T15:27:38.1378130Z (Reading database ... 40% -2026-01-30T15:27:38.1379103Z (Reading database ... 45% -2026-01-30T15:27:38.1380065Z (Reading database ... 50% -2026-01-30T15:27:38.1545659Z (Reading database ... 55% -2026-01-30T15:27:38.2799952Z (Reading database ... 60% -2026-01-30T15:27:38.3781312Z (Reading database ... 65% -2026-01-30T15:27:38.4457376Z (Reading database ... 70% -2026-01-30T15:27:38.5334951Z (Reading database ... 75% -2026-01-30T15:27:38.6852040Z (Reading database ... 80% -2026-01-30T15:27:38.8245892Z (Reading database ... 85% -2026-01-30T15:27:38.9423831Z (Reading database ... 90% -2026-01-30T15:27:39.0925739Z (Reading database ... 95% -2026-01-30T15:27:39.0926231Z (Reading database ... 100% -2026-01-30T15:27:39.0926628Z (Reading database ... 217639 files and directories currently installed.) -2026-01-30T15:27:39.0974937Z Preparing to unpack .../docs-sample-apps/atlas-cli.deb ... -2026-01-30T15:27:39.1002718Z Unpacking mongodb-atlas-cli (1.47.0) ... -2026-01-30T15:27:39.3569158Z Setting up mongodb-atlas-cli (1.47.0) ... -2026-01-30T15:27:40.0594262Z -2026-01-30T15:27:40.0594930Z Running kernel seems to be up-to-date. -2026-01-30T15:27:40.0597018Z -2026-01-30T15:27:40.0597282Z No services need to be restarted. -2026-01-30T15:27:40.0597717Z -2026-01-30T15:27:40.0598112Z No containers need to be restarted. -2026-01-30T15:27:40.0598419Z -2026-01-30T15:27:40.0598613Z No user sessions are running outdated binaries. -2026-01-30T15:27:40.0599004Z -2026-01-30T15:27:40.0599469Z No VM guests are running outdated hypervisor (qemu) binaries on this host. diff --git a/Run Express Tests/4_Set up a local deployment using Atlas CLI.txt b/Run Express Tests/4_Set up a local deployment using Atlas CLI.txt deleted file mode 100644 index 73a2e0c..0000000 --- a/Run Express Tests/4_Set up a local deployment using Atlas CLI.txt +++ /dev/null @@ -1,20 +0,0 @@ -2026-01-30T15:27:40.9036463Z ##[group]Run atlas deployments setup myLocalRs1 --type local --port 27017 --force -2026-01-30T15:27:40.9037097Z atlas deployments setup myLocalRs1 --type local --port 27017 --force -2026-01-30T15:27:40.9069683Z shell: /usr/bin/bash -e {0} -2026-01-30T15:27:40.9069941Z ##[endgroup] -2026-01-30T15:27:40.9429864Z -2026-01-30T15:27:40.9430480Z Warning: Secure storage is not available, falling back to insecure storage -2026-01-30T15:27:40.9431352Z To disable this alert, run "atlas config set silence_storage_warning true" -2026-01-30T15:27:43.2827603Z -2026-01-30T15:27:43.2828075Z [Default Settings] -2026-01-30T15:27:43.2828604Z Deployment Name myLocalRs1 -2026-01-30T15:27:43.2829049Z MongoDB Version 8.0 -2026-01-30T15:27:43.2829269Z -2026-01-30T15:27:43.3804817Z Creating your cluster myLocalRs1 -2026-01-30T15:27:43.3806453Z 1/3: Starting your local environment... -2026-01-30T15:27:43.3942568Z 2/3: Downloading the latest MongoDB image to your local environment... -2026-01-30T15:27:58.3714256Z 3/3: Creating your deployment myLocalRs1... -2026-01-30T15:28:07.7721507Z Deployment created! -2026-01-30T15:28:07.7721833Z -2026-01-30T15:28:07.7721990Z connection skipped -2026-01-30T15:28:07.7722915Z Connection string: "mongodb://localhost:27017/?directConnection=true" diff --git a/Run Express Tests/5_Install MongoDB Database Tools to load sample data.txt b/Run Express Tests/5_Install MongoDB Database Tools to load sample data.txt deleted file mode 100644 index 3170b2a..0000000 --- a/Run Express Tests/5_Install MongoDB Database Tools to load sample data.txt +++ /dev/null @@ -1,59 +0,0 @@ -2026-01-30T15:28:07.7816611Z ##[group]Run curl https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2204-x86_64-100.13.0.deb --output mdb-db-tools.deb -2026-01-30T15:28:07.7817657Z curl https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2204-x86_64-100.13.0.deb --output mdb-db-tools.deb -2026-01-30T15:28:07.7818268Z sudo apt install ./mdb-db-tools.deb -2026-01-30T15:28:07.7850781Z shell: /usr/bin/bash -e {0} -2026-01-30T15:28:07.7851034Z ##[endgroup] -2026-01-30T15:28:07.7956711Z % Total % Received % Xferd Average Speed Time Time Time Current -2026-01-30T15:28:07.7958810Z Dload Upload Total Spent Left Speed -2026-01-30T15:28:07.7959400Z -2026-01-30T15:28:07.9015188Z 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 -2026-01-30T15:28:08.0314427Z 37 56.1M 37 20.8M 0 0 196M 0 --:--:-- --:--:-- --:--:-- 196M -2026-01-30T15:28:08.0315169Z 100 56.1M 100 56.1M 0 0 238M 0 --:--:-- --:--:-- --:--:-- 237M -2026-01-30T15:28:08.0440878Z -2026-01-30T15:28:08.0441414Z WARNING: apt does not have a stable CLI interface. Use with caution in scripts. -2026-01-30T15:28:08.0441781Z -2026-01-30T15:28:08.0863595Z Reading package lists... -2026-01-30T15:28:08.3362091Z Building dependency tree... -2026-01-30T15:28:08.3370172Z Reading state information... -2026-01-30T15:28:08.6238813Z The following NEW packages will be installed: -2026-01-30T15:28:08.6240436Z mongodb-database-tools -2026-01-30T15:28:08.6508047Z 0 upgraded, 1 newly installed, 0 to remove and 65 not upgraded. -2026-01-30T15:28:08.9299047Z Need to get 0 B/58.9 MB of archives. -2026-01-30T15:28:08.9299888Z After this operation, 0 B of additional disk space will be used. -2026-01-30T15:28:08.9300812Z Get:1 /home/runner/work/docs-sample-apps/docs-sample-apps/mdb-db-tools.deb mongodb-database-tools amd64 100.13.0 [58.9 MB] -2026-01-30T15:28:09.2262645Z Selecting previously unselected package mongodb-database-tools. -2026-01-30T15:28:09.2316639Z (Reading database ... -2026-01-30T15:28:09.2317150Z (Reading database ... 5% -2026-01-30T15:28:09.2317558Z (Reading database ... 10% -2026-01-30T15:28:09.2322901Z (Reading database ... 15% -2026-01-30T15:28:09.2323331Z (Reading database ... 20% -2026-01-30T15:28:09.2323730Z (Reading database ... 25% -2026-01-30T15:28:09.2324011Z (Reading database ... 30% -2026-01-30T15:28:09.2324263Z (Reading database ... 35% -2026-01-30T15:28:09.2324504Z (Reading database ... 40% -2026-01-30T15:28:09.2324748Z (Reading database ... 45% -2026-01-30T15:28:09.2324984Z (Reading database ... 50% -2026-01-30T15:28:09.2340396Z (Reading database ... 55% -2026-01-30T15:28:09.2460019Z (Reading database ... 60% -2026-01-30T15:28:09.2485702Z (Reading database ... 65% -2026-01-30T15:28:09.2503963Z (Reading database ... 70% -2026-01-30T15:28:09.2529831Z (Reading database ... 75% -2026-01-30T15:28:09.2571281Z (Reading database ... 80% -2026-01-30T15:28:09.2746027Z (Reading database ... 85% -2026-01-30T15:28:09.2799612Z (Reading database ... 90% -2026-01-30T15:28:09.3126179Z (Reading database ... 95% -2026-01-30T15:28:09.3126674Z (Reading database ... 100% -2026-01-30T15:28:09.3127182Z (Reading database ... 217642 files and directories currently installed.) -2026-01-30T15:28:09.3174196Z Preparing to unpack .../mdb-db-tools.deb ... -2026-01-30T15:28:09.3187791Z Unpacking mongodb-database-tools (100.13.0) ... -2026-01-30T15:28:10.3334028Z Setting up mongodb-database-tools (100.13.0) ... -2026-01-30T15:28:10.9204466Z -2026-01-30T15:28:10.9205272Z Running kernel seems to be up-to-date. -2026-01-30T15:28:10.9205686Z -2026-01-30T15:28:10.9205842Z No services need to be restarted. -2026-01-30T15:28:10.9206162Z -2026-01-30T15:28:10.9206306Z No containers need to be restarted. -2026-01-30T15:28:10.9206602Z -2026-01-30T15:28:10.9206784Z No user sessions are running outdated binaries. -2026-01-30T15:28:10.9207113Z -2026-01-30T15:28:10.9207417Z No VM guests are running outdated hypervisor (qemu) binaries on this host. diff --git a/Run Express Tests/6_Download sample data.txt b/Run Express Tests/6_Download sample data.txt deleted file mode 100644 index 2c073b4..0000000 --- a/Run Express Tests/6_Download sample data.txt +++ /dev/null @@ -1,17 +0,0 @@ -2026-01-30T15:28:12.1495194Z ##[group]Run curl https://atlas-education.s3.amazonaws.com/sampledata.archive -o sampledata.archive -2026-01-30T15:28:12.1495958Z curl https://atlas-education.s3.amazonaws.com/sampledata.archive -o sampledata.archive -2026-01-30T15:28:12.1527524Z shell: /usr/bin/bash -e {0} -2026-01-30T15:28:12.1527780Z ##[endgroup] -2026-01-30T15:28:12.1628509Z % Total % Received % Xferd Average Speed Time Time Time Current -2026-01-30T15:28:12.1629267Z Dload Upload Total Spent Left Speed -2026-01-30T15:28:12.1629659Z -2026-01-30T15:28:12.9531021Z 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 -2026-01-30T15:28:13.9110873Z 0 353M 0 1715k 0 0 2170k 0 0:02:46 --:--:-- 0:02:46 2168k -2026-01-30T15:28:14.9238727Z 12 353M 12 44.6M 0 0 25.5M 0 0:00:13 0:00:01 0:00:12 25.5M -2026-01-30T15:28:15.9462713Z 26 353M 26 93.3M 0 0 33.7M 0 0:00:10 0:00:02 0:00:08 33.7M -2026-01-30T15:28:16.9007762Z 39 353M 39 140M 0 0 37.2M 0 0:00:09 0:00:03 0:00:06 37.2M -2026-01-30T15:28:17.9010160Z 53 353M 53 187M 0 0 39.5M 0 0:00:08 0:00:04 0:00:04 39.5M -2026-01-30T15:28:18.9011052Z 66 353M 66 234M 0 0 40.7M 0 0:00:08 0:00:05 0:00:03 46.9M -2026-01-30T15:28:19.9010532Z 79 353M 79 282M 0 0 41.9M 0 0:00:08 0:00:06 0:00:02 47.6M -2026-01-30T15:28:20.4463614Z 93 353M 93 329M 0 0 42.6M 0 0:00:08 0:00:07 0:00:01 47.5M -2026-01-30T15:28:20.4464590Z 100 353M 100 353M 0 0 42.6M 0 0:00:08 0:00:08 --:--:-- 47.1M diff --git a/Run Express Tests/7_Add sample data to database.txt b/Run Express Tests/7_Add sample data to database.txt deleted file mode 100644 index 92ee608..0000000 --- a/Run Express Tests/7_Add sample data to database.txt +++ /dev/null @@ -1,110 +0,0 @@ -2026-01-30T15:28:20.4518835Z ##[group]Run mongorestore --archive=sampledata.archive --port=27017 -2026-01-30T15:28:20.4519356Z mongorestore --archive=sampledata.archive --port=27017 -2026-01-30T15:28:20.4550546Z shell: /usr/bin/bash -e {0} -2026-01-30T15:28:20.4550789Z ##[endgroup] -2026-01-30T15:28:20.4745790Z 2026-01-30T15:28:20.474+0000 preparing collections to restore from -2026-01-30T15:28:20.4771957Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.companies from archive 'sampledata.archive' -2026-01-30T15:28:20.4773514Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.embedded_movies from archive 'sampledata.archive' -2026-01-30T15:28:20.4774809Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_weatherdata.data from archive 'sampledata.archive' -2026-01-30T15:28:20.4776075Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.inspections from archive 'sampledata.archive' -2026-01-30T15:28:20.4777356Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.grades from archive 'sampledata.archive' -2026-01-30T15:28:20.4778663Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.routes from archive 'sampledata.archive' -2026-01-30T15:28:20.4779955Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_airbnb.listingsAndReviews from archive 'sampledata.archive' -2026-01-30T15:28:20.4781193Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.theaters from archive 'sampledata.archive' -2026-01-30T15:28:20.4782433Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_guides.planets from archive 'sampledata.archive' -2026-01-30T15:28:20.4783531Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_supplies.sales from archive 'sampledata.archive' -2026-01-30T15:28:20.4784521Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.zips from archive 'sampledata.archive' -2026-01-30T15:28:20.4785550Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.movies from archive 'sampledata.archive' -2026-01-30T15:28:20.4786626Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.users from archive 'sampledata.archive' -2026-01-30T15:28:20.4787845Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_restaurants.neighborhoods from archive 'sampledata.archive' -2026-01-30T15:28:20.4789020Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_analytics.transactions from archive 'sampledata.archive' -2026-01-30T15:28:20.4790127Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_analytics.accounts from archive 'sampledata.archive' -2026-01-30T15:28:20.4791262Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_analytics.customers from archive 'sampledata.archive' -2026-01-30T15:28:20.4792535Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.trips from archive 'sampledata.archive' -2026-01-30T15:28:20.4793428Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_training.posts from archive 'sampledata.archive' -2026-01-30T15:28:20.4794130Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_geospatial.shipwrecks from archive 'sampledata.archive' -2026-01-30T15:28:20.4794815Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.comments from archive 'sampledata.archive' -2026-01-30T15:28:20.4795475Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_mflix.sessions from archive 'sampledata.archive' -2026-01-30T15:28:20.4796147Z 2026-01-30T15:28:20.477+0000 reading metadata for sample_restaurants.restaurants from archive 'sampledata.archive' -2026-01-30T15:28:20.4856517Z 2026-01-30T15:28:20.485+0000 restoring sample_airbnb.listingsAndReviews from archive 'sampledata.archive' -2026-01-30T15:28:21.1878912Z 2026-01-30T15:28:21.187+0000 finished restoring sample_airbnb.listingsAndReviews (5555 documents, 0 failures) -2026-01-30T15:28:21.1956572Z 2026-01-30T15:28:21.195+0000 restoring sample_analytics.transactions from archive 'sampledata.archive' -2026-01-30T15:28:21.3165927Z 2026-01-30T15:28:21.316+0000 finished restoring sample_analytics.transactions (1746 documents, 0 failures) -2026-01-30T15:28:21.3270057Z 2026-01-30T15:28:21.326+0000 restoring sample_analytics.customers from archive 'sampledata.archive' -2026-01-30T15:28:21.3397670Z 2026-01-30T15:28:21.339+0000 finished restoring sample_analytics.customers (500 documents, 0 failures) -2026-01-30T15:28:21.3477446Z 2026-01-30T15:28:21.347+0000 restoring sample_analytics.accounts from archive 'sampledata.archive' -2026-01-30T15:28:21.3672032Z 2026-01-30T15:28:21.367+0000 finished restoring sample_analytics.accounts (1746 documents, 0 failures) -2026-01-30T15:28:21.3756564Z 2026-01-30T15:28:21.375+0000 restoring sample_geospatial.shipwrecks from archive 'sampledata.archive' -2026-01-30T15:28:21.5239733Z 2026-01-30T15:28:21.523+0000 finished restoring sample_geospatial.shipwrecks (11095 documents, 0 failures) -2026-01-30T15:28:21.5316509Z 2026-01-30T15:28:21.531+0000 restoring sample_guides.planets from archive 'sampledata.archive' -2026-01-30T15:28:21.5437881Z 2026-01-30T15:28:21.543+0000 finished restoring sample_guides.planets (8 documents, 0 failures) -2026-01-30T15:28:21.5528546Z 2026-01-30T15:28:21.552+0000 restoring sample_mflix.theaters from archive 'sampledata.archive' -2026-01-30T15:28:21.5771181Z 2026-01-30T15:28:21.576+0000 finished restoring sample_mflix.theaters (1564 documents, 0 failures) -2026-01-30T15:28:21.5856950Z 2026-01-30T15:28:21.585+0000 restoring sample_mflix.comments from archive 'sampledata.archive' -2026-01-30T15:28:22.1558531Z 2026-01-30T15:28:22.155+0000 finished restoring sample_mflix.comments (41079 documents, 0 failures) -2026-01-30T15:28:22.1615846Z 2026-01-30T15:28:22.161+0000 restoring sample_mflix.embedded_movies from archive 'sampledata.archive' -2026-01-30T15:28:22.4586053Z 2026-01-30T15:28:22.458+0000 finished restoring sample_mflix.embedded_movies (3483 documents, 0 failures) -2026-01-30T15:28:22.4647447Z 2026-01-30T15:28:22.464+0000 restoring sample_mflix.movies from archive 'sampledata.archive' -2026-01-30T15:28:23.0024199Z 2026-01-30T15:28:23.002+0000 finished restoring sample_mflix.movies (21349 documents, 0 failures) -2026-01-30T15:28:23.0092346Z 2026-01-30T15:28:23.009+0000 restoring sample_mflix.sessions from archive 'sampledata.archive' -2026-01-30T15:28:23.0211928Z 2026-01-30T15:28:23.020+0000 finished restoring sample_mflix.sessions (1 document, 0 failures) -2026-01-30T15:28:23.0297503Z 2026-01-30T15:28:23.029+0000 restoring sample_mflix.users from archive 'sampledata.archive' -2026-01-30T15:28:23.0402519Z 2026-01-30T15:28:23.039+0000 finished restoring sample_mflix.users (185 documents, 0 failures) -2026-01-30T15:28:23.0488159Z 2026-01-30T15:28:23.048+0000 restoring sample_restaurants.neighborhoods from archive 'sampledata.archive' -2026-01-30T15:28:23.0782534Z 2026-01-30T15:28:23.078+0000 finished restoring sample_restaurants.neighborhoods (195 documents, 0 failures) -2026-01-30T15:28:23.0867488Z 2026-01-30T15:28:23.086+0000 restoring sample_restaurants.restaurants from archive 'sampledata.archive' -2026-01-30T15:28:23.4686968Z 2026-01-30T15:28:23.468+0000 sample_restaurants.restaurants 10.1MB -2026-01-30T15:28:23.4720236Z 2026-01-30T15:28:23.471+0000 sample_restaurants.restaurants 10.1MB -2026-01-30T15:28:23.4721345Z 2026-01-30T15:28:23.471+0000 finished restoring sample_restaurants.restaurants (25359 documents, 0 failures) -2026-01-30T15:28:23.4786213Z 2026-01-30T15:28:23.478+0000 restoring sample_supplies.sales from archive 'sampledata.archive' -2026-01-30T15:28:23.5635407Z 2026-01-30T15:28:23.563+0000 finished restoring sample_supplies.sales (5000 documents, 0 failures) -2026-01-30T15:28:23.5706540Z 2026-01-30T15:28:23.570+0000 restoring sample_training.routes from archive 'sampledata.archive' -2026-01-30T15:28:24.3381933Z 2026-01-30T15:28:24.337+0000 finished restoring sample_training.routes (66985 documents, 0 failures) -2026-01-30T15:28:24.3437307Z 2026-01-30T15:28:24.343+0000 restoring sample_training.trips from archive 'sampledata.archive' -2026-01-30T15:28:24.4834197Z 2026-01-30T15:28:24.483+0000 finished restoring sample_training.trips (10000 documents, 0 failures) -2026-01-30T15:28:24.4895669Z 2026-01-30T15:28:24.489+0000 restoring sample_training.posts from archive 'sampledata.archive' -2026-01-30T15:28:24.5911592Z 2026-01-30T15:28:24.590+0000 finished restoring sample_training.posts (500 documents, 0 failures) -2026-01-30T15:28:24.5966032Z 2026-01-30T15:28:24.596+0000 restoring sample_training.companies from archive 'sampledata.archive' -2026-01-30T15:28:24.9876956Z 2026-01-30T15:28:24.987+0000 finished restoring sample_training.companies (9500 documents, 0 failures) -2026-01-30T15:28:24.9936872Z 2026-01-30T15:28:24.993+0000 restoring sample_training.inspections from archive 'sampledata.archive' -2026-01-30T15:28:26.0450175Z 2026-01-30T15:28:26.044+0000 finished restoring sample_training.inspections (80047 documents, 0 failures) -2026-01-30T15:28:26.0508930Z 2026-01-30T15:28:26.050+0000 restoring sample_training.zips from archive 'sampledata.archive' -2026-01-30T15:28:26.3560787Z 2026-01-30T15:28:26.355+0000 finished restoring sample_training.zips (29470 documents, 0 failures) -2026-01-30T15:28:26.3697611Z 2026-01-30T15:28:26.369+0000 restoring sample_training.grades from archive 'sampledata.archive' -2026-01-30T15:28:26.4682847Z 2026-01-30T15:28:26.468+0000 sample_training.grades 1.96MB -2026-01-30T15:28:27.5184507Z 2026-01-30T15:28:27.518+0000 sample_training.grades 22.2MB -2026-01-30T15:28:27.5185494Z 2026-01-30T15:28:27.518+0000 finished restoring sample_training.grades (100000 documents, 0 failures) -2026-01-30T15:28:27.5264673Z 2026-01-30T15:28:27.526+0000 restoring sample_weatherdata.data from archive 'sampledata.archive' -2026-01-30T15:28:27.7636485Z 2026-01-30T15:28:27.763+0000 finished restoring sample_weatherdata.data (10000 documents, 0 failures) -2026-01-30T15:28:27.7637625Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_guides.planets -2026-01-30T15:28:27.7643157Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_analytics.transactions -2026-01-30T15:28:27.7644114Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_analytics.accounts -2026-01-30T15:28:27.7645087Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_analytics.customers -2026-01-30T15:28:27.7646165Z 2026-01-30T15:28:27.763+0000 restoring indexes for collection sample_geospatial.shipwrecks from metadata -2026-01-30T15:28:27.7648366Z 2026-01-30T15:28:27.763+0000 index: &idx.IndexDocument{Options:primitive.M{"2dsphereIndexVersion":3, "background":true, "name":"coordinates_2dsphere", "v":2}, Key:primitive.D{primitive.E{Key:"coordinates", Value:"2dsphere"}}, PartialFilterExpression:primitive.D(nil)} -2026-01-30T15:28:27.7650427Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_supplies.sales -2026-01-30T15:28:27.7651347Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.trips -2026-01-30T15:28:27.7652422Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.posts -2026-01-30T15:28:27.7653538Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.companies -2026-01-30T15:28:27.7654510Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.inspections -2026-01-30T15:28:27.7655462Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.grades -2026-01-30T15:28:27.7656377Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.routes -2026-01-30T15:28:27.7657256Z 2026-01-30T15:28:27.763+0000 no indexes to restore for collection sample_training.zips -2026-01-30T15:28:27.7658215Z 2026-01-30T15:28:27.763+0000 restoring indexes for collection sample_mflix.theaters from metadata -2026-01-30T15:28:27.7660069Z 2026-01-30T15:28:27.763+0000 index: &idx.IndexDocument{Options:primitive.M{"2dsphereIndexVersion":3, "name":"geo index", "v":2}, Key:primitive.D{primitive.E{Key:"location.geo", Value:"2dsphere"}}, PartialFilterExpression:primitive.D(nil)} -2026-01-30T15:28:27.7661999Z 2026-01-30T15:28:27.763+0000 restoring indexes for collection sample_mflix.movies from metadata -2026-01-30T15:28:27.7665412Z 2026-01-30T15:28:27.763+0000 index: &idx.IndexDocument{Options:primitive.M{"default_language":"english", "language_override":"language", "name":"cast_text_fullplot_text_genres_text_title_text", "textIndexVersion":3, "v":2, "weights":primitive.M{"cast":1, "fullplot":1, "genres":1, "title":1}}, Key:primitive.D{primitive.E{Key:"_fts", Value:"text"}, primitive.E{Key:"_ftsx", Value:1}}, PartialFilterExpression:primitive.D(nil)} -2026-01-30T15:28:27.7675527Z 2026-01-30T15:28:27.764+0000 restoring indexes for collection sample_mflix.users from metadata -2026-01-30T15:28:27.7677444Z 2026-01-30T15:28:27.764+0000 index: &idx.IndexDocument{Options:primitive.M{"name":"email_1", "unique":true, "v":2}, Key:primitive.D{primitive.E{Key:"email", Value:1}}, PartialFilterExpression:primitive.D(nil)} -2026-01-30T15:28:27.8810257Z 2026-01-30T15:28:27.880+0000 no indexes to restore for collection sample_mflix.comments -2026-01-30T15:28:27.8812578Z 2026-01-30T15:28:27.880+0000 restoring indexes for collection sample_mflix.sessions from metadata -2026-01-30T15:28:27.8814433Z 2026-01-30T15:28:27.880+0000 index: &idx.IndexDocument{Options:primitive.M{"name":"user_id_1", "unique":true, "v":2}, Key:primitive.D{primitive.E{Key:"user_id", Value:1}}, PartialFilterExpression:primitive.D(nil)} -2026-01-30T15:28:27.9074638Z 2026-01-30T15:28:27.907+0000 no indexes to restore for collection sample_mflix.embedded_movies -2026-01-30T15:28:27.9075924Z 2026-01-30T15:28:27.907+0000 no indexes to restore for collection sample_weatherdata.data -2026-01-30T15:28:27.9077173Z 2026-01-30T15:28:27.907+0000 restoring indexes for collection sample_airbnb.listingsAndReviews from metadata -2026-01-30T15:28:27.9079465Z 2026-01-30T15:28:27.907+0000 index: &idx.IndexDocument{Options:primitive.M{"2dsphereIndexVersion":3, "background":true, "name":"address.location_2dsphere", "v":2}, Key:primitive.D{primitive.E{Key:"address.location", Value:"2dsphere"}}, PartialFilterExpression:primitive.D(nil)} -2026-01-30T15:28:27.9083222Z 2026-01-30T15:28:27.907+0000 index: &idx.IndexDocument{Options:primitive.M{"background":true, "name":"property_type_1_room_type_1_beds_1", "v":2}, Key:primitive.D{primitive.E{Key:"property_type", Value:1}, primitive.E{Key:"room_type", Value:1}, primitive.E{Key:"beds", Value:1}}, PartialFilterExpression:primitive.D(nil)} -2026-01-30T15:28:27.9086303Z 2026-01-30T15:28:27.907+0000 index: &idx.IndexDocument{Options:primitive.M{"background":true, "name":"name_1", "v":2}, Key:primitive.D{primitive.E{Key:"name", Value:1}}, PartialFilterExpression:primitive.D(nil)} -2026-01-30T15:28:27.9162068Z 2026-01-30T15:28:27.915+0000 no indexes to restore for collection sample_restaurants.neighborhoods -2026-01-30T15:28:27.9163253Z 2026-01-30T15:28:27.916+0000 no indexes to restore for collection sample_restaurants.restaurants -2026-01-30T15:28:30.0014322Z 2026-01-30T15:28:30.001+0000 425367 document(s) restored successfully. 0 document(s) failed to restore. diff --git a/Run Express Tests/8_Set up Node.js.txt b/Run Express Tests/8_Set up Node.js.txt deleted file mode 100644 index 920ce94..0000000 --- a/Run Express Tests/8_Set up Node.js.txt +++ /dev/null @@ -1,13 +0,0 @@ -2026-01-30T15:28:30.0169930Z ##[group]Run actions/setup-node@v4 -2026-01-30T15:28:30.0170232Z with: -2026-01-30T15:28:30.0170418Z node-version: 20 -2026-01-30T15:28:30.0170628Z always-auth: false -2026-01-30T15:28:30.0170831Z check-latest: false -2026-01-30T15:28:30.0171160Z token: *** -2026-01-30T15:28:30.0171341Z ##[endgroup] -2026-01-30T15:28:30.2006751Z Found in cache @ /opt/hostedtoolcache/node/20.20.0/x64 -2026-01-30T15:28:30.2013928Z ##[group]Environment details -2026-01-30T15:28:30.5684044Z node: v20.20.0 -2026-01-30T15:28:30.5684439Z npm: 10.8.2 -2026-01-30T15:28:30.5684726Z yarn: 1.22.22 -2026-01-30T15:28:30.5686077Z ##[endgroup] diff --git a/Run Express Tests/9_Install dependencies.txt b/Run Express Tests/9_Install dependencies.txt deleted file mode 100644 index dbf0d0e..0000000 --- a/Run Express Tests/9_Install dependencies.txt +++ /dev/null @@ -1,16 +0,0 @@ -2026-01-30T15:28:30.5799329Z ##[group]Run npm install -2026-01-30T15:28:30.5799621Z npm install -2026-01-30T15:28:30.5841689Z shell: /usr/bin/bash -e {0} -2026-01-30T15:28:30.5841951Z ##[endgroup] -2026-01-30T15:28:40.1228985Z npm warn deprecated lodash.get@4.4.2: This package is deprecated. Use the optional chaining (?.) operator instead. -2026-01-30T15:28:40.2170959Z npm warn deprecated lodash.isequal@4.5.0: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. -2026-01-30T15:28:40.8518691Z npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. -2026-01-30T15:28:41.1380084Z npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported -2026-01-30T15:28:41.5227124Z npm warn deprecated glob@7.1.6: Glob versions prior to v9 are no longer supported -2026-01-30T15:28:43.3037387Z -2026-01-30T15:28:43.3038559Z added 456 packages, and audited 457 packages in 13s -2026-01-30T15:28:43.3039413Z -2026-01-30T15:28:43.3039997Z 63 packages are looking for funding -2026-01-30T15:28:43.3046737Z run `npm fund` for details -2026-01-30T15:28:43.3053062Z -2026-01-30T15:28:43.3053351Z found 0 vulnerabilities diff --git a/Run Express Tests/system.txt b/Run Express Tests/system.txt deleted file mode 100644 index 76939ab..0000000 --- a/Run Express Tests/system.txt +++ /dev/null @@ -1,8 +0,0 @@ -2026-01-30T15:27:32.4410000Z Requested labels: ubuntu-latest -2026-01-30T15:27:32.4410000Z Job defined at: mongodb/docs-sample-apps/.github/workflows/run-express-tests.yml@refs/pull/80/merge -2026-01-30T15:27:32.4410000Z Waiting for a runner to pick up this job... -2026-01-30T15:27:32.4400000Z Evaluating test.if -2026-01-30T15:27:32.4400000Z Evaluating: success() -2026-01-30T15:27:32.4400000Z Result: true -2026-01-30T15:27:32.8490000Z Job is about to start running on the hosted runner: GitHub Actions 1001292803 -2026-01-30T15:27:32.8490000Z Job is waiting for a hosted runner to come online. \ No newline at end of file