From f3e61bd060206d5fa8bdc67f0873664039f28b22 Mon Sep 17 00:00:00 2001 From: tomohiro-sawada Date: Mon, 9 Oct 2023 17:33:07 -0400 Subject: [PATCH] Refactored API --- declarations.d.ts | 1 + package-lock.json | 203 ++++++++---------- package.json | 4 +- src/pages/api/check-connection.ts | 37 ++++ src/pages/api/lawProblem.ts | 11 +- src/pages/api/lib_2/math/numerical/[id].ts | 4 +- src/pages/api/lib_2/math/numerical/index.ts | 4 +- src/pages/api/lib_2/math/prooflike/[id].ts | 4 +- src/pages/api/lib_2/math/prooflike/index.ts | 4 +- src/pages/api/lib_2/math/symbolic/[id].ts | 4 +- src/pages/api/lib_2/math/symbolic/index.ts | 4 +- src/pages/api/lib_2/mcatReading/val/[id].ts | 4 +- src/pages/api/lib_2/mcatReading/val/index.ts | 4 +- .../api/lib_2/mcatScience/val/img/[id].ts | 4 +- .../api/lib_2/mcatScience/val/img/index.ts | 4 +- .../api/lib_2/mcatScience/val/val/[id].ts | 4 +- .../api/lib_2/mcatScience/val/val/index.ts | 4 +- .../api/lib_2/physics/numerical/img/[id].ts | 4 +- .../api/lib_2/physics/numerical/img/index.ts | 4 +- .../api/lib_2/physics/numerical/val/[id].ts | 4 +- .../api/lib_2/physics/numerical/val/index.ts | 4 +- src/screens/Home/Home.tsx | 20 +- src/server/mongodb/actions/lawProblem.js | 47 ++-- src/server/mongodb/actions/mathPhysics.js | 24 +-- src/server/mongodb/connectDb.js | 10 +- src/server/mongodb/models/law_problem.js | 27 ++- src/server/mongodb/models/math_physics.js | 34 +-- yarn.lock | 132 ++++++------ 28 files changed, 325 insertions(+), 289 deletions(-) create mode 100644 declarations.d.ts create mode 100644 src/pages/api/check-connection.ts diff --git a/declarations.d.ts b/declarations.d.ts new file mode 100644 index 0000000..b886af9 --- /dev/null +++ b/declarations.d.ts @@ -0,0 +1 @@ +declare module "../../../../server/mongodb/actions/mathPhysics"; diff --git a/package-lock.json b/package-lock.json index 48d4c0f..beb58d3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,14 +20,14 @@ "dotenv": "^16.3.1", "eslint": "8.44.0", "eslint-config-next": "13.4.9", - "extract-mongo-schema": "^0.2.11", + "extract-mongo-schema": "^0.2.12", "framer-motion": "^10.13.0", "husky": "^8.0.3", "lint-staged": "^13.2.3", "lodash": "^4.17.21", "mongoose": "^7.3.3", "next": "^13.4.9", - "postcss": "8.4.25", + "postcss": "^8.4.31", "prettier": "^3.0.0", "react": "18.2.0", "react-dom": "18.2.0", @@ -1617,10 +1617,19 @@ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.0.tgz", + "integrity": "sha512-Xfijy7HvfzzqiOAhAepF4SGN5e9leLkMvg/OPOF97XemjfVCYN/oWa75wnkc6mltMSTwY+XlbhWgUOJmkFspSw==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, "node_modules/@next/env": { - "version": "13.4.9", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.9.tgz", - "integrity": "sha512-vuDRK05BOKfmoBYLNi2cujG2jrYbEod/ubSSyqgmEx9n/W3eZaJQdRNhTfumO+qmq/QTzLurW487n/PM/fHOkw==" + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/@next/env/-/env-13.5.4.tgz", + "integrity": "sha512-LGegJkMvRNw90WWphGJ3RMHMVplYcOfRWf2Be3td3sUa+1AaxmsYyANsA+znrGCBjXJNi4XAQlSoEfUxs/4kIQ==" }, "node_modules/@next/eslint-plugin-next": { "version": "13.4.9", @@ -1636,9 +1645,9 @@ "integrity": "sha512-w/ygNFuscvvFKFTMoIqhU8Kaq1wM6x4XEu9bwzJaj8G7aloH866TUPeCgiKf+M/ACpMKfRahQa06REcg6T3CyA==" }, "node_modules/@next/swc-darwin-arm64": { - "version": "13.4.9", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.9.tgz", - "integrity": "sha512-TVzGHpZoVBk3iDsTOQA/R6MGmFp0+17SWXMEWd6zG30AfuELmSSMe2SdPqxwXU0gbpWkJL1KgfLzy5ReN0crqQ==", + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.4.tgz", + "integrity": "sha512-Df8SHuXgF1p+aonBMcDPEsaahNo2TCwuie7VXED4FVyECvdXfRT9unapm54NssV9tF3OQFKBFOdlje4T43VO0w==", "cpu": [ "arm64" ], @@ -1651,9 +1660,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "13.4.9", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.9.tgz", - "integrity": "sha512-aSfF1fhv28N2e7vrDZ6zOQ+IIthocfaxuMWGReB5GDriF0caTqtHttAvzOMgJgXQtQx6XhyaJMozLTSEXeNN+A==", + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.4.tgz", + "integrity": "sha512-siPuUwO45PnNRMeZnSa8n/Lye5ZX93IJom9wQRB5DEOdFrw0JjOMu1GINB8jAEdwa7Vdyn1oJ2xGNaQpdQQ9Pw==", "cpu": [ "x64" ], @@ -1666,9 +1675,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "13.4.9", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.9.tgz", - "integrity": "sha512-JhKoX5ECzYoTVyIy/7KykeO4Z2lVKq7HGQqvAH+Ip9UFn1MOJkOnkPRB7v4nmzqAoY+Je05Aj5wNABR1N18DMg==", + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.4.tgz", + "integrity": "sha512-l/k/fvRP/zmB2jkFMfefmFkyZbDkYW0mRM/LB+tH5u9pB98WsHXC0WvDHlGCYp3CH/jlkJPL7gN8nkTQVrQ/2w==", "cpu": [ "arm64" ], @@ -1681,9 +1690,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "13.4.9", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.9.tgz", - "integrity": "sha512-OOn6zZBIVkm/4j5gkPdGn4yqQt+gmXaLaSjRSO434WplV8vo2YaBNbSHaTM9wJpZTHVDYyjzuIYVEzy9/5RVZw==", + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.4.tgz", + "integrity": "sha512-YYGb7SlLkI+XqfQa8VPErljb7k9nUnhhRrVaOdfJNCaQnHBcvbT7cx/UjDQLdleJcfyg1Hkn5YSSIeVfjgmkTg==", "cpu": [ "arm64" ], @@ -1696,9 +1705,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "13.4.9", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.9.tgz", - "integrity": "sha512-iA+fJXFPpW0SwGmx/pivVU+2t4zQHNOOAr5T378PfxPHY6JtjV6/0s1vlAJUdIHeVpX98CLp9k5VuKgxiRHUpg==", + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.4.tgz", + "integrity": "sha512-uE61vyUSClnCH18YHjA8tE1prr/PBFlBFhxBZis4XBRJoR+txAky5d7gGNUIbQ8sZZ7LVkSVgm/5Fc7mwXmRAg==", "cpu": [ "x64" ], @@ -1711,9 +1720,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "13.4.9", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.9.tgz", - "integrity": "sha512-rlNf2WUtMM+GAQrZ9gMNdSapkVi3koSW3a+dmBVp42lfugWVvnyzca/xJlN48/7AGx8qu62WyO0ya1ikgOxh6A==", + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.4.tgz", + "integrity": "sha512-qVEKFYML/GvJSy9CfYqAdUexA6M5AklYcQCW+8JECmkQHGoPxCf04iMh7CPR7wkHyWWK+XLt4Ja7hhsPJtSnhg==", "cpu": [ "x64" ], @@ -1726,9 +1735,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "13.4.9", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.9.tgz", - "integrity": "sha512-5T9ybSugXP77nw03vlgKZxD99AFTHaX8eT1ayKYYnGO9nmYhJjRPxcjU5FyYI+TdkQgEpIcH7p/guPLPR0EbKA==", + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.4.tgz", + "integrity": "sha512-mDSQfqxAlfpeZOLPxLymZkX0hYF3juN57W6vFHTvwKlnHfmh12Pt7hPIRLYIShk8uYRsKPtMTth/EzpwRI+u8w==", "cpu": [ "arm64" ], @@ -1741,9 +1750,9 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "13.4.9", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.9.tgz", - "integrity": "sha512-ojZTCt1lP2ucgpoiFgrFj07uq4CZsq4crVXpLGgQfoFq00jPKRPgesuGPaz8lg1yLfvafkU3Jd1i8snKwYR3LA==", + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.4.tgz", + "integrity": "sha512-aoqAT2XIekIWoriwzOmGFAvTtVY5O7JjV21giozBTP5c6uZhpvTWRbmHXbmsjZqY4HnEZQRXWkSAppsIBweKqw==", "cpu": [ "ia32" ], @@ -1756,9 +1765,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "13.4.9", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.9.tgz", - "integrity": "sha512-QbT03FXRNdpuL+e9pLnu+XajZdm/TtIXVYY4lA9t+9l0fLZbHXDYEKitAqxrOj37o3Vx5ufxiRAniaIebYDCgw==", + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.4.tgz", + "integrity": "sha512-cyRvlAxwlddlqeB9xtPSfNSCRy8BOa4wtMo0IuI9P7Y0XT2qpDrpFKRyZ7kUngZis59mPVla5k8X1oOJ8RxDYg==", "cpu": [ "x64" ], @@ -1836,9 +1845,9 @@ "integrity": "sha512-V+MvGwaHH03hYhY+k6Ef/xKd6RYlc4q8WBx+2ANmipHJcKuktNcI/NgEsJgdSUF6Lw32njT6OnrRsKYCdgHjYw==" }, "node_modules/@swc/helpers": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.1.tgz", - "integrity": "sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz", + "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==", "dependencies": { "tslib": "^2.4.0" } @@ -1900,9 +1909,9 @@ "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" }, "node_modules/@types/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.1.tgz", + "integrity": "sha512-8hKOnOan+Uu+NgMaCouhg3cT9x5fFZ92Jwf+uDLXLu/MFRbXxlWwGeQY7KVHkeSft6RvY+tdxklUBuyY9eIEKg==" }, "node_modules/@types/whatwg-url": { "version": "8.2.2", @@ -3565,9 +3574,9 @@ } }, "node_modules/extract-mongo-schema": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/extract-mongo-schema/-/extract-mongo-schema-0.2.11.tgz", - "integrity": "sha512-tH08u0xAvMzfGOjPJTMm/GrmtMBl0Vi9n+ylLIKhjHSo+ECXgvQJsvo2nPYURD+HkJD5yB1k34CLkmd6niVSRA==", + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/extract-mongo-schema/-/extract-mongo-schema-0.2.12.tgz", + "integrity": "sha512-zkzRy8cD15GMfPh80A/a2D6ZVmlLFXLgsZxeoKUtoEbf34YTDvTkqCaJqeEv94gRN5D71AC3i1eTsfYg04VPtw==", "dependencies": { "command-line-args": "^3.0.5", "fs": "0.0.1-security", @@ -5041,13 +5050,13 @@ } }, "node_modules/mongoose": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.3.3.tgz", - "integrity": "sha512-g4NrRGIUEUYLeScaSChQR8i4Dlk9lR0UJzkK3r6TPJyqJ6ZWdRVP3oXfOG9Yn+hNeKcCJKfVEHo+jsU1rh3YTA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.6.0.tgz", + "integrity": "sha512-ztQ12rm0BQN5i7LB6xhWX4l9a9w2aa3jEwa/mM2vAutYJRyAwOzcusvKJBULMzFHyUDBOVW15grisexypgMIWA==", "dependencies": { - "bson": "^5.3.0", + "bson": "^5.4.0", "kareem": "2.5.1", - "mongodb": "5.6.0", + "mongodb": "5.9.0", "mpath": "0.9.0", "mquery": "5.0.0", "ms": "2.1.3", @@ -5062,19 +5071,19 @@ } }, "node_modules/mongoose/node_modules/bson": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-5.4.0.tgz", - "integrity": "sha512-WRZ5SQI5GfUuKnPTNmAYPiKIof3ORXAF4IRU5UcgmivNIon01rWQlw5RUH954dpu8yGL8T59YShVddIPaU/gFA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-5.5.0.tgz", + "integrity": "sha512-B+QB4YmDx9RStKv8LLSl/aVIEV3nYJc3cJNNTK2Cd1TL+7P+cNpw9mAPeCgc5K+j01Dv6sxUzcITXDx7ZU3F0w==", "engines": { "node": ">=14.20.1" } }, "node_modules/mongoose/node_modules/mongodb": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.6.0.tgz", - "integrity": "sha512-z8qVs9NfobHJm6uzK56XBZF8XwM9H294iRnB7wNjF0SnY93si5HPziIJn+qqvUR5QOff/4L0gCD6SShdR/GtVQ==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.9.0.tgz", + "integrity": "sha512-g+GCMHN1CoRUA+wb1Agv0TI4YTSiWr42B5ulkiAfLLHitGK1R+PkSAf3Lr5rPZwi/3F04LiaZEW0Kxro9Fi2TA==", "dependencies": { - "bson": "^5.3.0", + "bson": "^5.5.0", "mongodb-connection-string-url": "^2.6.0", "socks": "^2.7.1" }, @@ -5082,10 +5091,12 @@ "node": ">=14.20.1" }, "optionalDependencies": { - "saslprep": "^1.0.3" + "@mongodb-js/saslprep": "^1.1.0" }, "peerDependencies": { - "@aws-sdk/credential-providers": "^3.201.0", + "@aws-sdk/credential-providers": "^3.188.0", + "@mongodb-js/zstd": "^1.0.0", + "kerberos": "^1.0.0 || ^2.0.0", "mongodb-client-encryption": ">=2.3.0 <3", "snappy": "^7.2.2" }, @@ -5093,6 +5104,12 @@ "@aws-sdk/credential-providers": { "optional": true }, + "@mongodb-js/zstd": { + "optional": true + }, + "kerberos": { + "optional": true + }, "mongodb-client-encryption": { "optional": true }, @@ -5163,39 +5180,37 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, "node_modules/next": { - "version": "13.4.9", - "resolved": "https://registry.npmjs.org/next/-/next-13.4.9.tgz", - "integrity": "sha512-vtefFm/BWIi/eWOqf1GsmKG3cjKw1k3LjuefKRcL3iiLl3zWzFdPG3as6xtxrGO6gwTzzaO1ktL4oiHt/uvTjA==", + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/next/-/next-13.5.4.tgz", + "integrity": "sha512-+93un5S779gho8y9ASQhb/bTkQF17FNQOtXLKAj3lsNgltEcF0C5PMLLncDmH+8X1EnJH1kbqAERa29nRXqhjA==", "dependencies": { - "@next/env": "13.4.9", - "@swc/helpers": "0.5.1", + "@next/env": "13.5.4", + "@swc/helpers": "0.5.2", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001406", - "postcss": "8.4.14", + "postcss": "8.4.31", "styled-jsx": "5.1.1", - "watchpack": "2.4.0", - "zod": "3.21.4" + "watchpack": "2.4.0" }, "bin": { "next": "dist/bin/next" }, "engines": { - "node": ">=16.8.0" + "node": ">=16.14.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "13.4.9", - "@next/swc-darwin-x64": "13.4.9", - "@next/swc-linux-arm64-gnu": "13.4.9", - "@next/swc-linux-arm64-musl": "13.4.9", - "@next/swc-linux-x64-gnu": "13.4.9", - "@next/swc-linux-x64-musl": "13.4.9", - "@next/swc-win32-arm64-msvc": "13.4.9", - "@next/swc-win32-ia32-msvc": "13.4.9", - "@next/swc-win32-x64-msvc": "13.4.9" + "@next/swc-darwin-arm64": "13.5.4", + "@next/swc-darwin-x64": "13.5.4", + "@next/swc-linux-arm64-gnu": "13.5.4", + "@next/swc-linux-arm64-musl": "13.5.4", + "@next/swc-linux-x64-gnu": "13.5.4", + "@next/swc-linux-x64-musl": "13.5.4", + "@next/swc-win32-arm64-msvc": "13.5.4", + "@next/swc-win32-ia32-msvc": "13.5.4", + "@next/swc-win32-x64-msvc": "13.5.4" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", - "fibers": ">= 3.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", "sass": "^1.3.0" @@ -5204,37 +5219,11 @@ "@opentelemetry/api": { "optional": true }, - "fibers": { - "optional": true - }, "sass": { "optional": true } } }, - "node_modules/next/node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, "node_modules/node-releases": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", @@ -5613,9 +5602,9 @@ } }, "node_modules/postcss": { - "version": "8.4.25", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.25.tgz", - "integrity": "sha512-7taJ/8t2av0Z+sQEvNzCkpDynl0tX3uJMCODi6nT3PfASC7dYCWV9aQ+uiCf+KBD4SEFcu+GvJdGdwzQ6OSjCw==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "funding": [ { "type": "opencollective", @@ -7276,14 +7265,6 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } - }, - "node_modules/zod": { - "version": "3.21.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", - "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } } } } diff --git a/package.json b/package.json index 0b1ae61..35528e1 100644 --- a/package.json +++ b/package.json @@ -21,14 +21,14 @@ "dotenv": "^16.3.1", "eslint": "8.44.0", "eslint-config-next": "13.4.9", - "extract-mongo-schema": "^0.2.11", + "extract-mongo-schema": "^0.2.12", "framer-motion": "^10.13.0", "husky": "^8.0.3", "lint-staged": "^13.2.3", "lodash": "^4.17.21", "mongoose": "^7.3.3", "next": "^13.4.9", - "postcss": "8.4.25", + "postcss": "^8.4.31", "prettier": "^3.0.0", "react": "18.2.0", "react-dom": "18.2.0", diff --git a/src/pages/api/check-connection.ts b/src/pages/api/check-connection.ts new file mode 100644 index 0000000..e06cc25 --- /dev/null +++ b/src/pages/api/check-connection.ts @@ -0,0 +1,37 @@ +import type { NextApiRequest, NextApiResponse } from "next"; +import mongoose from "mongoose"; +import connectDb from "../../server/mongodb/connectDb"; + +const handler = async (req: NextApiRequest, res: NextApiResponse) => { + let mongooseStateMessage: string; + const state = mongoose.connection.readyState; + + switch (state) { + case 0: // disconnected + mongooseStateMessage = "MongoDB is disconnected."; + break; + case 1: // connected + mongooseStateMessage = "MongoDB is connected."; + break; + case 2: // connecting + mongooseStateMessage = "MongoDB is connecting."; + break; + case 3: // disconnecting + mongooseStateMessage = "MongoDB is disconnecting."; + break; + default: + mongooseStateMessage = "Unknown MongoDB connection state."; + } + + const connectionResult = await connectDb(); + + res.status(200).json({ + mongooseState: { + status: state, + message: mongooseStateMessage, + }, + connectionAttempt: connectionResult, + }); +}; + +export default handler; diff --git a/src/pages/api/lawProblem.ts b/src/pages/api/lawProblem.ts index 0b26a62..9eb361e 100644 --- a/src/pages/api/lawProblem.ts +++ b/src/pages/api/lawProblem.ts @@ -1,10 +1,15 @@ import type { NextApiRequest, NextApiResponse } from "next"; -import { getRandomLawProblem } from "../../server/mongodb/actions/lawProblem"; +import { getAllLawProblems } from "../../server/mongodb/actions/lawProblem"; import requestWrapper from "../../server/utils/middleware"; const handler = async (req: NextApiRequest, res: NextApiResponse) => { - const randomProblem = await getRandomLawProblem(); - res.status(200).json({ randomProblem }); + try { + const allProblems = await getAllLawProblems(); + res.status(200).json({ allProblems }); + } catch (error) { + console.error("Error in API endpoint:", error); + res.status(500).json({ error: "Failed to fetch data." }); + } }; export default requestWrapper(handler, "GET"); diff --git a/src/pages/api/lib_2/math/numerical/[id].ts b/src/pages/api/lib_2/math/numerical/[id].ts index 4cf0a7f..ce01694 100644 --- a/src/pages/api/lib_2/math/numerical/[id].ts +++ b/src/pages/api/lib_2/math/numerical/[id].ts @@ -1,6 +1,6 @@ import type { NextApiRequest, NextApiResponse } from "next"; -import { findMathProblemById } from "../../../../server/mongodb/actions/numericalProblem"; -import requestWrapper from "../../../../server/utils/middleware"; +import { findMathProblemById } from "../../../../../server/mongodb/actions/mathPhysics" +import requestWrapper from "../../../../../server/utils/middleware"; async function handler(req: NextApiRequest, res: NextApiResponse) { if (req.method !== "GET") { diff --git a/src/pages/api/lib_2/math/numerical/index.ts b/src/pages/api/lib_2/math/numerical/index.ts index 1a5690a..fb794b9 100644 --- a/src/pages/api/lib_2/math/numerical/index.ts +++ b/src/pages/api/lib_2/math/numerical/index.ts @@ -1,6 +1,6 @@ import type { NextApiRequest, NextApiResponse } from "next"; -import { getAllMathProblems } from "../../../../server/mongodb/actions/numericalProblem"; -import requestWrapper from "../../../../server/utils/middleware"; +import { getAllMathProblems } from "../../../../../server/mongodb/actions/numericalProblem"; +import requestWrapper from "../../../../../server/utils/middleware"; async function handler(req: NextApiRequest, res: NextApiResponse) { const allProblems = await getAllMathProblems(); diff --git a/src/pages/api/lib_2/math/prooflike/[id].ts b/src/pages/api/lib_2/math/prooflike/[id].ts index 38b42bc..57bf77d 100644 --- a/src/pages/api/lib_2/math/prooflike/[id].ts +++ b/src/pages/api/lib_2/math/prooflike/[id].ts @@ -1,6 +1,6 @@ import type { NextApiRequest, NextApiResponse } from "next"; -import { findMathProofProblemById } from "../../../../../../server/mongodb/actions/numericalProblem"; -import requestWrapper from "../../../../../../server/utils/middleware"; +import { findMathProofProblemById } from "../../../../../server/mongodb/actions/numericalProblem"; +import requestWrapper from "../../../../../server/utils/middleware"; async function handler(req: NextApiRequest, res: NextApiResponse) { if (req.method !== "GET") { diff --git a/src/pages/api/lib_2/math/prooflike/index.ts b/src/pages/api/lib_2/math/prooflike/index.ts index 36ecb96..23c9ca8 100644 --- a/src/pages/api/lib_2/math/prooflike/index.ts +++ b/src/pages/api/lib_2/math/prooflike/index.ts @@ -1,6 +1,6 @@ import type { NextApiRequest, NextApiResponse } from "next"; -import { getAllMathProofProblems } from "../../../../../../server/mongodb/actions/numericalProblem"; -import requestWrapper from "../../../../../../server/utils/middleware"; +import { getAllMathProofProblems } from "../../../../../server/mongodb/actions/numericalProblem"; +import requestWrapper from "../../../../../server/utils/middleware"; async function handler(req: NextApiRequest, res: NextApiResponse) { const allProblems = await getAllMathProofProblems(); diff --git a/src/pages/api/lib_2/math/symbolic/[id].ts b/src/pages/api/lib_2/math/symbolic/[id].ts index 7e6c818..948a066 100644 --- a/src/pages/api/lib_2/math/symbolic/[id].ts +++ b/src/pages/api/lib_2/math/symbolic/[id].ts @@ -1,6 +1,6 @@ import type { NextApiRequest, NextApiResponse } from "next"; -import { findMathSymbolicProblemById } from "../../../../../../server/mongodb/actions/numericalProblem"; -import requestWrapper from "../../../../../../server/utils/middleware"; +import { findMathSymbolicProblemById } from "../../../../../server/mongodb/actions/numericalProblem"; +import requestWrapper from "../../../../../server/utils/middleware"; async function handler(req: NextApiRequest, res: NextApiResponse) { if (req.method !== "GET") { diff --git a/src/pages/api/lib_2/math/symbolic/index.ts b/src/pages/api/lib_2/math/symbolic/index.ts index bfb42f7..87ba3f9 100644 --- a/src/pages/api/lib_2/math/symbolic/index.ts +++ b/src/pages/api/lib_2/math/symbolic/index.ts @@ -1,6 +1,6 @@ import type { NextApiRequest, NextApiResponse } from "next"; -import { getAllMathSymbolicProblems } from "../../../../../../server/mongodb/actions/numericalProblem"; -import requestWrapper from "../../../../../../server/utils/middleware"; +import { getAllMathSymbolicProblems } from "../../../../../server/mongodb/actions/numericalProblem"; +import requestWrapper from "../../../../../server/utils/middleware"; async function handler(req: NextApiRequest, res: NextApiResponse) { const allProblems = await getAllMathSymbolicProblems(); diff --git a/src/pages/api/lib_2/mcatReading/val/[id].ts b/src/pages/api/lib_2/mcatReading/val/[id].ts index 500d0d9..9ec7a43 100644 --- a/src/pages/api/lib_2/mcatReading/val/[id].ts +++ b/src/pages/api/lib_2/mcatReading/val/[id].ts @@ -1,6 +1,6 @@ import type { NextApiRequest, NextApiResponse } from "next"; -import { findReadingProblemById } from "../../../../server/mongodb/actions/mcatProblem"; -import requestWrapper from "../../../../server/utils/middleware"; +import { findReadingProblemById } from "../../../../../server/mongodb/actions/mcatProblem"; +import requestWrapper from "../../../../../server/utils/middleware"; async function handler(req: NextApiRequest, res: NextApiResponse) { if (req.method !== "GET") { diff --git a/src/pages/api/lib_2/mcatReading/val/index.ts b/src/pages/api/lib_2/mcatReading/val/index.ts index 9b7feaa..031bdbd 100644 --- a/src/pages/api/lib_2/mcatReading/val/index.ts +++ b/src/pages/api/lib_2/mcatReading/val/index.ts @@ -1,6 +1,6 @@ import type { NextApiRequest, NextApiResponse } from "next"; -import { getAllReadingProblems } from "../../../../server/mongodb/actions/mcatProblem"; -import requestWrapper from "../../../../server/utils/middleware"; +import { getAllReadingProblems } from "../../../../../server/mongodb/actions/mcatProblem"; +import requestWrapper from "../../../../../server/utils/middleware"; async function handler(req: NextApiRequest, res: NextApiResponse) { const allProblems = await getAllReadingProblems(); diff --git a/src/pages/api/lib_2/mcatScience/val/img/[id].ts b/src/pages/api/lib_2/mcatScience/val/img/[id].ts index 4593c7d..607eb44 100644 --- a/src/pages/api/lib_2/mcatScience/val/img/[id].ts +++ b/src/pages/api/lib_2/mcatScience/val/img/[id].ts @@ -1,6 +1,6 @@ import type { NextApiRequest, NextApiResponse } from "next"; -import { findScienceImagesProblemById } from "../../../../../server/mongodb/actions/mcatProblem"; -import requestWrapper from "../../../../../server/utils/middleware"; +import { findScienceImagesProblemById } from "../../../../../../server/mongodb/actions/mcatProblem"; +import requestWrapper from "../../../../../../server/utils/middleware"; async function handler(req: NextApiRequest, res: NextApiResponse) { if (req.method !== "GET") { diff --git a/src/pages/api/lib_2/mcatScience/val/img/index.ts b/src/pages/api/lib_2/mcatScience/val/img/index.ts index 8708d15..20e6294 100644 --- a/src/pages/api/lib_2/mcatScience/val/img/index.ts +++ b/src/pages/api/lib_2/mcatScience/val/img/index.ts @@ -1,6 +1,6 @@ import type { NextApiRequest, NextApiResponse } from "next"; -import { getAllScienceImagesProblems } from "../../../../../server/mongodb/actions/mcatProblem"; -import requestWrapper from "../../../../../server/utils/middleware"; +import { getAllScienceImagesProblems } from "../../../../../../server/mongodb/actions/mcatProblem"; +import requestWrapper from "../../../../../../server/utils/middleware"; async function handler(req: NextApiRequest, res: NextApiResponse) { const allProblems = await getAllScienceImagesProblems(); diff --git a/src/pages/api/lib_2/mcatScience/val/val/[id].ts b/src/pages/api/lib_2/mcatScience/val/val/[id].ts index d8d7bbc..3937878 100644 --- a/src/pages/api/lib_2/mcatScience/val/val/[id].ts +++ b/src/pages/api/lib_2/mcatScience/val/val/[id].ts @@ -1,6 +1,6 @@ import type { NextApiRequest, NextApiResponse } from "next"; -import { findScienceProblemById } from "../../../../../server/mongodb/actions/mcatProblem"; -import requestWrapper from "../../../../../server/utils/middleware"; +import { findScienceProblemById } from "../../../../../../server/mongodb/actions/mcatProblem"; +import requestWrapper from "../../../../../../server/utils/middleware"; async function handler(req: NextApiRequest, res: NextApiResponse) { if (req.method !== "GET") { diff --git a/src/pages/api/lib_2/mcatScience/val/val/index.ts b/src/pages/api/lib_2/mcatScience/val/val/index.ts index 336e35f..99a757a 100644 --- a/src/pages/api/lib_2/mcatScience/val/val/index.ts +++ b/src/pages/api/lib_2/mcatScience/val/val/index.ts @@ -1,6 +1,6 @@ import type { NextApiRequest, NextApiResponse } from "next"; -import { getAllScienceProblems } from "../../../../../server/mongodb/actions/mcatProblem"; -import requestWrapper from "../../../../../server/utils/middleware"; +import { getAllScienceProblems } from "../../../../../../server/mongodb/actions/mcatProblem"; +import requestWrapper from "../../../../../../server/utils/middleware"; async function handler(req: NextApiRequest, res: NextApiResponse) { const allProblems = await getAllScienceProblems(); diff --git a/src/pages/api/lib_2/physics/numerical/img/[id].ts b/src/pages/api/lib_2/physics/numerical/img/[id].ts index d23b4f0..a34be43 100644 --- a/src/pages/api/lib_2/physics/numerical/img/[id].ts +++ b/src/pages/api/lib_2/physics/numerical/img/[id].ts @@ -1,6 +1,6 @@ import type { NextApiRequest, NextApiResponse } from "next"; -import { findPhysicsImgProblemById } from "../../../../../server/mongodb/actions/numericalProblem"; -import requestWrapper from "../../../../../server/utils/middleware"; +import { findPhysicsImgProblemById } from "../../../../../../server/mongodb/actions/numericalProblem"; +import requestWrapper from "../../../../../../server/utils/middleware"; async function handler(req: NextApiRequest, res: NextApiResponse) { if (req.method !== "GET") { diff --git a/src/pages/api/lib_2/physics/numerical/img/index.ts b/src/pages/api/lib_2/physics/numerical/img/index.ts index ad38acc..e7348af 100644 --- a/src/pages/api/lib_2/physics/numerical/img/index.ts +++ b/src/pages/api/lib_2/physics/numerical/img/index.ts @@ -1,6 +1,6 @@ import type { NextApiRequest, NextApiResponse } from "next"; -import { getAllPhysicsImgProblems } from "../../../../../server/mongodb/actions/numericalProblem"; -import requestWrapper from "../../../../../server/utils/middleware"; +import { getAllPhysicsImgProblems } from "../../../../../../server/mongodb/actions/numericalProblem"; +import requestWrapper from "../../../../../../server/utils/middleware"; async function handler(req: NextApiRequest, res: NextApiResponse) { const allProblems = await getAllPhysicsImgProblems(); diff --git a/src/pages/api/lib_2/physics/numerical/val/[id].ts b/src/pages/api/lib_2/physics/numerical/val/[id].ts index f78edc8..8da239f 100644 --- a/src/pages/api/lib_2/physics/numerical/val/[id].ts +++ b/src/pages/api/lib_2/physics/numerical/val/[id].ts @@ -1,6 +1,6 @@ import type { NextApiRequest, NextApiResponse } from "next"; -import { findPhysicsProblemById } from "../../../../../server/mongodb/actions/numericalProblem"; -import requestWrapper from "../../../../../server/utils/middleware"; +import { findPhysicsProblemById } from "../../../../../../server/mongodb/actions/numericalProblem"; +import requestWrapper from "../../../../../../server/utils/middleware"; async function handler(req: NextApiRequest, res: NextApiResponse) { if (req.method !== "GET") { diff --git a/src/pages/api/lib_2/physics/numerical/val/index.ts b/src/pages/api/lib_2/physics/numerical/val/index.ts index 008a4ac..19ce067 100644 --- a/src/pages/api/lib_2/physics/numerical/val/index.ts +++ b/src/pages/api/lib_2/physics/numerical/val/index.ts @@ -1,6 +1,6 @@ import type { NextApiRequest, NextApiResponse } from "next"; -import { getAllPhysicsProblems } from "../../../../../server/mongodb/actions/numericalProblem"; -import requestWrapper from "../../../../../server/utils/middleware"; +import { getAllPhysicsProblems } from "../../../../../../server/mongodb/actions/numericalProblem"; +import requestWrapper from "../../../../../../server/utils/middleware"; async function handler(req: NextApiRequest, res: NextApiResponse) { const allProblems = await getAllPhysicsProblems(); diff --git a/src/screens/Home/Home.tsx b/src/screens/Home/Home.tsx index 261400e..bbe7a57 100644 --- a/src/screens/Home/Home.tsx +++ b/src/screens/Home/Home.tsx @@ -1,4 +1,4 @@ -import { useEffect, useState } from "react"; +import { useEffect, useState, useMemo } from "react"; import { Image } from "@chakra-ui/react"; import { Center } from "@chakra-ui/react"; @@ -42,7 +42,7 @@ export default function Home() { const [showSolution, setShowSolution] = useState(false); const [showFinalAnswer, setShowFinalAnswer] = useState(false); - const endpoints = { + const endpoints = useMemo(() => ({ "Law Problem": "/api/lawProblem", "Math Numerical Problem": "/api/mathProblem", "MCAT Reading Problem": "/api/mcatReadingProblem", @@ -50,14 +50,22 @@ export default function Home() { "MCAT Science Image Problem": "/api/mcatScienceImageProblem", "Physics Numerical Problem": "/api/physicsProblem", "Physics Numerical Image Problem": "/api/physicsImgProblem", - }; + }), []); const fetchProblem = (endpoint: string) => { fetch(endpoint) - .then((response) => response.json()) + .then((response) => { + if (!response.ok) { + throw new Error("Network response was not ok"); + } + return response.json(); + }) .then((data) => { console.log(data); setProblem(data["randomProblem"]); + }) + .catch(error => { + console.error("There was a problem with the fetch operation:", error); }); }; useEffect(() => { @@ -73,7 +81,7 @@ export default function Home() { setFinalAnswer(problem["Final Answer"]); } } - }, [problem]); + }, [problem, endpoints]); useEffect(() => { const randomProblemType = @@ -86,7 +94,7 @@ export default function Home() { ]; setRandomEndpoint(randomEndpoint); fetchProblem(randomEndpoint); - }, []); + }, [endpoints]); const handleProblemTypeChange = ( event: React.ChangeEvent diff --git a/src/server/mongodb/actions/lawProblem.js b/src/server/mongodb/actions/lawProblem.js index 2bbf504..72660ad 100644 --- a/src/server/mongodb/actions/lawProblem.js +++ b/src/server/mongodb/actions/lawProblem.js @@ -1,5 +1,4 @@ import { lawProblemModel } from "../models/law_problem"; - import { ObjectId } from "mongodb"; async function findOneById(model, id, projection) { @@ -10,31 +9,39 @@ async function findOneById(model, id, projection) { } async function getRandomLawProblem() { - const randomDocument = await lawProblemModel.aggregate([ - { $sample: { size: 1 } }, - ]); - return randomDocument[0]; + try { + const randomDocument = await lawProblemModel.aggregate([ + { $sample: { size: 1 } }, + ]); + return randomDocument[0]; + } catch (error) { + console.error("Error in getRandomLawProblem:", error); + throw error; + } } async function getAllLawProblems() { - return await lawProblemModel.find( - {}, - { - "Problem Statement": 1, - "Problem Number": 1, - "Answer Candidates": 1, - "Final Answer": 1, - "Problem Type": 1, - } - ); + try { + const data = await lawProblemModel.find({}); + console.log("Data from MongoDB in getAllLawProblems:", data); + return data; + } catch (error) { + console.error("Error in getAllLawProblems:", error); + throw error; + } } async function findLawProblemById(id) { - return await findOneById(lawProblemModel, id, { - "Problem Statement": 1, - "Answer Candidates": 1, - "Final Answer": 1, - }); + try { + return await findOneById(lawProblemModel, id, { + "Problem Statement": 1, + "Answer Candidates": 1, + "Final Answer": 1, + }); + } catch (error) { + console.error("Error in findLawProblemById:", error); + throw error; + } } export { findLawProblemById, getRandomLawProblem, getAllLawProblems }; diff --git a/src/server/mongodb/actions/mathPhysics.js b/src/server/mongodb/actions/mathPhysics.js index 23491bc..43914f7 100644 --- a/src/server/mongodb/actions/mathPhysics.js +++ b/src/server/mongodb/actions/mathPhysics.js @@ -1,12 +1,12 @@ import { mathNumericalModel, physicsNumericalModel, - physicsImgModel, + physicsNumericalImgModel, mathProofsModel, mathSymbolicModel, - physicsTestImgModel, - physicsTestModel, -} from "../models/numerical_problem"; + physicsSymbolicImgModel, + physicsSymbolicModel, +} from "../models/math_physics"; import { ObjectId } from "mongodb"; @@ -32,13 +32,13 @@ async function getRandomPhysicsProblem() { } async function getRandomPhysicsImgProblem() { - const randomDocument = await physicsImgModel.aggregate([ + const randomDocument = await physicsNumericalImgModel.aggregate([ { $sample: { size: 1 } }, ]); return randomDocument[0]; } -async function getAllMathProblems() { +async function getAllMathNumericalProblems() { return await mathNumericalModel.find( {}, { @@ -89,7 +89,7 @@ async function getAllMathSymbolicProblems() { ); } -async function getAllPhysicsProblems() { +async function getAllPhysicsNumericalProblems() { return await physicsNumericalModel.find( {}, { @@ -106,8 +106,8 @@ async function getAllPhysicsProblems() { ); } -async function getAllPhysicsTestProblems() { - return await physicsTestModel.find( +async function getAllPhysicsSymbolicProblems() { + return await physicsSymbolicModel.find( {}, { _id: 1, @@ -159,6 +159,8 @@ async function getAllPhysicsImgTestProblems() { ); } + + async function findMathProblemById(id) { return findOneByMongoId(mathNumericalModel, id, { Problem_Statement: 1, @@ -221,13 +223,11 @@ export { getRandomMathProblem, getRandomPhysicsImgProblem, getRandomPhysicsProblem, - getAllMathProblems, getAllMathProofProblems, getAllMathSymbolicProblems, - getAllPhysicsProblems, getAllPhysicsImgProblems, getAllPhysicsImgTestProblems, - getAllPhysicsTestProblems, + getAllPhysicsSymbolicProblems, findMathProblemById, findPhysicsProblemById, findPhysicsImgProblemById, diff --git a/src/server/mongodb/connectDb.js b/src/server/mongodb/connectDb.js index 7747132..413be94 100644 --- a/src/server/mongodb/connectDb.js +++ b/src/server/mongodb/connectDb.js @@ -13,9 +13,15 @@ const connectDb = async () => { }; } - if (!global.cache) { + // Connection options + const options = { + useNewUrlParser: true, + useUnifiedTopology: true, + }; + + if (mongoose.connection.readyState !== 1) { try { - global.cache = await mongoose.connect(MONGO_URI); + global.cache = await mongoose.connect(MONGO_URI, options); // Added the options here return { success: true }; } catch (error) { console.log(error); diff --git a/src/server/mongodb/models/law_problem.js b/src/server/mongodb/models/law_problem.js index f9c7906..30fb5ce 100644 --- a/src/server/mongodb/models/law_problem.js +++ b/src/server/mongodb/models/law_problem.js @@ -2,47 +2,46 @@ import mongoose from "mongoose"; const lawProblemSchema = new mongoose.Schema({ _id: mongoose.Schema.Types.ObjectId, - problemStatement: { + "Problem Statement": { type: String, required: true, }, - problemNumber: { + "Problem Number": { type: String, required: false, }, - topic: { + "Topic": { type: String, required: false, }, - source: { + "Source": { type: String, - required: false, + required: false, }, - answerCandidates: { + "Answer Candidates": { type: [String], required: true, }, - outputFormatInstructions: { + "Output Format Instructions": { type: String, required: false, }, - solution: { + "Solution": { type: String, required: false, }, - finalAnswer: { + "Final Answer": { type: String, required: true, }, - images: { + "Images": { type: [String], required: false, }, - problemType: { + "Problem Type": { type: String, + required: true, // I've set this to true since the entry has it }, }); -export const lawProblemModel = - mongoose.models.lawProblem || - mongoose.model("lawProblem", lawProblemSchema, "law"); +export const lawProblemModel = mongoose.models.lawProblem || mongoose.model("law", lawProblemSchema); diff --git a/src/server/mongodb/models/math_physics.js b/src/server/mongodb/models/math_physics.js index 19c3632..19439eb 100644 --- a/src/server/mongodb/models/math_physics.js +++ b/src/server/mongodb/models/math_physics.js @@ -1,6 +1,6 @@ import mongoose from "mongoose"; -const numericalProblemSchema = new mongoose.Schema({ +const mathPhysicsProblemSchema = new mongoose.Schema({ _id: mongoose.Schema.Types.ObjectId, Problem_Statement: { type: String, @@ -41,40 +41,40 @@ export const mathNumericalModel = mongoose.models.mathNumericalProblem || mongoose.model( "mathNumericalProblem", - numericalProblemSchema, + mathPhysicsProblemSchema, "math_numerical" ); export const physicsNumericalModel = mongoose.models.physicsNumericalProblem || mongoose.model( "physicsNumericalProblem", - numericalProblemSchema, + mathPhysicsProblemSchema, "physics_numerical" ); -export const physicsImgModel = +export const physicsNumericalImgModel = mongoose.models.physicsImgProblem || mongoose.model( - "physicsImgProblem", - numericalProblemSchema, + "physicsNumericalImgProblem", + mathPhysicsProblemSchema, "physics_numerical_images" ); export const mathProofsModel = mongoose.models.mathProofsProblem || - mongoose.model("mathProofsProblem", numericalProblemSchema, "mathProofs"); + mongoose.model("mathProofsProblem", mathPhysicsProblemSchema, "math_prooflike"); export const mathSymbolicModel = mongoose.models.mathSymbolicModel || - mongoose.model("mathSymbolicModel", numericalProblemSchema, "mathSymbolic"); + mongoose.model("mathSymbolicModel", mathPhysicsProblemSchema, "math_symbolic"); -export const physicsTestModel = - mongoose.models.physicsTestProblem || - mongoose.model("physicsTestProblem", numericalProblemSchema, "physics_test"); +export const physicsSymbolicModel = + mongoose.models.physicsSymbolicProblem || + mongoose.model("physicsSymbolicProblem", mathPhysicsProblemSchema, "physics_symbolic"); -export const physicsTestImgModel = - mongoose.models.physicsTestImgProblem || +export const physicsSymbolicImgModel = + mongoose.models.physicsSymbolicImgProblem || mongoose.model( - "physicsTestImgProblem", - numericalProblemSchema, - "physics_test_img" - ); + "physicsSymbolicImgProblem", + mathPhysicsProblemSchema, + "physics_symbolic_img" + ); \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index e6cf748..2759321 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1074,10 +1074,17 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" -"@next/env@13.4.9": - version "13.4.9" - resolved "https://registry.npmjs.org/@next/env/-/env-13.4.9.tgz" - integrity sha512-vuDRK05BOKfmoBYLNi2cujG2jrYbEod/ubSSyqgmEx9n/W3eZaJQdRNhTfumO+qmq/QTzLurW487n/PM/fHOkw== +"@mongodb-js/saslprep@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.0.tgz" + integrity sha512-Xfijy7HvfzzqiOAhAepF4SGN5e9leLkMvg/OPOF97XemjfVCYN/oWa75wnkc6mltMSTwY+XlbhWgUOJmkFspSw== + dependencies: + sparse-bitfield "^3.0.3" + +"@next/env@13.5.4": + version "13.5.4" + resolved "https://registry.npmjs.org/@next/env/-/env-13.5.4.tgz" + integrity sha512-LGegJkMvRNw90WWphGJ3RMHMVplYcOfRWf2Be3td3sUa+1AaxmsYyANsA+znrGCBjXJNi4XAQlSoEfUxs/4kIQ== "@next/eslint-plugin-next@13.4.9": version "13.4.9" @@ -1091,10 +1098,10 @@ resolved "https://registry.npmjs.org/@next/font/-/font-13.4.12.tgz" integrity sha512-w/ygNFuscvvFKFTMoIqhU8Kaq1wM6x4XEu9bwzJaj8G7aloH866TUPeCgiKf+M/ACpMKfRahQa06REcg6T3CyA== -"@next/swc-darwin-x64@13.4.9": - version "13.4.9" - resolved "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.9.tgz" - integrity sha512-aSfF1fhv28N2e7vrDZ6zOQ+IIthocfaxuMWGReB5GDriF0caTqtHttAvzOMgJgXQtQx6XhyaJMozLTSEXeNN+A== +"@next/swc-darwin-x64@13.5.4": + version "13.5.4" + resolved "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.4.tgz" + integrity sha512-siPuUwO45PnNRMeZnSa8n/Lye5ZX93IJom9wQRB5DEOdFrw0JjOMu1GINB8jAEdwa7Vdyn1oJ2xGNaQpdQQ9Pw== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -1139,10 +1146,10 @@ resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.2.tgz" integrity sha512-V+MvGwaHH03hYhY+k6Ef/xKd6RYlc4q8WBx+2ANmipHJcKuktNcI/NgEsJgdSUF6Lw32njT6OnrRsKYCdgHjYw== -"@swc/helpers@0.5.1": - version "0.5.1" - resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.1.tgz" - integrity sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg== +"@swc/helpers@0.5.2": + version "0.5.2" + resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz" + integrity sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw== dependencies: tslib "^2.4.0" @@ -1200,9 +1207,9 @@ integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== "@types/webidl-conversions@*": - version "7.0.0" - resolved "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz" - integrity sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog== + version "7.0.1" + resolved "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.1.tgz" + integrity sha512-8hKOnOan+Uu+NgMaCouhg3cT9x5fFZ92Jwf+uDLXLu/MFRbXxlWwGeQY7KVHkeSft6RvY+tdxklUBuyY9eIEKg== "@types/whatwg-url@^8.2.1": version "8.2.2" @@ -1571,10 +1578,10 @@ bson@^1.1.4: resolved "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz" integrity sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg== -bson@^5.3.0: - version "5.4.0" - resolved "https://registry.npmjs.org/bson/-/bson-5.4.0.tgz" - integrity sha512-WRZ5SQI5GfUuKnPTNmAYPiKIof3ORXAF4IRU5UcgmivNIon01rWQlw5RUH954dpu8yGL8T59YShVddIPaU/gFA== +bson@^5.4.0, bson@^5.5.0: + version "5.5.0" + resolved "https://registry.npmjs.org/bson/-/bson-5.5.0.tgz" + integrity sha512-B+QB4YmDx9RStKv8LLSl/aVIEV3nYJc3cJNNTK2Cd1TL+7P+cNpw9mAPeCgc5K+j01Dv6sxUzcITXDx7ZU3F0w== bundle-name@^3.0.0: version "3.0.0" @@ -2292,10 +2299,10 @@ exit-on-epipe@~1.0.1: resolved "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz" integrity sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw== -extract-mongo-schema@^0.2.11: - version "0.2.11" - resolved "https://registry.npmjs.org/extract-mongo-schema/-/extract-mongo-schema-0.2.11.tgz" - integrity sha512-tH08u0xAvMzfGOjPJTMm/GrmtMBl0Vi9n+ylLIKhjHSo+ECXgvQJsvo2nPYURD+HkJD5yB1k34CLkmd6niVSRA== +extract-mongo-schema@^0.2.12: + version "0.2.12" + resolved "https://registry.npmjs.org/extract-mongo-schema/-/extract-mongo-schema-0.2.12.tgz" + integrity sha512-zkzRy8cD15GMfPh80A/a2D6ZVmlLFXLgsZxeoKUtoEbf34YTDvTkqCaJqeEv94gRN5D71AC3i1eTsfYg04VPtw== dependencies: command-line-args "^3.0.5" fs "0.0.1-security" @@ -3180,25 +3187,25 @@ mongodb@^3.5.8: optionalDependencies: saslprep "^1.0.0" -mongodb@5.6.0: - version "5.6.0" - resolved "https://registry.npmjs.org/mongodb/-/mongodb-5.6.0.tgz" - integrity sha512-z8qVs9NfobHJm6uzK56XBZF8XwM9H294iRnB7wNjF0SnY93si5HPziIJn+qqvUR5QOff/4L0gCD6SShdR/GtVQ== +mongodb@5.9.0: + version "5.9.0" + resolved "https://registry.npmjs.org/mongodb/-/mongodb-5.9.0.tgz" + integrity sha512-g+GCMHN1CoRUA+wb1Agv0TI4YTSiWr42B5ulkiAfLLHitGK1R+PkSAf3Lr5rPZwi/3F04LiaZEW0Kxro9Fi2TA== dependencies: - bson "^5.3.0" + bson "^5.5.0" mongodb-connection-string-url "^2.6.0" socks "^2.7.1" optionalDependencies: - saslprep "^1.0.3" + "@mongodb-js/saslprep" "^1.1.0" mongoose@^7.3.3: - version "7.3.3" - resolved "https://registry.npmjs.org/mongoose/-/mongoose-7.3.3.tgz" - integrity sha512-g4NrRGIUEUYLeScaSChQR8i4Dlk9lR0UJzkK3r6TPJyqJ6ZWdRVP3oXfOG9Yn+hNeKcCJKfVEHo+jsU1rh3YTA== + version "7.6.0" + resolved "https://registry.npmjs.org/mongoose/-/mongoose-7.6.0.tgz" + integrity sha512-ztQ12rm0BQN5i7LB6xhWX4l9a9w2aa3jEwa/mM2vAutYJRyAwOzcusvKJBULMzFHyUDBOVW15grisexypgMIWA== dependencies: - bson "^5.3.0" + bson "^5.4.0" kareem "2.5.1" - mongodb "5.6.0" + mongodb "5.9.0" mpath "0.9.0" mquery "5.0.0" ms "2.1.3" @@ -3235,7 +3242,7 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nanoid@^3.3.4, nanoid@^3.3.6: +nanoid@^3.3.6: version "3.3.6" resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== @@ -3246,28 +3253,27 @@ natural-compare@^1.4.0: integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== next@^13.4.9: - version "13.4.9" - resolved "https://registry.npmjs.org/next/-/next-13.4.9.tgz" - integrity sha512-vtefFm/BWIi/eWOqf1GsmKG3cjKw1k3LjuefKRcL3iiLl3zWzFdPG3as6xtxrGO6gwTzzaO1ktL4oiHt/uvTjA== + version "13.5.4" + resolved "https://registry.npmjs.org/next/-/next-13.5.4.tgz" + integrity sha512-+93un5S779gho8y9ASQhb/bTkQF17FNQOtXLKAj3lsNgltEcF0C5PMLLncDmH+8X1EnJH1kbqAERa29nRXqhjA== dependencies: - "@next/env" "13.4.9" - "@swc/helpers" "0.5.1" + "@next/env" "13.5.4" + "@swc/helpers" "0.5.2" busboy "1.6.0" caniuse-lite "^1.0.30001406" - postcss "8.4.14" + postcss "8.4.31" styled-jsx "5.1.1" watchpack "2.4.0" - zod "3.21.4" optionalDependencies: - "@next/swc-darwin-arm64" "13.4.9" - "@next/swc-darwin-x64" "13.4.9" - "@next/swc-linux-arm64-gnu" "13.4.9" - "@next/swc-linux-arm64-musl" "13.4.9" - "@next/swc-linux-x64-gnu" "13.4.9" - "@next/swc-linux-x64-musl" "13.4.9" - "@next/swc-win32-arm64-msvc" "13.4.9" - "@next/swc-win32-ia32-msvc" "13.4.9" - "@next/swc-win32-x64-msvc" "13.4.9" + "@next/swc-darwin-arm64" "13.5.4" + "@next/swc-darwin-x64" "13.5.4" + "@next/swc-linux-arm64-gnu" "13.5.4" + "@next/swc-linux-arm64-musl" "13.5.4" + "@next/swc-linux-x64-gnu" "13.5.4" + "@next/swc-linux-x64-musl" "13.5.4" + "@next/swc-win32-arm64-msvc" "13.5.4" + "@next/swc-win32-ia32-msvc" "13.5.4" + "@next/swc-win32-x64-msvc" "13.5.4" node-releases@^2.0.12: version "2.0.13" @@ -3565,24 +3571,15 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.0.0, postcss@^8.1.0, postcss@^8.2.14, postcss@^8.4.21, postcss@^8.4.23, postcss@>=8.0.9, postcss@8.4.25: - version "8.4.25" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.25.tgz" - integrity sha512-7taJ/8t2av0Z+sQEvNzCkpDynl0tX3uJMCODi6nT3PfASC7dYCWV9aQ+uiCf+KBD4SEFcu+GvJdGdwzQ6OSjCw== +postcss@^8.0.0, postcss@^8.1.0, postcss@^8.2.14, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.31, postcss@>=8.0.9, postcss@8.4.31: + version "8.4.31" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== dependencies: nanoid "^3.3.6" picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@8.4.14: - version "8.4.14" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz" - integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== - dependencies: - nanoid "^3.3.4" - picocolors "^1.0.0" - source-map-js "^1.0.2" - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" @@ -3853,7 +3850,7 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" -saslprep@^1.0.0, saslprep@^1.0.3: +saslprep@^1.0.0: version "1.0.3" resolved "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz" integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag== @@ -4505,8 +4502,3 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -zod@3.21.4: - version "3.21.4" - resolved "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz" - integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==