From 9ee377d18d88fdbf0f79bf5dfe01b1e8af9b7022 Mon Sep 17 00:00:00 2001 From: CharlesRA752 Date: Thu, 10 Apr 2025 11:00:27 +0100 Subject: [PATCH 1/4] Changed ES Lint rules from off to warn, and ran prettier for the whole app --- (azurite)/__azurite_db_blob__.json | 421 +++++- (azurite)/__azurite_db_blob_extent__.json | 99 +- (azurite)/__azurite_db_queue__.json | 162 ++- (azurite)/__azurite_db_queue_extent__.json | 72 +- (azurite)/__azurite_db_table__.json | 116 +- .eslintrc.json | 12 +- next.config.js | 31 +- prisma/seed.mjs | 1276 +++++++++-------- seedCourses.js | 39 +- src/actions/index.ts | 20 +- src/api/menu.ts | 68 +- .../calendar/calendar/CalendarStyled.tsx | 150 +- .../calendar/calendar/ColorPalette.tsx | 16 +- .../calendar/calendar/EventModal.tsx | 217 ++- .../calendar/calendar/MakeBooking.tsx | 104 +- .../calendar/calendar/MakeSlot.tsx | 85 +- .../calendar/calendar/Toolbar.tsx | 90 +- .../(application)/calendar/calendar/index.tsx | 334 +++-- .../(application)/calendar/calendar/page.tsx | 28 +- src/app/(application)/calendar/layout.tsx | 7 +- src/app/(application)/calendar/page.tsx | 2 +- src/app/(application)/course-list/page.tsx | 39 +- .../courses/[courseId]/edit/page.tsx | 8 +- .../(application)/courses/[courseId]/page.tsx | 8 +- src/app/(application)/courses/page.tsx | 14 +- src/app/(application)/dashboard/page.tsx | 2 +- .../forum/[courseContentId]/page.tsx | 44 +- .../(application)/forum/discuss/[id]/page.tsx | 78 +- src/app/(application)/forum/page.tsx | 89 +- .../internships/[internshipId]/edit/page.tsx | 8 +- .../internships/[internshipId]/page.tsx | 6 +- src/app/(application)/internships/page.tsx | 6 +- src/app/(application)/login/page.tsx | 7 +- src/app/(application)/login/pageold.tsx | 37 +- src/app/(application)/profile/page.tsx | 2 +- .../[userId]/Profile1/UserCourseManager.tsx | 137 +- src/app/(application)/users/[userId]/page.tsx | 60 +- src/app/(application)/users/list/UserList.tsx | 86 +- src/app/(application)/users/list/index.tsx | 142 +- src/app/(application)/users/page.tsx | 25 +- .../announcements/[courseContentId]/page.tsx | 48 +- src/app/announcements/discuss/[id]/page.tsx | 82 +- src/app/announcements/page.tsx | 93 +- .../announcements/[courseContentId]/route.ts | 102 +- .../api/announcements/discuss/[id]/route.ts | 102 +- src/app/api/announcements/route.ts | 29 +- src/app/api/auth/[...nextauth]/route.ts | 2 +- src/app/api/calendar/BookAppointment/route.ts | 52 +- src/app/api/calendar/CancelBooking/route.ts | 105 +- src/app/api/calendar/CreateSlots/route.ts | 73 +- src/app/api/calendar/DeleteSlot/route.ts | 131 +- src/app/api/calendar/GetAttendance/route.ts | 62 +- src/app/api/calendar/MakeSlots/route.ts | 15 +- src/app/api/calendar/MarkAttendance/route.ts | 58 +- src/app/api/calendar/MarkCompleted/route.ts | 75 +- src/app/api/calendar/UpdateBookings/route.ts | 183 +-- src/app/api/calendar/bookings/booked/route.ts | 13 +- src/app/api/calendar/bookings/route.ts | 71 +- src/app/api/calendar/route.ts | 340 +++-- src/app/api/calendar/timeslots/route.ts | 18 +- src/app/api/course-list/route.ts | 46 +- .../assignments/[assignmentId]/route.ts | 22 +- .../courses/[courseId]/assignments/route.ts | 38 +- .../api/courses/[courseId]/content/route.ts | 79 +- .../api/courses/[courseId]/grades/route.ts | 40 +- src/app/api/courses/[courseId]/route.ts | 129 +- src/app/api/courses/[courseId]/tags/route.ts | 16 +- src/app/api/courses/route.ts | 47 +- src/app/api/forum/[courseContentId]/route.ts | 102 +- src/app/api/forum/discuss/[id]/route.ts | 102 +- src/app/api/forum/route.ts | 61 +- src/app/api/menu.ts | 46 +- src/app/api/upload/route.ts | 43 +- .../user/[userId]/courses/default/route.ts | 22 +- src/app/api/user/[userId]/courses/route.ts | 37 +- .../api/user/[userId]/notes/[noteId]/route.ts | 70 +- src/app/api/user/[userId]/notes/route.ts | 57 +- src/app/api/user/[userId]/route.ts | 96 +- .../api/user/[userId]/tutor-stats/route.ts | 65 +- src/app/api/user/route.ts | 78 +- src/app/auth.ts | 328 +++-- src/app/db/index.ts | 10 +- src/app/error/page.tsx | 87 +- src/app/error/pageOLD.tsx | 32 +- src/app/layout.tsx | 24 +- src/app/loading.tsx | 4 +- src/app/page.tsx | 7 +- src/config.ts | 43 +- src/contexts/ConfigContext.tsx | 47 +- src/contexts/JWTContext.tsx | 88 +- src/hooks/useAuth.ts | 6 +- src/hooks/useConfig.ts | 4 +- src/hooks/useDataGrid.ts | 8 +- src/hooks/useLocalStorage.ts | 19 +- src/hooks/useScriptRef.ts | 2 +- src/hooks/useUser.ts | 100 +- src/layout/MainLayout/Footer.tsx | 33 +- .../Header/FullScreenSection/index.tsx | 48 +- .../Header/LocalizationSection/index.tsx | 148 +- .../MainLayout/Header/MobileSection/index.tsx | 50 +- .../NotificationSection/NotificationList.tsx | 178 ++- .../Header/NotificationSection/index.tsx | 173 ++- .../Header/ProfileSection/UpgradePlanCard.tsx | 78 +- .../Header/ProfileSection/index.tsx | 141 +- .../MainLayout/Header/SearchSection/index.tsx | 129 +- src/layout/MainLayout/Header/index.tsx | 68 +- src/layout/MainLayout/HorizontalBar.tsx | 42 +- src/layout/MainLayout/LogoSection/index.tsx | 10 +- src/layout/MainLayout/MainContentStyled.ts | 59 +- .../MainLayout/MenuList/NavCollapse/index.tsx | 325 +++-- .../MainLayout/MenuList/NavGroup/index.tsx | 210 ++- .../MainLayout/MenuList/NavItem/index.tsx | 188 ++- src/layout/MainLayout/MenuList/index.tsx | 201 +-- .../MainLayout/Sidebar/MenuCard/index.tsx | 35 +- .../MainLayout/Sidebar/MiniDrawerStyled.tsx | 49 +- src/layout/MainLayout/Sidebar/index.tsx | 80 +- src/layout/MainLayout/index.tsx | 118 +- src/layout/MinimalLayout/index.tsx | 2 +- src/layout/NavigationScroll.tsx | 12 +- src/layout/layout.tsx | 4 +- src/menu-items/index.tsx | 226 +-- src/menu-items/widget.tsx | 69 +- src/scss/_themes-vars.module.scss | 10 +- src/scss/style.scss | 24 +- src/store/ProviderWrapper.tsx | 46 +- src/store/accountReducer.ts | 17 +- src/store/actions.ts | 6 +- src/store/index.ts | 16 +- src/store/reducer.ts | 15 +- src/store/slices/calendar.ts | 30 +- src/store/slices/courses.ts | 14 +- src/store/slices/snackbar.ts | 63 +- src/store/slices/user.ts | 122 +- src/themes/compStyleOverride.tsx | 452 +++--- src/themes/index.tsx | 75 +- src/themes/overrides/Chip.tsx | 89 +- src/themes/overrides/index.ts | 6 +- src/themes/palette.tsx | 89 +- src/themes/shadows.tsx | 10 +- src/themes/typography.tsx | 166 ++- src/types/auth.ts | 70 +- src/types/blog.ts | 6 +- src/types/calendar.ts | 6 +- src/types/config.ts | 13 +- src/types/course.ts | 14 +- src/types/dropzone.ts | 6 +- src/types/forum.ts | 39 +- src/types/index.ts | 37 +- src/types/next-auth.d.ts | 8 +- src/types/overrides/Alert.d.ts | 4 +- src/types/overrides/Chip.d.ts | 4 +- src/types/overrides/DataGrid.d.ts | 12 +- src/types/overrides/createPalette.d.ts | 4 +- src/types/overrides/createTheme.d.ts | 10 +- src/types/overrides/createTypography.d.ts | 23 +- src/types/snackbar.ts | 6 +- src/types/tabler-icons-react.d.ts | 2 +- src/types/user-profile.ts | 8 +- src/types/user.ts | 4 +- src/ui-component/Loader.tsx | 8 +- src/ui-component/Locales.tsx | 41 +- src/ui-component/Logo.tsx | 16 +- src/ui-component/RTLLayout.tsx | 19 +- src/ui-component/cards/AuthFooter.tsx | 24 +- src/ui-component/cards/Blog/Categories.tsx | 26 +- src/ui-component/cards/Blog/CommentCard.tsx | 13 +- .../cards/Blog/CreateBlogCard.tsx | 54 +- src/ui-component/cards/Blog/DiscountCard.tsx | 67 +- src/ui-component/cards/Blog/Drafts.tsx | 119 +- src/ui-component/cards/Blog/HashtagsCard.tsx | 111 +- src/ui-component/cards/Blog/HeadingTab.tsx | 36 +- src/ui-component/cards/Blog/LikeCard.tsx | 8 +- src/ui-component/cards/Blog/SocialCard.tsx | 62 +- src/ui-component/cards/Blog/TopLikes.tsx | 59 +- .../cards/Blog/TrendingArticles.tsx | 101 +- src/ui-component/cards/Blog/VideoCard.tsx | 18 +- .../cards/CardSecondaryAction.tsx | 67 +- src/ui-component/cards/CourseCard.tsx | 113 +- src/ui-component/cards/CourseContent.tsx | 121 +- src/ui-component/cards/CourseEditForm.tsx | 73 +- src/ui-component/cards/CreateUserForm.tsx | 76 +- src/ui-component/cards/InternshipCard.tsx | 113 +- src/ui-component/cards/MainCard.tsx | 63 +- .../cards/Skeleton/EarningCard.tsx | 10 +- .../cards/Skeleton/ImagePlaceholder.tsx | 2 +- .../cards/Skeleton/PopularCard.tsx | 125 +- .../cards/Skeleton/ProductPlaceholder.tsx | 19 +- .../cards/Skeleton/TotalGrowthBarChart.tsx | 16 +- .../cards/Skeleton/TotalIncomeCard.tsx | 18 +- src/ui-component/cards/SubCard.tsx | 67 +- .../cards/TotalIncomeDarkCard.tsx | 139 +- src/ui-component/cards/UserCard.tsx | 198 +-- src/ui-component/extended/Accordion.tsx | 51 +- src/ui-component/extended/AnimateButton.tsx | 64 +- src/ui-component/extended/AppBar.tsx | 147 +- src/ui-component/extended/Avatar.tsx | 49 +- src/ui-component/extended/Breadcrumbs.tsx | 223 ++- .../extended/Form/FormControl.tsx | 41 +- .../extended/Form/FormControlSelect.tsx | 74 +- src/ui-component/extended/Form/InputLabel.tsx | 23 +- src/ui-component/extended/ImageList.tsx | 54 +- src/ui-component/extended/Snackbar.tsx | 72 +- src/ui-component/extended/Transitions.tsx | 67 +- .../extended/notistack/ColorVariants.tsx | 68 +- .../extended/notistack/CustomComponent.tsx | 92 +- src/ui-component/extended/notistack/Dense.tsx | 33 +- .../extended/notistack/DismissSnackBar.tsx | 25 +- .../extended/notistack/HideDuration.tsx | 38 +- .../extended/notistack/IconVariants.tsx | 65 +- .../extended/notistack/MaxSnackbar.tsx | 55 +- .../notistack/PositioningSnackbar.tsx | 60 +- .../extended/notistack/PreventDuplicate.tsx | 34 +- .../extended/notistack/SnackBarAction.tsx | 23 +- .../extended/notistack/TransitionBar.tsx | 68 +- src/ui-component/extended/notistack/index.tsx | 24 +- src/ui-component/third-party/Notistack.tsx | 21 +- src/ui-component/third-party/ReactQuill.tsx | 60 +- .../third-party/dropzone/Avatar.tsx | 146 +- .../third-party/dropzone/FilePreview.tsx | 113 +- .../third-party/dropzone/MultiFile.tsx | 116 +- .../dropzone/PlaceHolderContent.tsx | 35 +- .../third-party/dropzone/RejectionFile.tsx | 24 +- .../third-party/dropzone/SingleFile.tsx | 89 +- src/utils/auth/roleCheck.ts | 33 +- src/utils/axios.ts | 27 +- src/utils/azureStorage.ts | 30 +- src/utils/getDropzoneData.ts | 13 +- src/utils/getImageUrl.ts | 10 +- src/utils/locales/en.json | 2 +- src/utils/password-strength.ts | 22 +- src/utils/route-guard/AuthGuard.tsx | 20 +- src/utils/route-guard/GuestGuard.tsx | 14 +- src/utils/test-azure-storage.ts | 32 +- src/views/course-list/Initialize.tsx | 255 ++-- src/views/course-list/index.tsx | 7 +- src/views/courses/CourseDetailPage.tsx | 105 +- src/views/courses/CourseEditor.tsx | 595 +++++--- src/views/courses/CoursesPage.tsx | 73 +- .../dashboard/admin/BajajAreaChartCard.tsx | 39 +- src/views/dashboard/admin/EarningCard.tsx | 138 +- src/views/dashboard/admin/PopularCard.tsx | 116 +- .../admin/StudentDistributionCard.tsx | 92 +- .../dashboard/admin/StudentGeographyCard.tsx | 88 +- .../dashboard/admin/TotalGrowthBarChart.tsx | 118 +- src/views/dashboard/admin/TotalUsersCard.tsx | 138 +- .../admin/chart-data/bajaj-area-chart.tsx | 36 +- .../chart-data/total-growth-bar-chart.tsx | 69 +- .../total-order-month-line-chart.tsx | 46 +- .../admin/chart-data/total-users-chart.tsx | 48 +- src/views/dashboard/admin/index.tsx | 18 +- .../internships/InternshipDetailPage.tsx | 96 +- src/views/internships/InternshipEditor.tsx | 476 +++--- src/views/internships/InternshipsPage.tsx | 75 +- .../Profile1/ChangePassword.tsx | 54 +- .../account-profile/Profile1/MyAccount.tsx | 248 ++-- .../Profile1/PersonalAccount.tsx | 134 +- .../account-profile/Profile1/Profile.tsx | 226 ++- .../account-profile/Profile1/Settings.tsx | 187 ++- .../pages/account-profile/Profile1/index.tsx | 109 +- .../announcements/Discuss/BlogCommonCard.tsx | 170 ++- .../Discuss/ForumDetailsCard.tsx | 197 ++- .../pages/announcements/List/AddNewForm.tsx | 128 +- .../announcements/List/BlogCommonCard.tsx | 285 ++-- .../pages/authentication/AuthCardWrapper.tsx | 10 +- .../pages/authentication/AuthWrapper1.tsx | 15 +- .../pages/authentication/AuthWrapper2.tsx | 24 +- src/views/pages/authentication/Login.tsx | 275 ++-- .../pages/authentication/LoginProvider.tsx | 64 +- .../pages/authentication/ResetPassword.tsx | 119 +- .../pages/authentication/ViewOnlyAlert.tsx | 56 +- .../auth0/AuthCodeVerification.tsx | 69 +- .../auth0/AuthForgotPassword.tsx | 100 +- .../pages/authentication/auth0/AuthLogin.tsx | 34 +- .../authentication/auth0/AuthRegister.tsx | 34 +- .../auth0/AuthResetPassword.tsx | 142 +- .../aws/AuthCodeVerification.tsx | 69 +- .../authentication/aws/AuthForgotPassword.tsx | 92 +- .../pages/authentication/aws/AuthLogin.tsx | 140 +- .../pages/authentication/aws/AuthRegister.tsx | 205 ++- .../authentication/aws/AuthResetPassword.tsx | 188 ++- .../firebase/AuthCodeVerification.tsx | 69 +- .../firebase/AuthForgotPassword.tsx | 90 +- .../authentication/firebase/AuthLogin.tsx | 184 ++- .../authentication/firebase/AuthRegister.tsx | 178 ++- .../firebase/AuthResetPassword.tsx | 149 +- .../firebase/FirebaseSocial.tsx | 65 +- .../jwt/AuthCodeVerification.tsx | 69 +- .../authentication/jwt/AuthForgotPassword.tsx | 103 +- .../pages/authentication/jwt/AuthLogin.tsx | 166 ++- .../pages/authentication/jwt/AuthRegister.tsx | 205 ++- .../authentication/jwt/AuthResetPassword.tsx | 151 +- .../supabase/AuthCodeVerification.tsx | 69 +- .../supabase/AuthForgotPassword.tsx | 90 +- .../authentication/supabase/AuthLogin.tsx | 140 +- .../authentication/supabase/AuthRegister.tsx | 205 ++- .../supabase/AuthResetPassword.tsx | 144 +- .../pages/dashboard/default/ForumPostCard.tsx | 92 +- src/views/pages/dashboard/default/index.tsx | 297 ++-- .../pages/forum/Discuss/BlogCommonCard.tsx | 162 ++- .../pages/forum/Discuss/ForumDetailsCard.tsx | 172 ++- src/views/pages/forum/List/AddNewForm.tsx | 109 +- src/views/pages/forum/List/BlogCommonCard.tsx | 285 ++-- src/views/users/Profile1/Profile.tsx | 818 +++++++---- .../users/Profile1/UserCourseManager.tsx | 137 +- src/views/users/Profile1/index.tsx | 134 +- src/views/users/list/Initalise.tsx | 95 +- src/views/users/list/UserList.tsx | 307 ++-- src/views/users/list/UserListOLD.tsx | 86 +- src/views/users/list/index.tsx | 30 +- src/views/users/list/indexOLD.tsx | 142 +- 310 files changed, 16820 insertions(+), 10392 deletions(-) diff --git a/(azurite)/__azurite_db_blob__.json b/(azurite)/__azurite_db_blob__.json index 88452534..d5c0e748 100644 --- a/(azurite)/__azurite_db_blob__.json +++ b/(azurite)/__azurite_db_blob__.json @@ -1 +1,420 @@ -{"filename":"C:\\Users\\Ivyla\\Documents\\GitHub\\COMP0067_2025_Team1\\__azurite_db_blob__.json","collections":[{"name":"$SERVICES_COLLECTION$","data":[],"idIndex":null,"binaryIndices":{},"constraints":null,"uniqueNames":["accountName"],"transforms":{},"objType":"$SERVICES_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":0,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]},{"name":"$CONTAINERS_COLLECTION$","data":[{"accountName":"devstoreaccount1","name":"course-files","properties":{"etag":"\"0x20C1223A3927D00\"","lastModified":"2025-03-13T21:12:40.981Z","leaseStatus":"unlocked","leaseState":"available","publicAccess":"blob","hasImmutabilityPolicy":false,"hasLegalHold":false},"meta":{"revision":0,"created":1741900361031,"version":0},"$loki":1}],"idIndex":null,"binaryIndices":{"accountName":{"name":"accountName","dirty":false,"values":[0]},"name":{"name":"name","dirty":false,"values":[0]}},"constraints":null,"uniqueNames":[],"transforms":{},"objType":"$CONTAINERS_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":1,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]},{"name":"$BLOBS_COLLECTION$","data":[{"deleted":false,"accountName":"devstoreaccount1","containerName":"course-files","name":"1741900361039-2_ML_LinearRegression.pdf","properties":{"creationTime":"2025-03-13T21:12:41.041Z","lastModified":"2025-03-13T21:12:41.041Z","etag":"\"0x23001DFC0318BA0\"","contentLength":559669,"contentType":"application/pdf","contentMD5":{"type":"Buffer","data":[43,85,103,175,186,209,77,26,185,37,42,228,191,54,193,79]},"blobType":"BlockBlob","leaseStatus":"unlocked","leaseState":"available","serverEncrypted":true,"accessTier":"Hot","accessTierInferred":true,"accessTierChangeTime":"2025-03-13T21:12:41.041Z"},"snapshot":"","isCommitted":true,"persistency":{"id":"99073389-333d-4a24-928c-1b7f3c3eb14d","offset":0,"count":559669},"meta":{"revision":0,"created":1741900361061,"version":0},"$loki":1},{"deleted":false,"accountName":"devstoreaccount1","containerName":"course-files","name":"1741900784863-2_ML_LinearRegression.pdf","properties":{"creationTime":"2025-03-13T21:19:44.865Z","lastModified":"2025-03-13T21:19:44.865Z","etag":"\"0x1E403531A477810\"","contentLength":559669,"contentType":"application/pdf","contentMD5":{"type":"Buffer","data":[212,29,140,217,143,0,178,4,233,128,9,152,236,248,66,126]},"blobType":"BlockBlob","leaseStatus":"unlocked","leaseState":"available","serverEncrypted":true,"accessTier":"Hot","accessTierInferred":true,"accessTierChangeTime":"2025-03-13T21:19:44.865Z"},"snapshot":"","isCommitted":true,"persistency":{"id":"99073389-333d-4a24-928c-1b7f3c3eb14d","offset":559669,"count":559669},"meta":{"revision":0,"created":1741900784878,"version":0},"$loki":2},{"deleted":false,"accountName":"devstoreaccount1","containerName":"course-files","name":"1742576429640-2.png","properties":{"creationTime":"2025-03-21T17:00:29.643Z","lastModified":"2025-03-21T17:00:29.643Z","etag":"\"0x2640C69A152EB40\"","contentLength":145000,"contentType":"image/png","contentMD5":{"type":"Buffer","data":[212,29,140,217,143,0,178,4,233,128,9,152,236,248,66,126]},"blobType":"BlockBlob","leaseStatus":"unlocked","leaseState":"available","serverEncrypted":true,"accessTier":"Hot","accessTierInferred":true,"accessTierChangeTime":"2025-03-21T17:00:29.643Z"},"snapshot":"","isCommitted":true,"persistency":{"id":"99073389-333d-4a24-928c-1b7f3c3eb14d","offset":1119338,"count":145000},"meta":{"revision":0,"created":1742576429663,"version":0},"$loki":3},{"deleted":false,"accountName":"devstoreaccount1","containerName":"course-files","name":"1742576498970-2.png","properties":{"creationTime":"2025-03-21T17:01:38.972Z","lastModified":"2025-03-21T17:01:38.972Z","etag":"\"0x1F192B26835AAB0\"","contentLength":145000,"contentType":"image/png","contentMD5":{"type":"Buffer","data":[212,29,140,217,143,0,178,4,233,128,9,152,236,248,66,126]},"blobType":"BlockBlob","leaseStatus":"unlocked","leaseState":"available","serverEncrypted":true,"accessTier":"Hot","accessTierInferred":true,"accessTierChangeTime":"2025-03-21T17:01:38.972Z"},"snapshot":"","isCommitted":true,"persistency":{"id":"99073389-333d-4a24-928c-1b7f3c3eb14d","offset":1264338,"count":145000},"meta":{"revision":0,"created":1742576498979,"version":0},"$loki":4},{"deleted":false,"accountName":"devstoreaccount1","containerName":"course-files","name":"1742837780842-VideoGuidelines.pdf","properties":{"creationTime":"2025-03-24T17:36:20.845Z","lastModified":"2025-03-24T17:36:20.845Z","etag":"\"0x1C3BAAE80804D40\"","contentLength":66340,"contentType":"application/pdf","contentMD5":{"type":"Buffer","data":[156,65,134,189,250,50,119,92,163,208,86,150,92,167,71,27]},"blobType":"BlockBlob","leaseStatus":"unlocked","leaseState":"available","serverEncrypted":true,"accessTier":"Hot","accessTierInferred":true,"accessTierChangeTime":"2025-03-24T17:36:20.845Z"},"snapshot":"","isCommitted":true,"persistency":{"id":"2d2beeb0-d433-4b1f-831b-ebdb9288f708","offset":0,"count":66340},"meta":{"revision":0,"created":1742837780853,"version":0},"$loki":5}],"idIndex":null,"binaryIndices":{"accountName":{"name":"accountName","dirty":false,"values":[4,3,2,1,0]},"containerName":{"name":"containerName","dirty":false,"values":[4,3,2,1,0]},"name":{"name":"name","dirty":false,"values":[0,1,2,3,4]},"snapshot":{"name":"snapshot","dirty":false,"values":[4,3,2,1,0]}},"constraints":null,"uniqueNames":[],"transforms":{},"objType":"$BLOBS_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":5,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]},{"name":"$BLOCKS_COLLECTION$","data":[],"idIndex":null,"binaryIndices":{"accountName":{"name":"accountName","dirty":false,"values":[]},"containerName":{"name":"containerName","dirty":false,"values":[]},"blobName":{"name":"blobName","dirty":false,"values":[]},"name":{"name":"name","dirty":false,"values":[]}},"constraints":null,"uniqueNames":[],"transforms":{},"objType":"$BLOCKS_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":0,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]}],"databaseVersion":1.5,"engineVersion":1.5,"autosave":true,"autosaveInterval":5000,"autosaveHandle":null,"throttledSaves":true,"options":{"persistenceMethod":"fs","autosave":true,"autosaveInterval":5000,"serializationMethod":"normal","destructureDelimiter":"$<\n"},"persistenceMethod":"fs","persistenceAdapter":null,"verbose":false,"events":{"init":[null],"loaded":[],"flushChanges":[],"close":[],"changes":[],"warning":[]},"ENV":"NODEJS"} \ No newline at end of file +{ + "filename": "C:\\Users\\Ivyla\\Documents\\GitHub\\COMP0067_2025_Team1\\__azurite_db_blob__.json", + "collections": [ + { + "name": "$SERVICES_COLLECTION$", + "data": [], + "idIndex": null, + "binaryIndices": {}, + "constraints": null, + "uniqueNames": ["accountName"], + "transforms": {}, + "objType": "$SERVICES_COLLECTION$", + "dirty": false, + "cachedIndex": null, + "cachedBinaryIndex": null, + "cachedData": null, + "adaptiveBinaryIndices": true, + "transactional": false, + "cloneObjects": false, + "cloneMethod": "parse-stringify", + "asyncListeners": false, + "disableMeta": false, + "disableChangesApi": true, + "disableDeltaChangesApi": true, + "autoupdate": false, + "serializableIndices": true, + "disableFreeze": true, + "ttl": null, + "maxId": 0, + "DynamicViews": [], + "events": { + "insert": [], + "update": [], + "pre-insert": [], + "pre-update": [], + "close": [], + "flushbuffer": [], + "error": [], + "delete": [null], + "warning": [null] + }, + "changes": [], + "dirtyIds": [] + }, + { + "name": "$CONTAINERS_COLLECTION$", + "data": [ + { + "accountName": "devstoreaccount1", + "name": "course-files", + "properties": { + "etag": "\"0x20C1223A3927D00\"", + "lastModified": "2025-03-13T21:12:40.981Z", + "leaseStatus": "unlocked", + "leaseState": "available", + "publicAccess": "blob", + "hasImmutabilityPolicy": false, + "hasLegalHold": false + }, + "meta": { "revision": 0, "created": 1741900361031, "version": 0 }, + "$loki": 1 + } + ], + "idIndex": null, + "binaryIndices": { + "accountName": { "name": "accountName", "dirty": false, "values": [0] }, + "name": { "name": "name", "dirty": false, "values": [0] } + }, + "constraints": null, + "uniqueNames": [], + "transforms": {}, + "objType": "$CONTAINERS_COLLECTION$", + "dirty": false, + "cachedIndex": null, + "cachedBinaryIndex": null, + "cachedData": null, + "adaptiveBinaryIndices": true, + "transactional": false, + "cloneObjects": false, + "cloneMethod": "parse-stringify", + "asyncListeners": false, + "disableMeta": false, + "disableChangesApi": true, + "disableDeltaChangesApi": true, + "autoupdate": false, + "serializableIndices": true, + "disableFreeze": true, + "ttl": null, + "maxId": 1, + "DynamicViews": [], + "events": { + "insert": [], + "update": [], + "pre-insert": [], + "pre-update": [], + "close": [], + "flushbuffer": [], + "error": [], + "delete": [null], + "warning": [null] + }, + "changes": [], + "dirtyIds": [] + }, + { + "name": "$BLOBS_COLLECTION$", + "data": [ + { + "deleted": false, + "accountName": "devstoreaccount1", + "containerName": "course-files", + "name": "1741900361039-2_ML_LinearRegression.pdf", + "properties": { + "creationTime": "2025-03-13T21:12:41.041Z", + "lastModified": "2025-03-13T21:12:41.041Z", + "etag": "\"0x23001DFC0318BA0\"", + "contentLength": 559669, + "contentType": "application/pdf", + "contentMD5": { + "type": "Buffer", + "data": [ + 43, 85, 103, 175, 186, 209, 77, 26, 185, 37, 42, 228, 191, 54, + 193, 79 + ] + }, + "blobType": "BlockBlob", + "leaseStatus": "unlocked", + "leaseState": "available", + "serverEncrypted": true, + "accessTier": "Hot", + "accessTierInferred": true, + "accessTierChangeTime": "2025-03-13T21:12:41.041Z" + }, + "snapshot": "", + "isCommitted": true, + "persistency": { + "id": "99073389-333d-4a24-928c-1b7f3c3eb14d", + "offset": 0, + "count": 559669 + }, + "meta": { "revision": 0, "created": 1741900361061, "version": 0 }, + "$loki": 1 + }, + { + "deleted": false, + "accountName": "devstoreaccount1", + "containerName": "course-files", + "name": "1741900784863-2_ML_LinearRegression.pdf", + "properties": { + "creationTime": "2025-03-13T21:19:44.865Z", + "lastModified": "2025-03-13T21:19:44.865Z", + "etag": "\"0x1E403531A477810\"", + "contentLength": 559669, + "contentType": "application/pdf", + "contentMD5": { + "type": "Buffer", + "data": [ + 212, 29, 140, 217, 143, 0, 178, 4, 233, 128, 9, 152, 236, 248, + 66, 126 + ] + }, + "blobType": "BlockBlob", + "leaseStatus": "unlocked", + "leaseState": "available", + "serverEncrypted": true, + "accessTier": "Hot", + "accessTierInferred": true, + "accessTierChangeTime": "2025-03-13T21:19:44.865Z" + }, + "snapshot": "", + "isCommitted": true, + "persistency": { + "id": "99073389-333d-4a24-928c-1b7f3c3eb14d", + "offset": 559669, + "count": 559669 + }, + "meta": { "revision": 0, "created": 1741900784878, "version": 0 }, + "$loki": 2 + }, + { + "deleted": false, + "accountName": "devstoreaccount1", + "containerName": "course-files", + "name": "1742576429640-2.png", + "properties": { + "creationTime": "2025-03-21T17:00:29.643Z", + "lastModified": "2025-03-21T17:00:29.643Z", + "etag": "\"0x2640C69A152EB40\"", + "contentLength": 145000, + "contentType": "image/png", + "contentMD5": { + "type": "Buffer", + "data": [ + 212, 29, 140, 217, 143, 0, 178, 4, 233, 128, 9, 152, 236, 248, + 66, 126 + ] + }, + "blobType": "BlockBlob", + "leaseStatus": "unlocked", + "leaseState": "available", + "serverEncrypted": true, + "accessTier": "Hot", + "accessTierInferred": true, + "accessTierChangeTime": "2025-03-21T17:00:29.643Z" + }, + "snapshot": "", + "isCommitted": true, + "persistency": { + "id": "99073389-333d-4a24-928c-1b7f3c3eb14d", + "offset": 1119338, + "count": 145000 + }, + "meta": { "revision": 0, "created": 1742576429663, "version": 0 }, + "$loki": 3 + }, + { + "deleted": false, + "accountName": "devstoreaccount1", + "containerName": "course-files", + "name": "1742576498970-2.png", + "properties": { + "creationTime": "2025-03-21T17:01:38.972Z", + "lastModified": "2025-03-21T17:01:38.972Z", + "etag": "\"0x1F192B26835AAB0\"", + "contentLength": 145000, + "contentType": "image/png", + "contentMD5": { + "type": "Buffer", + "data": [ + 212, 29, 140, 217, 143, 0, 178, 4, 233, 128, 9, 152, 236, 248, + 66, 126 + ] + }, + "blobType": "BlockBlob", + "leaseStatus": "unlocked", + "leaseState": "available", + "serverEncrypted": true, + "accessTier": "Hot", + "accessTierInferred": true, + "accessTierChangeTime": "2025-03-21T17:01:38.972Z" + }, + "snapshot": "", + "isCommitted": true, + "persistency": { + "id": "99073389-333d-4a24-928c-1b7f3c3eb14d", + "offset": 1264338, + "count": 145000 + }, + "meta": { "revision": 0, "created": 1742576498979, "version": 0 }, + "$loki": 4 + }, + { + "deleted": false, + "accountName": "devstoreaccount1", + "containerName": "course-files", + "name": "1742837780842-VideoGuidelines.pdf", + "properties": { + "creationTime": "2025-03-24T17:36:20.845Z", + "lastModified": "2025-03-24T17:36:20.845Z", + "etag": "\"0x1C3BAAE80804D40\"", + "contentLength": 66340, + "contentType": "application/pdf", + "contentMD5": { + "type": "Buffer", + "data": [ + 156, 65, 134, 189, 250, 50, 119, 92, 163, 208, 86, 150, 92, 167, + 71, 27 + ] + }, + "blobType": "BlockBlob", + "leaseStatus": "unlocked", + "leaseState": "available", + "serverEncrypted": true, + "accessTier": "Hot", + "accessTierInferred": true, + "accessTierChangeTime": "2025-03-24T17:36:20.845Z" + }, + "snapshot": "", + "isCommitted": true, + "persistency": { + "id": "2d2beeb0-d433-4b1f-831b-ebdb9288f708", + "offset": 0, + "count": 66340 + }, + "meta": { "revision": 0, "created": 1742837780853, "version": 0 }, + "$loki": 5 + } + ], + "idIndex": null, + "binaryIndices": { + "accountName": { + "name": "accountName", + "dirty": false, + "values": [4, 3, 2, 1, 0] + }, + "containerName": { + "name": "containerName", + "dirty": false, + "values": [4, 3, 2, 1, 0] + }, + "name": { "name": "name", "dirty": false, "values": [0, 1, 2, 3, 4] }, + "snapshot": { + "name": "snapshot", + "dirty": false, + "values": [4, 3, 2, 1, 0] + } + }, + "constraints": null, + "uniqueNames": [], + "transforms": {}, + "objType": "$BLOBS_COLLECTION$", + "dirty": false, + "cachedIndex": null, + "cachedBinaryIndex": null, + "cachedData": null, + "adaptiveBinaryIndices": true, + "transactional": false, + "cloneObjects": false, + "cloneMethod": "parse-stringify", + "asyncListeners": false, + "disableMeta": false, + "disableChangesApi": true, + "disableDeltaChangesApi": true, + "autoupdate": false, + "serializableIndices": true, + "disableFreeze": true, + "ttl": null, + "maxId": 5, + "DynamicViews": [], + "events": { + "insert": [], + "update": [], + "pre-insert": [], + "pre-update": [], + "close": [], + "flushbuffer": [], + "error": [], + "delete": [null], + "warning": [null] + }, + "changes": [], + "dirtyIds": [] + }, + { + "name": "$BLOCKS_COLLECTION$", + "data": [], + "idIndex": null, + "binaryIndices": { + "accountName": { "name": "accountName", "dirty": false, "values": [] }, + "containerName": { + "name": "containerName", + "dirty": false, + "values": [] + }, + "blobName": { "name": "blobName", "dirty": false, "values": [] }, + "name": { "name": "name", "dirty": false, "values": [] } + }, + "constraints": null, + "uniqueNames": [], + "transforms": {}, + "objType": "$BLOCKS_COLLECTION$", + "dirty": false, + "cachedIndex": null, + "cachedBinaryIndex": null, + "cachedData": null, + "adaptiveBinaryIndices": true, + "transactional": false, + "cloneObjects": false, + "cloneMethod": "parse-stringify", + "asyncListeners": false, + "disableMeta": false, + "disableChangesApi": true, + "disableDeltaChangesApi": true, + "autoupdate": false, + "serializableIndices": true, + "disableFreeze": true, + "ttl": null, + "maxId": 0, + "DynamicViews": [], + "events": { + "insert": [], + "update": [], + "pre-insert": [], + "pre-update": [], + "close": [], + "flushbuffer": [], + "error": [], + "delete": [null], + "warning": [null] + }, + "changes": [], + "dirtyIds": [] + } + ], + "databaseVersion": 1.5, + "engineVersion": 1.5, + "autosave": true, + "autosaveInterval": 5000, + "autosaveHandle": null, + "throttledSaves": true, + "options": { + "persistenceMethod": "fs", + "autosave": true, + "autosaveInterval": 5000, + "serializationMethod": "normal", + "destructureDelimiter": "$<\n" + }, + "persistenceMethod": "fs", + "persistenceAdapter": null, + "verbose": false, + "events": { + "init": [null], + "loaded": [], + "flushChanges": [], + "close": [], + "changes": [], + "warning": [] + }, + "ENV": "NODEJS" +} diff --git a/(azurite)/__azurite_db_blob_extent__.json b/(azurite)/__azurite_db_blob_extent__.json index 3a1741b7..e5876802 100644 --- a/(azurite)/__azurite_db_blob_extent__.json +++ b/(azurite)/__azurite_db_blob_extent__.json @@ -1 +1,98 @@ -{"filename":"C:\\Users\\Ivyla\\Documents\\GitHub\\COMP0067_2025_Team1\\__azurite_db_blob_extent__.json","collections":[{"name":"$EXTENTS_COLLECTION$","data":[{"id":"99073389-333d-4a24-928c-1b7f3c3eb14d","locationId":"Default","path":"99073389-333d-4a24-928c-1b7f3c3eb14d","size":1409338,"lastModifiedInMS":1741900361055,"meta":{"revision":3,"created":1741900361055,"version":0,"updated":1742576498978},"$loki":1,"LastModifyInMS":1742576498978},{"id":"2d2beeb0-d433-4b1f-831b-ebdb9288f708","locationId":"Default","path":"2d2beeb0-d433-4b1f-831b-ebdb9288f708","size":66340,"lastModifiedInMS":1742837780851,"meta":{"revision":0,"created":1742837780851,"version":0},"$loki":2}],"idIndex":null,"binaryIndices":{"id":{"name":"id","dirty":false,"values":[1,0]}},"constraints":null,"uniqueNames":[],"transforms":{},"objType":"$EXTENTS_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":2,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]}],"databaseVersion":1.5,"engineVersion":1.5,"autosave":true,"autosaveInterval":5000,"autosaveHandle":null,"throttledSaves":true,"options":{"persistenceMethod":"fs","autosave":true,"autosaveInterval":5000,"serializationMethod":"normal","destructureDelimiter":"$<\n"},"persistenceMethod":"fs","persistenceAdapter":null,"verbose":false,"events":{"init":[null],"loaded":[],"flushChanges":[],"close":[],"changes":[],"warning":[]},"ENV":"NODEJS"} \ No newline at end of file +{ + "filename": "C:\\Users\\Ivyla\\Documents\\GitHub\\COMP0067_2025_Team1\\__azurite_db_blob_extent__.json", + "collections": [ + { + "name": "$EXTENTS_COLLECTION$", + "data": [ + { + "id": "99073389-333d-4a24-928c-1b7f3c3eb14d", + "locationId": "Default", + "path": "99073389-333d-4a24-928c-1b7f3c3eb14d", + "size": 1409338, + "lastModifiedInMS": 1741900361055, + "meta": { + "revision": 3, + "created": 1741900361055, + "version": 0, + "updated": 1742576498978 + }, + "$loki": 1, + "LastModifyInMS": 1742576498978 + }, + { + "id": "2d2beeb0-d433-4b1f-831b-ebdb9288f708", + "locationId": "Default", + "path": "2d2beeb0-d433-4b1f-831b-ebdb9288f708", + "size": 66340, + "lastModifiedInMS": 1742837780851, + "meta": { "revision": 0, "created": 1742837780851, "version": 0 }, + "$loki": 2 + } + ], + "idIndex": null, + "binaryIndices": { + "id": { "name": "id", "dirty": false, "values": [1, 0] } + }, + "constraints": null, + "uniqueNames": [], + "transforms": {}, + "objType": "$EXTENTS_COLLECTION$", + "dirty": false, + "cachedIndex": null, + "cachedBinaryIndex": null, + "cachedData": null, + "adaptiveBinaryIndices": true, + "transactional": false, + "cloneObjects": false, + "cloneMethod": "parse-stringify", + "asyncListeners": false, + "disableMeta": false, + "disableChangesApi": true, + "disableDeltaChangesApi": true, + "autoupdate": false, + "serializableIndices": true, + "disableFreeze": true, + "ttl": null, + "maxId": 2, + "DynamicViews": [], + "events": { + "insert": [], + "update": [], + "pre-insert": [], + "pre-update": [], + "close": [], + "flushbuffer": [], + "error": [], + "delete": [null], + "warning": [null] + }, + "changes": [], + "dirtyIds": [] + } + ], + "databaseVersion": 1.5, + "engineVersion": 1.5, + "autosave": true, + "autosaveInterval": 5000, + "autosaveHandle": null, + "throttledSaves": true, + "options": { + "persistenceMethod": "fs", + "autosave": true, + "autosaveInterval": 5000, + "serializationMethod": "normal", + "destructureDelimiter": "$<\n" + }, + "persistenceMethod": "fs", + "persistenceAdapter": null, + "verbose": false, + "events": { + "init": [null], + "loaded": [], + "flushChanges": [], + "close": [], + "changes": [], + "warning": [] + }, + "ENV": "NODEJS" +} diff --git a/(azurite)/__azurite_db_queue__.json b/(azurite)/__azurite_db_queue__.json index a5bcb523..72eb050e 100644 --- a/(azurite)/__azurite_db_queue__.json +++ b/(azurite)/__azurite_db_queue__.json @@ -1 +1,161 @@ -{"filename":"C:\\Users\\Ivyla\\Documents\\GitHub\\COMP0067_2025_Team1\\__azurite_db_queue__.json","collections":[{"name":"$SERVICES_COLLECTION$","data":[],"idIndex":null,"binaryIndices":{},"constraints":null,"uniqueNames":["accountName"],"transforms":{},"objType":"$SERVICES_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":0,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]},{"name":"$QUEUES_COLLECTION$","data":[],"idIndex":null,"binaryIndices":{"accountName":{"name":"accountName","dirty":false,"values":[]},"name":{"name":"name","dirty":false,"values":[]}},"constraints":null,"uniqueNames":[],"transforms":{},"objType":"$QUEUES_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":0,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]},{"name":"$MESSAGES_COLLECTION$","data":[],"idIndex":null,"binaryIndices":{"accountName":{"name":"accountName","dirty":false,"values":[]},"queueName":{"name":"queueName","dirty":false,"values":[]},"messageId":{"name":"messageId","dirty":false,"values":[]},"visibleTime":{"name":"visibleTime","dirty":false,"values":[]}},"constraints":null,"uniqueNames":[],"transforms":{},"objType":"$MESSAGES_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":0,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]}],"databaseVersion":1.5,"engineVersion":1.5,"autosave":true,"autosaveInterval":5000,"autosaveHandle":null,"throttledSaves":true,"options":{"persistenceMethod":"fs","autosave":true,"autosaveInterval":5000,"serializationMethod":"normal","destructureDelimiter":"$<\n"},"persistenceMethod":"fs","persistenceAdapter":null,"verbose":false,"events":{"init":[null],"loaded":[],"flushChanges":[],"close":[],"changes":[],"warning":[]},"ENV":"NODEJS"} \ No newline at end of file +{ + "filename": "C:\\Users\\Ivyla\\Documents\\GitHub\\COMP0067_2025_Team1\\__azurite_db_queue__.json", + "collections": [ + { + "name": "$SERVICES_COLLECTION$", + "data": [], + "idIndex": null, + "binaryIndices": {}, + "constraints": null, + "uniqueNames": ["accountName"], + "transforms": {}, + "objType": "$SERVICES_COLLECTION$", + "dirty": false, + "cachedIndex": null, + "cachedBinaryIndex": null, + "cachedData": null, + "adaptiveBinaryIndices": true, + "transactional": false, + "cloneObjects": false, + "cloneMethod": "parse-stringify", + "asyncListeners": false, + "disableMeta": false, + "disableChangesApi": true, + "disableDeltaChangesApi": true, + "autoupdate": false, + "serializableIndices": true, + "disableFreeze": true, + "ttl": null, + "maxId": 0, + "DynamicViews": [], + "events": { + "insert": [], + "update": [], + "pre-insert": [], + "pre-update": [], + "close": [], + "flushbuffer": [], + "error": [], + "delete": [null], + "warning": [null] + }, + "changes": [], + "dirtyIds": [] + }, + { + "name": "$QUEUES_COLLECTION$", + "data": [], + "idIndex": null, + "binaryIndices": { + "accountName": { "name": "accountName", "dirty": false, "values": [] }, + "name": { "name": "name", "dirty": false, "values": [] } + }, + "constraints": null, + "uniqueNames": [], + "transforms": {}, + "objType": "$QUEUES_COLLECTION$", + "dirty": false, + "cachedIndex": null, + "cachedBinaryIndex": null, + "cachedData": null, + "adaptiveBinaryIndices": true, + "transactional": false, + "cloneObjects": false, + "cloneMethod": "parse-stringify", + "asyncListeners": false, + "disableMeta": false, + "disableChangesApi": true, + "disableDeltaChangesApi": true, + "autoupdate": false, + "serializableIndices": true, + "disableFreeze": true, + "ttl": null, + "maxId": 0, + "DynamicViews": [], + "events": { + "insert": [], + "update": [], + "pre-insert": [], + "pre-update": [], + "close": [], + "flushbuffer": [], + "error": [], + "delete": [null], + "warning": [null] + }, + "changes": [], + "dirtyIds": [] + }, + { + "name": "$MESSAGES_COLLECTION$", + "data": [], + "idIndex": null, + "binaryIndices": { + "accountName": { "name": "accountName", "dirty": false, "values": [] }, + "queueName": { "name": "queueName", "dirty": false, "values": [] }, + "messageId": { "name": "messageId", "dirty": false, "values": [] }, + "visibleTime": { "name": "visibleTime", "dirty": false, "values": [] } + }, + "constraints": null, + "uniqueNames": [], + "transforms": {}, + "objType": "$MESSAGES_COLLECTION$", + "dirty": false, + "cachedIndex": null, + "cachedBinaryIndex": null, + "cachedData": null, + "adaptiveBinaryIndices": true, + "transactional": false, + "cloneObjects": false, + "cloneMethod": "parse-stringify", + "asyncListeners": false, + "disableMeta": false, + "disableChangesApi": true, + "disableDeltaChangesApi": true, + "autoupdate": false, + "serializableIndices": true, + "disableFreeze": true, + "ttl": null, + "maxId": 0, + "DynamicViews": [], + "events": { + "insert": [], + "update": [], + "pre-insert": [], + "pre-update": [], + "close": [], + "flushbuffer": [], + "error": [], + "delete": [null], + "warning": [null] + }, + "changes": [], + "dirtyIds": [] + } + ], + "databaseVersion": 1.5, + "engineVersion": 1.5, + "autosave": true, + "autosaveInterval": 5000, + "autosaveHandle": null, + "throttledSaves": true, + "options": { + "persistenceMethod": "fs", + "autosave": true, + "autosaveInterval": 5000, + "serializationMethod": "normal", + "destructureDelimiter": "$<\n" + }, + "persistenceMethod": "fs", + "persistenceAdapter": null, + "verbose": false, + "events": { + "init": [null], + "loaded": [], + "flushChanges": [], + "close": [], + "changes": [], + "warning": [] + }, + "ENV": "NODEJS" +} diff --git a/(azurite)/__azurite_db_queue_extent__.json b/(azurite)/__azurite_db_queue_extent__.json index 099acac7..a3253368 100644 --- a/(azurite)/__azurite_db_queue_extent__.json +++ b/(azurite)/__azurite_db_queue_extent__.json @@ -1 +1,71 @@ -{"filename":"C:\\Users\\Ivyla\\Documents\\GitHub\\COMP0067_2025_Team1\\__azurite_db_queue_extent__.json","collections":[{"name":"$EXTENTS_COLLECTION$","data":[],"idIndex":null,"binaryIndices":{"id":{"name":"id","dirty":false,"values":[]}},"constraints":null,"uniqueNames":[],"transforms":{},"objType":"$EXTENTS_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":0,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]}],"databaseVersion":1.5,"engineVersion":1.5,"autosave":true,"autosaveInterval":5000,"autosaveHandle":null,"throttledSaves":true,"options":{"persistenceMethod":"fs","autosave":true,"autosaveInterval":5000,"serializationMethod":"normal","destructureDelimiter":"$<\n"},"persistenceMethod":"fs","persistenceAdapter":null,"verbose":false,"events":{"init":[null],"loaded":[],"flushChanges":[],"close":[],"changes":[],"warning":[]},"ENV":"NODEJS"} \ No newline at end of file +{ + "filename": "C:\\Users\\Ivyla\\Documents\\GitHub\\COMP0067_2025_Team1\\__azurite_db_queue_extent__.json", + "collections": [ + { + "name": "$EXTENTS_COLLECTION$", + "data": [], + "idIndex": null, + "binaryIndices": { "id": { "name": "id", "dirty": false, "values": [] } }, + "constraints": null, + "uniqueNames": [], + "transforms": {}, + "objType": "$EXTENTS_COLLECTION$", + "dirty": false, + "cachedIndex": null, + "cachedBinaryIndex": null, + "cachedData": null, + "adaptiveBinaryIndices": true, + "transactional": false, + "cloneObjects": false, + "cloneMethod": "parse-stringify", + "asyncListeners": false, + "disableMeta": false, + "disableChangesApi": true, + "disableDeltaChangesApi": true, + "autoupdate": false, + "serializableIndices": true, + "disableFreeze": true, + "ttl": null, + "maxId": 0, + "DynamicViews": [], + "events": { + "insert": [], + "update": [], + "pre-insert": [], + "pre-update": [], + "close": [], + "flushbuffer": [], + "error": [], + "delete": [null], + "warning": [null] + }, + "changes": [], + "dirtyIds": [] + } + ], + "databaseVersion": 1.5, + "engineVersion": 1.5, + "autosave": true, + "autosaveInterval": 5000, + "autosaveHandle": null, + "throttledSaves": true, + "options": { + "persistenceMethod": "fs", + "autosave": true, + "autosaveInterval": 5000, + "serializationMethod": "normal", + "destructureDelimiter": "$<\n" + }, + "persistenceMethod": "fs", + "persistenceAdapter": null, + "verbose": false, + "events": { + "init": [null], + "loaded": [], + "flushChanges": [], + "close": [], + "changes": [], + "warning": [] + }, + "ENV": "NODEJS" +} diff --git a/(azurite)/__azurite_db_table__.json b/(azurite)/__azurite_db_table__.json index 10c20a92..750337c9 100644 --- a/(azurite)/__azurite_db_table__.json +++ b/(azurite)/__azurite_db_table__.json @@ -1 +1,115 @@ -{"filename":"C:\\Users\\Ivyla\\Documents\\GitHub\\COMP0067_2025_Team1\\__azurite_db_table__.json","collections":[{"name":"$TABLES_COLLECTION$","data":[],"idIndex":null,"binaryIndices":{"account":{"name":"account","dirty":false,"values":[]},"table":{"name":"table","dirty":false,"values":[]}},"constraints":null,"uniqueNames":[],"transforms":{},"objType":"$TABLES_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":0,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]},{"name":"$SERVICES_COLLECTION$","data":[],"idIndex":null,"binaryIndices":{},"constraints":null,"uniqueNames":["accountName"],"transforms":{},"objType":"$SERVICES_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":0,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]}],"databaseVersion":1.5,"engineVersion":1.5,"autosave":true,"autosaveInterval":5000,"autosaveHandle":null,"throttledSaves":true,"options":{"persistenceMethod":"fs","autosave":true,"autosaveInterval":5000,"serializationMethod":"normal","destructureDelimiter":"$<\n"},"persistenceMethod":"fs","persistenceAdapter":null,"verbose":false,"events":{"init":[null],"loaded":[],"flushChanges":[],"close":[],"changes":[],"warning":[]},"ENV":"NODEJS"} \ No newline at end of file +{ + "filename": "C:\\Users\\Ivyla\\Documents\\GitHub\\COMP0067_2025_Team1\\__azurite_db_table__.json", + "collections": [ + { + "name": "$TABLES_COLLECTION$", + "data": [], + "idIndex": null, + "binaryIndices": { + "account": { "name": "account", "dirty": false, "values": [] }, + "table": { "name": "table", "dirty": false, "values": [] } + }, + "constraints": null, + "uniqueNames": [], + "transforms": {}, + "objType": "$TABLES_COLLECTION$", + "dirty": false, + "cachedIndex": null, + "cachedBinaryIndex": null, + "cachedData": null, + "adaptiveBinaryIndices": true, + "transactional": false, + "cloneObjects": false, + "cloneMethod": "parse-stringify", + "asyncListeners": false, + "disableMeta": false, + "disableChangesApi": true, + "disableDeltaChangesApi": true, + "autoupdate": false, + "serializableIndices": true, + "disableFreeze": true, + "ttl": null, + "maxId": 0, + "DynamicViews": [], + "events": { + "insert": [], + "update": [], + "pre-insert": [], + "pre-update": [], + "close": [], + "flushbuffer": [], + "error": [], + "delete": [null], + "warning": [null] + }, + "changes": [], + "dirtyIds": [] + }, + { + "name": "$SERVICES_COLLECTION$", + "data": [], + "idIndex": null, + "binaryIndices": {}, + "constraints": null, + "uniqueNames": ["accountName"], + "transforms": {}, + "objType": "$SERVICES_COLLECTION$", + "dirty": false, + "cachedIndex": null, + "cachedBinaryIndex": null, + "cachedData": null, + "adaptiveBinaryIndices": true, + "transactional": false, + "cloneObjects": false, + "cloneMethod": "parse-stringify", + "asyncListeners": false, + "disableMeta": false, + "disableChangesApi": true, + "disableDeltaChangesApi": true, + "autoupdate": false, + "serializableIndices": true, + "disableFreeze": true, + "ttl": null, + "maxId": 0, + "DynamicViews": [], + "events": { + "insert": [], + "update": [], + "pre-insert": [], + "pre-update": [], + "close": [], + "flushbuffer": [], + "error": [], + "delete": [null], + "warning": [null] + }, + "changes": [], + "dirtyIds": [] + } + ], + "databaseVersion": 1.5, + "engineVersion": 1.5, + "autosave": true, + "autosaveInterval": 5000, + "autosaveHandle": null, + "throttledSaves": true, + "options": { + "persistenceMethod": "fs", + "autosave": true, + "autosaveInterval": 5000, + "serializationMethod": "normal", + "destructureDelimiter": "$<\n" + }, + "persistenceMethod": "fs", + "persistenceAdapter": null, + "verbose": false, + "events": { + "init": [null], + "loaded": [], + "flushChanges": [], + "close": [], + "changes": [], + "warning": [] + }, + "ENV": "NODEJS" +} diff --git a/.eslintrc.json b/.eslintrc.json index 9bafd79d..acd35a65 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1 +1,11 @@ -{"extends":"next/core-web-vitals","rules":{"@typescript-eslint/no-explicit-any":"off","@typescript-eslint/no-unused-vars":"off","react/display-name":"off","react/no-unescaped-entities":"off","@next/next/no-img-element":"off","react-hooks/exhaustive-deps":"off"}} +{ + "extends": "next/core-web-vitals", + "rules": { + "@typescript-eslint/no-explicit-any": "warn", + "@typescript-eslint/no-unused-vars": "warn", + "react/display-name": "warn", + "react/no-unescaped-entities": "warn", + "@next/next/no-img-element": "warn", + "react-hooks/exhaustive-deps": "warn" + } +} diff --git a/next.config.js b/next.config.js index f08491de..704bc264 100644 --- a/next.config.js +++ b/next.config.js @@ -1,31 +1,29 @@ /** @type {import('next').NextConfig} */ const nextConfig = { - // todo: this need to set to true or remove it as default is true. set false as chart was giving error when first render // https://github.com/apexcharts/apexcharts.js/issues/3652 reactStrictMode: false, modularizeImports: { - '@mui/material': { - transform: '@mui/material/{{member}}' + "@mui/material": { + transform: "@mui/material/{{member}}", + }, + "@mui/lab": { + transform: "@mui/lab/{{member}}", }, - '@mui/lab': { - transform: '@mui/lab/{{member}}' + "@mui/icons-material": { + transform: "@mui/icons-material/{{member}}", }, - '@mui/icons-material': { - transform: '@mui/icons-material/{{member}}' - } }, images: { remotePatterns: [ { - protocol: 'https', - hostname: 'flagcdn.com', - pathname: '**' + protocol: "https", + hostname: "flagcdn.com", + pathname: "**", }, - ] + ], }, - eslint: { // Warning: This allows production builds to successfully complete even if // your project has ESLint errors. @@ -36,9 +34,6 @@ const nextConfig = { // your project has type errors. ignoreBuildErrors: true, }, -} - - - -module.exports = nextConfig +}; +module.exports = nextConfig; diff --git a/prisma/seed.mjs b/prisma/seed.mjs index 7a13a760..f39babd6 100644 --- a/prisma/seed.mjs +++ b/prisma/seed.mjs @@ -1,212 +1,228 @@ -import { PrismaClient, Appointment_Type } from '@prisma/client' -import bcrypt from 'bcrypt'; +import { PrismaClient, Appointment_Type } from "@prisma/client"; +import bcrypt from "bcrypt"; // Initialise Prisma Client export const db = new PrismaClient(); - -async function cleanDatabase(){ - await db.user.deleteMany(); - await db.attendance.deleteMany(); - await db.message.deleteMany(); - await db.supportTicket.deleteMany(); - await db.grade.deleteMany(); - await db.forum.deleteMany(); - await db.courseContent.deleteMany(); - await db.assignment.deleteMany(); - await db.course.deleteMany(); - await db.appointment.deleteMany(); - await db.account.deleteMany(); - await db.session.deleteMany(); +async function cleanDatabase() { + await db.user.deleteMany(); + await db.attendance.deleteMany(); + await db.message.deleteMany(); + await db.supportTicket.deleteMany(); + await db.grade.deleteMany(); + await db.forum.deleteMany(); + await db.courseContent.deleteMany(); + await db.assignment.deleteMany(); + await db.course.deleteMany(); + await db.appointment.deleteMany(); + await db.account.deleteMany(); + await db.session.deleteMany(); } async function seedData() { - const passwordHash = await bcrypt.hash('123456', 10); + const passwordHash = await bcrypt.hash("123456", 10); // First create a tutor const tutor1 = await db.user.create({ - data: { - email: 'tutor@medefine.com', - type: 'TUTORS', - password: passwordHash, - name: 'Dr. Smith', - dateOfBirth: '1980-01-01', - address: '789 Education Road', - phoneNumber: '5555555555', - prefferedMeansOfContact: 'email', - location: 'Berlin, Germany', - timezone: 'Germany/Europe' - - } + data: { + email: "tutor@medefine.com", + type: "TUTORS", + password: passwordHash, + name: "Dr. Smith", + dateOfBirth: "1980-01-01", + address: "789 Education Road", + phoneNumber: "5555555555", + prefferedMeansOfContact: "email", + location: "Berlin, Germany", + timezone: "Germany/Europe", + }, }); // Then create students (and another tutor) const tutor2 = await db.user.create({ - data: { - email: 'petermontigue6@gmail.com', - type: 'TUTORS', - name: 'Peter Montigue', - enabled: true, - dateOfBirth: '1972-05-07', - phoneNumber: '0987654321', - password: passwordHash, - location: 'London, UK', - timezone: 'London/Europe' - } + data: { + email: "petermontigue6@gmail.com", + type: "TUTORS", + name: "Peter Montigue", + enabled: true, + dateOfBirth: "1972-05-07", + phoneNumber: "0987654321", + password: passwordHash, + location: "London, UK", + timezone: "London/Europe", + }, }); const student1 = await db.user.create({ - data: { - email: 'student1@medefine.com', - type: 'STUDENTS', - name: 'John Doe', - enabled: true, - dateOfBirth: '1995-01-01', - address: '123 Medical Street', - phoneNumber: '1234567890', - prefferedMeansOfContact: 'email', - school: 'Medical School', - yearOfGraduation: new Date('2025-06-01'), - location: 'New York, USA', - timezone: 'USA', - tutorId: tutor2.id, - year: 9, - password: passwordHash - } + data: { + email: "student1@medefine.com", + type: "STUDENTS", + name: "John Doe", + enabled: true, + dateOfBirth: "1995-01-01", + address: "123 Medical Street", + phoneNumber: "1234567890", + prefferedMeansOfContact: "email", + school: "Medical School", + yearOfGraduation: new Date("2025-06-01"), + location: "New York, USA", + timezone: "USA", + tutorId: tutor2.id, + year: 9, + password: passwordHash, + }, }); const student2 = await db.user.create({ - data: { - email: 'student2@medefine.com', - type: 'STUDENTS', - password: passwordHash, - name: 'Jane Smith', - enabled: true, - dateOfBirth: '1996-02-02', - address: '456 Health Avenue', - phoneNumber: '0987654321', - prefferedMeansOfContact: 'phone', - school: 'Medical School', - yearOfGraduation: new Date('2025-06-01'), - location: 'London, UK', - timezone: 'London/Europe', - tutorId: tutor1.id, - year: 10 - },}) - + data: { + email: "student2@medefine.com", + type: "STUDENTS", + password: passwordHash, + name: "Jane Smith", + enabled: true, + dateOfBirth: "1996-02-02", + address: "456 Health Avenue", + phoneNumber: "0987654321", + prefferedMeansOfContact: "phone", + school: "Medical School", + yearOfGraduation: new Date("2025-06-01"), + location: "London, UK", + timezone: "London/Europe", + tutorId: tutor1.id, + year: 10, + }, + }); + const student3 = await db.user.create({ - data: { - email: 'henrystevenson506@gmail.com', - type: 'STUDENTS', - name: 'Henry Stevenson', - enabled: true, - dateOfBirth: '2008-06-14', - phoneNumber: '0987654321', - prefferedMeansOfContact: 'phone', - school: 'Medical School', - yearOfGraduation: new Date('2025-06-01'), - tutorId: tutor2.id, - year: 11, - password: passwordHash, - location: 'London, UK', - timezone: 'London/Europe' - } + data: { + email: "henrystevenson506@gmail.com", + type: "STUDENTS", + name: "Henry Stevenson", + enabled: true, + dateOfBirth: "2008-06-14", + phoneNumber: "0987654321", + prefferedMeansOfContact: "phone", + school: "Medical School", + yearOfGraduation: new Date("2025-06-01"), + tutorId: tutor2.id, + year: 11, + password: passwordHash, + location: "London, UK", + timezone: "London/Europe", + }, }); - - const admin1 = await db.user.create({ - data: { - email: 'admin@medefine.com', - password: passwordHash, - type: 'ADMIN', - name: 'Admin', - enabled: true, - dateOfBirth: '1972-05-07', - phoneNumber: '0987654321', - },}) + const admin1 = await db.user.create({ + data: { + email: "admin@medefine.com", + password: passwordHash, + type: "ADMIN", + name: "Admin", + enabled: true, + dateOfBirth: "1972-05-07", + phoneNumber: "0987654321", + }, + }); - // Create courses and internships await db.course.createMany({ - data: [ - { - title: 'Fundamentals of Medical Terminology', - description: 'Learn the basic terminology used in medicine and healthcare. This course covers root words, prefixes, suffixes, and common medical terms.', - imageUrl: 'https://images.unsplash.com/photo-1486312338219-ce68d2c6f44d', - headerImage: 'https://plus.unsplash.com/premium_photo-1661432427982-844655e5fa8a?q=80&w=3132&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', - year: 1, - courseCode: 'MED101', - duration: '12 weeks', - type: 'course', - tags: ['Year 10'] - }, - { - title: 'Introduction to Human Anatomy', - description: 'A comprehensive introduction to human anatomy, covering all major body systems and their functions.', - imageUrl: 'https://plus.unsplash.com/premium_photo-1672759455907-bdaef741cd88?q=80&w=3216&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', - headerImage: 'https://plus.unsplash.com/premium_photo-1661698939645-8c8690757830?q=80&w=3270&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', - year: 1, - courseCode: 'MED102', - duration: '16 weeks', - type: 'course', - tags: ['Year 9'] - }, - { - title: 'Pathophysiology for Health Professionals', - description: 'Study of disease processes and their effects on human body systems.', - imageUrl: 'https://plus.unsplash.com/premium_photo-1676325101835-f2e4214eff5b?q=80&w=3271&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', - headerImage: 'https://plus.unsplash.com/premium_photo-1723867439555-d6f2be9675d5?q=80&w=3270&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', - year: 2, - courseCode: 'MED201', - duration: '14 weeks', - type: 'course', - tags: ['Year 11'] - }, - // Internships - { - title: 'Clinical Research Internship', - description: 'Gain hands-on experience in clinical research at a leading medical center. Work on ongoing research projects and learn about research methodologies.', - imageUrl: 'https://plus.unsplash.com/premium_photo-1661432427982-844655e5fa8a?q=80&w=3132&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', - headerImage: 'https://plus.unsplash.com/premium_photo-1661432427982-844655e5fa8a?q=80&w=3132&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', - year: 2, - courseCode: 'INT201', - duration: '12 weeks', - type: 'internship', - tags: ['Year 12'] - }, - { - title: 'Hospital Administration Internship', - description: 'Learn about healthcare management and hospital operations. Work with administrators on various projects and gain insights into healthcare systems.', - imageUrl: 'https://plus.unsplash.com/premium_photo-1661698939645-8c8690757830?q=80&w=3270&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', - headerImage: 'https://plus.unsplash.com/premium_photo-1661698939645-8c8690757830?q=80&w=3270&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', - year: 3, - courseCode: 'INT301', - duration: '16 weeks', - type: 'internship', - tags: ['Year 9', 'Year 10', 'Year 11', 'Year 12'] - }, - { - title: 'Medical Technology Internship', - description: 'Work with cutting-edge medical technology and learn about its implementation in healthcare settings. Gain practical experience with medical devices and software.', - imageUrl: 'https://plus.unsplash.com/premium_photo-1672759455907-bdaef741cd88?q=80&w=3216&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', - headerImage: 'https://plus.unsplash.com/premium_photo-1672759455907-bdaef741cd88?q=80&w=3216&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', - year: 3, - courseCode: 'INT302', - duration: '14 weeks', - type: 'internship', - tags: ['Year 11'] - } - ] + data: [ + { + title: "Fundamentals of Medical Terminology", + description: + "Learn the basic terminology used in medicine and healthcare. This course covers root words, prefixes, suffixes, and common medical terms.", + imageUrl: + "https://images.unsplash.com/photo-1486312338219-ce68d2c6f44d", + headerImage: + "https://plus.unsplash.com/premium_photo-1661432427982-844655e5fa8a?q=80&w=3132&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D", + year: 1, + courseCode: "MED101", + duration: "12 weeks", + type: "course", + tags: ["Year 10"], + }, + { + title: "Introduction to Human Anatomy", + description: + "A comprehensive introduction to human anatomy, covering all major body systems and their functions.", + imageUrl: + "https://plus.unsplash.com/premium_photo-1672759455907-bdaef741cd88?q=80&w=3216&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D", + headerImage: + "https://plus.unsplash.com/premium_photo-1661698939645-8c8690757830?q=80&w=3270&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D", + year: 1, + courseCode: "MED102", + duration: "16 weeks", + type: "course", + tags: ["Year 9"], + }, + { + title: "Pathophysiology for Health Professionals", + description: + "Study of disease processes and their effects on human body systems.", + imageUrl: + "https://plus.unsplash.com/premium_photo-1676325101835-f2e4214eff5b?q=80&w=3271&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D", + headerImage: + "https://plus.unsplash.com/premium_photo-1723867439555-d6f2be9675d5?q=80&w=3270&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D", + year: 2, + courseCode: "MED201", + duration: "14 weeks", + type: "course", + tags: ["Year 11"], + }, + // Internships + { + title: "Clinical Research Internship", + description: + "Gain hands-on experience in clinical research at a leading medical center. Work on ongoing research projects and learn about research methodologies.", + imageUrl: + "https://plus.unsplash.com/premium_photo-1661432427982-844655e5fa8a?q=80&w=3132&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D", + headerImage: + "https://plus.unsplash.com/premium_photo-1661432427982-844655e5fa8a?q=80&w=3132&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D", + year: 2, + courseCode: "INT201", + duration: "12 weeks", + type: "internship", + tags: ["Year 12"], + }, + { + title: "Hospital Administration Internship", + description: + "Learn about healthcare management and hospital operations. Work with administrators on various projects and gain insights into healthcare systems.", + imageUrl: + "https://plus.unsplash.com/premium_photo-1661698939645-8c8690757830?q=80&w=3270&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D", + headerImage: + "https://plus.unsplash.com/premium_photo-1661698939645-8c8690757830?q=80&w=3270&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D", + year: 3, + courseCode: "INT301", + duration: "16 weeks", + type: "internship", + tags: ["Year 9", "Year 10", "Year 11", "Year 12"], + }, + { + title: "Medical Technology Internship", + description: + "Work with cutting-edge medical technology and learn about its implementation in healthcare settings. Gain practical experience with medical devices and software.", + imageUrl: + "https://plus.unsplash.com/premium_photo-1672759455907-bdaef741cd88?q=80&w=3216&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D", + headerImage: + "https://plus.unsplash.com/premium_photo-1672759455907-bdaef741cd88?q=80&w=3216&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D", + year: 3, + courseCode: "INT302", + duration: "14 weeks", + type: "internship", + tags: ["Year 11"], + }, + ], }); - //==========================FORUM-TIM============================= - - // create posts data - await db.forum.createMany({ - data: [ - { - title: 'Understanding Medical Terminology Basics', - details: 'A comprehensive guide to medical terminology fundamentals.', - body: ` + //==========================FORUM-TIM============================= + + // create posts data + await db.forum.createMany({ + data: [ + { + title: "Understanding Medical Terminology Basics", + details: "A comprehensive guide to medical terminology fundamentals.", + body: `

Welcome to Medical Terminology 101!

Today we'll cover the essential basics that every medical student needs to know. Here's what we'll discuss: