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 89a3d13..6296b1b 100644 --- a/mflix/client/app/aggregations/aggregations.module.css +++ b/mflix/client/app/aggregations/aggregations.module.css @@ -1,42 +1,53 @@ -/* 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); } .tableContainer { @@ -47,31 +58,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: #F7FAFC; } .movieTitle { font-weight: 600; - color: #2c3e50; + color: var(--mongodb-slate); max-width: 200px; word-wrap: break-word; } @@ -96,9 +110,9 @@ .comment { margin-bottom: 0.75rem; padding: 0.5rem; - background: #f8f9fa; - border-radius: 4px; - border-left: 3px solid #3498db; + background: #F7FAFC; + border-radius: var(--radius-md); + border-left: 2px solid var(--color-border); } .comment:last-child { @@ -107,14 +121,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..04c6cdb --- /dev/null +++ b/mflix/client/app/components/ExpandableTable/ExpandableTable.module.css @@ -0,0 +1,109 @@ +.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.625rem 1.25rem; + background: transparent; + color: var(--color-text-secondary); + border: none; + border-radius: 50px; + font-size: 0.9375rem; + font-weight: 500; + letter-spacing: 0.01em; + cursor: pointer; + transition: all 0.2s ease; + position: relative; +} + +.expandButton:hover { + color: var(--mongodb-forest); + background: #F7FAFC; +} + +.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..ab84365 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(--color-border); } .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: #F7FAFC; + border-color: var(--color-text-secondary); + color: var(--color-text-secondary); + 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(--color-text-secondary); } .filterSelect:focus, .filterInput:focus { outline: none; - border-color: #3b82f6; - box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.15); + border-color: var(--color-text-secondary); + box-shadow: 0 0 0 3px rgba(74, 85, 104, 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(--color-border); } .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..2baa7c2 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,43 +14,41 @@ } .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; + /* Enforce consistent card heights using flexbox */ + display: flex; + flex-direction: column; } -.movieCard:hover { - transform: translateY(-2px); - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); +/* Make card clickable when in selection mode */ +.movieCard.selectable { + cursor: pointer; } -.movieCard.selected { - border-color: #0070f3; - box-shadow: 0 2px 4px rgba(0, 112, 243, 0.2); +/* Lighter hover state - subtle background tint only */ +.movieCard:hover { + background: rgba(0, 104, 74, 0.02); } -.selectionCheckbox { - position: absolute; - top: 12px; - right: 12px; - z-index: 2; - display: flex; - align-items: center; - gap: 4px; - background: rgba(255, 255, 255, 0.9); - padding: 4px 8px; - border-radius: 4px; - font-size: 12px; +/* 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; } -.checkbox { - width: 16px; - height: 16px; - cursor: pointer; +/* Selected state overrides hover */ +.movieCard.selected:hover { + background: var(--mongodb-mint); } .moviePoster { @@ -58,13 +56,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,91 +72,109 @@ 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 { margin-bottom: 16px; + /* Allow this section to grow and push button to bottom */ + flex: 1; } .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); + /* Keep button at bottom of card */ + margin-top: auto; } .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/MovieCard/MovieCard.tsx b/mflix/client/app/components/MovieCard/MovieCard.tsx index 7fa702c..e659577 100644 --- a/mflix/client/app/components/MovieCard/MovieCard.tsx +++ b/mflix/client/app/components/MovieCard/MovieCard.tsx @@ -27,26 +27,24 @@ 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 + const target = e.target as HTMLElement; + if (target.closest('a')) { + return; + } + + if (showCheckbox && onSelectionChange) { + onSelectionChange(movie._id, !isSelected); } }; return ( -
- {showCheckbox && ( -
- -
- )} - +
{movie.poster ? ( )} - {/* 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 + + +
+
+ + +
+
+
+ )}
);