Repository: Monash-FIT3170/2025W2-FindingNibbles
Pull request #3: feat: 1.2 seeding resturant data
Author: login: RaphS03
Created: 2025-04-20T07:10:26Z | Merged: 2025-04-21T02:11:03Z

Created a seed file to get mock data so team members could begin coding other app parts. The data consists of all the local Monash University resturants/cafes. It follows the format of Google Places API. Some potential data which may be used onces the API is set up is missing, such as openning hours, reviews, multiples photos... Google Places API doesn't include cuisine as a field option so this will need to be collected another way (potentially creating an NLP to guess the cuisine or a different API).


Diff:
diff --git a/backend/package.json b/backend/package.json
index 3ec2eba5..dddc070c 100644
--- a/backend/package.json
+++ b/backend/package.json
@@ -5,6 +5,9 @@
   "author": "",
   "private": true,
   "license": "UNLICENSED",
+  "prisma": {
+    "seed": "ts-node prisma/seeding/seed.ts"
+  },
   "scripts": {
     "build": "nest build",
     "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
diff --git a/backend/prisma/migrations/20250419015736_updated_db_for_resturants/migration.sql b/backend/prisma/migrations/20250419015736_updated_db_for_resturants/migration.sql
new file mode 100644
index 00000000..c370ba44
--- /dev/null
+++ b/backend/prisma/migrations/20250419015736_updated_db_for_resturants/migration.sql
@@ -0,0 +1,249 @@
+-- CreateEnum
+CREATE TYPE "ReviewSource" AS ENUM ('GOOGLE', 'LOCAL');
+
+-- CreateTable
+CREATE TABLE "User" (
+    "id" SERIAL NOT NULL,
+    "firstName" TEXT NOT NULL,
+    "lastName" TEXT NOT NULL,
+    "verifyCode" INTEGER,
+    "isVerified" BOOLEAN NOT NULL DEFAULT false,
+    "email" TEXT NOT NULL,
+    "passwordHash" TEXT,
+    "provider" TEXT NOT NULL,
+    "providerId" TEXT,
+    "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    "updatedAt" TIMESTAMP(3) NOT NULL,
+
+    CONSTRAINT "User_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateTable
+CREATE TABLE "UserLocation" (
+    "id" SERIAL NOT NULL,
+    "userId" INTEGER NOT NULL,
+    "name" TEXT NOT NULL,
+    "latitude" DOUBLE PRECISION NOT NULL,
+    "longitude" DOUBLE PRECISION NOT NULL,
+
+    CONSTRAINT "UserLocation_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateTable
+CREATE TABLE "DietaryRestriction" (
+    "id" SERIAL NOT NULL,
+    "name" TEXT NOT NULL,
+    "description" TEXT,
+    "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    "updatedAt" TIMESTAMP(3) NOT NULL,
+
+    CONSTRAINT "DietaryRestriction_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateTable
+CREATE TABLE "UserDietary" (
+    "userId" INTEGER NOT NULL,
+    "dietaryId" INTEGER NOT NULL,
+
+    CONSTRAINT "UserDietary_pkey" PRIMARY KEY ("userId","dietaryId")
+);
+
+-- CreateTable
+CREATE TABLE "Restaurant" (
+    "id" SERIAL NOT NULL,
+    "place_id" TEXT NOT NULL,
+    "name" TEXT NOT NULL,
+    "vicinity" TEXT,
+    "latitude" DOUBLE PRECISION NOT NULL,
+    "longitude" DOUBLE PRECISION NOT NULL,
+    "businessStatus" TEXT,
+    "icon" TEXT,
+    "rating" DOUBLE PRECISION,
+    "userRatingsTotal" INTEGER,
+    "priceLevel" INTEGER,
+    "hasDetails" BOOLEAN NOT NULL DEFAULT false,
+    "formattedAddress" TEXT,
+    "formattedPhoneNum" TEXT,
+    "intPhoneNum" TEXT,
+    "website" TEXT,
+    "openingHours" JSONB,
+    "dineIn" BOOLEAN,
+    "takeout" BOOLEAN,
+    "delivery" BOOLEAN,
+    "servesBreakfast" BOOLEAN,
+    "servesLunch" BOOLEAN,
+    "servesDinner" BOOLEAN,
+    "wheelchairAccessibleEntrance" BOOLEAN,
+    "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    "updatedAt" TIMESTAMP(3) NOT NULL,
+    "detailsUpdatedAt" TIMESTAMP(3),
+    "viewCount" INTEGER NOT NULL DEFAULT 0,
+    "favoriteCount" INTEGER NOT NULL DEFAULT 0,
+
+    CONSTRAINT "Restaurant_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateTable
+CREATE TABLE "Photo" (
+    "id" TEXT NOT NULL,
+    "restaurantId" INTEGER NOT NULL,
+    "photoReference" TEXT NOT NULL,
+    "height" INTEGER NOT NULL,
+    "width" INTEGER NOT NULL,
+    "htmlAttributions" TEXT[],
+    "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+
+    CONSTRAINT "Photo_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateTable
+CREATE TABLE "RestaurantReview" (
+    "id" SERIAL NOT NULL,
+    "restaurantId" INTEGER NOT NULL,
+    "authorName" TEXT,
+    "rating" INTEGER NOT NULL,
+    "text" TEXT,
+    "time" TIMESTAMP(3),
+    "source" "ReviewSource" NOT NULL DEFAULT 'LOCAL',
+    "googleReviewId" TEXT,
+    "profile_photo_url" TEXT,
+    "userId" INTEGER,
+    "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+
+    CONSTRAINT "RestaurantReview_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateTable
+CREATE TABLE "Cuisine" (
+    "id" SERIAL NOT NULL,
+    "name" TEXT NOT NULL,
+    "description" TEXT,
+    "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    "updatedAt" TIMESTAMP(3) NOT NULL,
+
+    CONSTRAINT "Cuisine_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateTable
+CREATE TABLE "RestaurantCuisine" (
+    "restaurantId" INTEGER NOT NULL,
+    "cuisineId" INTEGER NOT NULL,
+
+    CONSTRAINT "RestaurantCuisine_pkey" PRIMARY KEY ("restaurantId","cuisineId")
+);
+
+-- CreateTable
+CREATE TABLE "Dish" (
+    "id" SERIAL NOT NULL,
+    "name" TEXT NOT NULL,
+    "description" TEXT,
+    "calories" INTEGER,
+    "price" DOUBLE PRECISION,
+    "restaurantId" INTEGER NOT NULL,
+    "cuisineId" INTEGER,
+    "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    "updatedAt" TIMESTAMP(3) NOT NULL,
+
+    CONSTRAINT "Dish_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateTable
+CREATE TABLE "DishDietary" (
+    "dishId" INTEGER NOT NULL,
+    "dietaryId" INTEGER NOT NULL,
+
+    CONSTRAINT "DishDietary_pkey" PRIMARY KEY ("dishId","dietaryId")
+);
+
+-- CreateTable
+CREATE TABLE "UserMealPlan" (
+    "id" SERIAL NOT NULL,
+    "userId" INTEGER NOT NULL,
+    "date" TIMESTAMP(3) NOT NULL,
+    "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    "updatedAt" TIMESTAMP(3) NOT NULL,
+
+    CONSTRAINT "UserMealPlan_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateTable
+CREATE TABLE "MealPlanDish" (
+    "mealPlanId" INTEGER NOT NULL,
+    "dishId" INTEGER NOT NULL,
+
+    CONSTRAINT "MealPlanDish_pkey" PRIMARY KEY ("mealPlanId","dishId")
+);
+
+-- CreateTable
+CREATE TABLE "UserCalorieLog" (
+    "id" SERIAL NOT NULL,
+    "userId" INTEGER NOT NULL,
+    "date" TIMESTAMP(3) NOT NULL,
+    "calories" INTEGER NOT NULL,
+    "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+
+    CONSTRAINT "UserCalorieLog_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateIndex
+CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
+
+-- CreateIndex
+CREATE UNIQUE INDEX "User_provider_providerId_key" ON "User"("provider", "providerId");
+
+-- CreateIndex
+CREATE UNIQUE INDEX "DietaryRestriction_name_key" ON "DietaryRestriction"("name");
+
+-- CreateIndex
+CREATE UNIQUE INDEX "Restaurant_place_id_key" ON "Restaurant"("place_id");
+
+-- CreateIndex
+CREATE UNIQUE INDEX "RestaurantReview_googleReviewId_key" ON "RestaurantReview"("googleReviewId");
+
+-- CreateIndex
+CREATE UNIQUE INDEX "Cuisine_name_key" ON "Cuisine"("name");
+
+-- AddForeignKey
+ALTER TABLE "UserLocation" ADD CONSTRAINT "UserLocation_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "UserDietary" ADD CONSTRAINT "UserDietary_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "UserDietary" ADD CONSTRAINT "UserDietary_dietaryId_fkey" FOREIGN KEY ("dietaryId") REFERENCES "DietaryRestriction"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "Photo" ADD CONSTRAINT "Photo_restaurantId_fkey" FOREIGN KEY ("restaurantId") REFERENCES "Restaurant"("id") ON DELETE CASCADE ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "RestaurantReview" ADD CONSTRAINT "RestaurantReview_restaurantId_fkey" FOREIGN KEY ("restaurantId") REFERENCES "Restaurant"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "RestaurantReview" ADD CONSTRAINT "RestaurantReview_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "RestaurantCuisine" ADD CONSTRAINT "RestaurantCuisine_restaurantId_fkey" FOREIGN KEY ("restaurantId") REFERENCES "Restaurant"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "RestaurantCuisine" ADD CONSTRAINT "RestaurantCuisine_cuisineId_fkey" FOREIGN KEY ("cuisineId") REFERENCES "Cuisine"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "Dish" ADD CONSTRAINT "Dish_cuisineId_fkey" FOREIGN KEY ("cuisineId") REFERENCES "Cuisine"("id") ON DELETE SET NULL ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "DishDietary" ADD CONSTRAINT "DishDietary_dishId_fkey" FOREIGN KEY ("dishId") REFERENCES "Dish"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "DishDietary" ADD CONSTRAINT "DishDietary_dietaryId_fkey" FOREIGN KEY ("dietaryId") REFERENCES "DietaryRestriction"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "UserMealPlan" ADD CONSTRAINT "UserMealPlan_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "MealPlanDish" ADD CONSTRAINT "MealPlanDish_mealPlanId_fkey" FOREIGN KEY ("mealPlanId") REFERENCES "UserMealPlan"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "MealPlanDish" ADD CONSTRAINT "MealPlanDish_dishId_fkey" FOREIGN KEY ("dishId") REFERENCES "Dish"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "UserCalorieLog" ADD CONSTRAINT "UserCalorieLog_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
diff --git a/backend/prisma/migrations/20250420065435_/migration.sql b/backend/prisma/migrations/20250420065435_/migration.sql
new file mode 100644
index 00000000..4aa0ec12
--- /dev/null
+++ b/backend/prisma/migrations/20250420065435_/migration.sql
@@ -0,0 +1,10 @@
+/*
+  Warnings:
+
+  - You are about to drop the column `intPhoneNum` on the `Restaurant` table. All the data in the column will be lost.
+  - You are about to drop the column `vicinity` on the `Restaurant` table. All the data in the column will be lost.
+
+*/
+-- AlterTable
+ALTER TABLE "Restaurant" DROP COLUMN "intPhoneNum",
+DROP COLUMN "vicinity";
diff --git a/backend/prisma/migrations/migration_lock.toml b/backend/prisma/migrations/migration_lock.toml
new file mode 100644
index 00000000..044d57cd
--- /dev/null
+++ b/backend/prisma/migrations/migration_lock.toml
@@ -0,0 +1,3 @@
+# Please do not edit this file manually
+# It should be added in your version-control system (e.g., Git)
+provider = "postgresql"
diff --git a/backend/prisma/schema.prisma b/backend/prisma/schema.prisma
index ace7679a..46b797fd 100644
--- a/backend/prisma/schema.prisma
+++ b/backend/prisma/schema.prisma
@@ -66,29 +66,83 @@ model UserDietary {
 }
 
 model Restaurant {
-  id                 Int                 @id @default(autoincrement())
+  id                 Int       @id @default(autoincrement())
+  place_id           String    @unique // Google Places ID
+
   name               String
-  address            String
-  latitude           Float?
-  longitude          Float?
-  dishes             Dish[]
+  latitude           Float
+  longitude          Float
+  businessStatus     String?
+  icon               String?
+  rating             Float?
+  userRatingsTotal   Int?
+  priceLevel         Int?
   restaurantCuisines RestaurantCuisine[]
+  
+  // Detailed information (from Details API)
+  hasDetails         Boolean   @default(false)  // Flag if we have detailed info
+  formattedAddress   String?
+  formattedPhoneNum  String?
+  website            String?
+  openingHours       Json?
+  photos             Photo[]
   restaurantReviews  RestaurantReview[]
-  createdAt          DateTime            @default(now())
-  updatedAt          DateTime            @updatedAt
+
+  // Additional place details
+  dineIn             Boolean?
+  takeout            Boolean?
+  delivery           Boolean?
+  servesBreakfast    Boolean?
+  servesLunch        Boolean?
+  servesDinner       Boolean?
+  wheelchairAccessibleEntrance Boolean?
+  
+  // Metadata for our app
+  createdAt          DateTime  @default(now())
+  updatedAt          DateTime  @updatedAt
+  detailsUpdatedAt   DateTime?
+  viewCount          Int       @default(0)
+  favoriteCount      Int       @default(0)
+}
+
+model Photo {
+  id                 String    @id @default(uuid())
+  restaurant         Restaurant @relation(fields: [restaurantId], references: [id], onDelete: Cascade)
+  restaurantId       Int
+  photoReference     String   // Google Places photo reference
+  height             Int
+  width              Int
+  htmlAttributions   String[]
+  createdAt          DateTime  @default(now())
 }
 
 model RestaurantReview {
-  id           Int      @id @default(autoincrement())
-  userId       Int
+  id           Int           @id @default(autoincrement())
+  restaurant   Restaurant    @relation(fields: [restaurantId], references: [id])
   restaurantId Int
-  rating       Int // Example: 1 to 5 stars
-  comment      String?
-  createdAt    DateTime @default(now())
-  updatedAt    DateTime @updatedAt
 
-  user       User       @relation(fields: [userId], references: [id])
-  restaurant Restaurant @relation(fields: [restaurantId], references: [id])
+  // Core review data
+  authorName   String?       // from Google or user's name
+  rating       Int
+  text         String?
+  time         DateTime?     // original timestamp (Google) or set by user
+
+  // Distinguish Google-sourced vs. user-submitted
+  source          ReviewSource  @default(LOCAL)
+  googleReviewId  String?       @unique
+  profile_photo_url String? // Google profile photo URL
+
+  // Optional relation to your application user for LOCAL reviews
+  user         User?         @relation(fields: [userId], references: [id])
+  userId       Int?
+
+  createdAt    DateTime      @default(now())
+}
+
+// Review source indicator
+enum ReviewSource {
+  GOOGLE
+  LOCAL
 }
 
 model Cuisine {
@@ -103,8 +157,8 @@ model Cuisine {
 
 model RestaurantCuisine {
   restaurantId Int
-  cuisineId    Int
   restaurant   Restaurant @relation(fields: [restaurantId], references: [id])
+  cuisineId    Int
   cuisine      Cuisine    @relation(fields: [cuisineId], references: [id])
 
   @@id([restaurantId, cuisineId])
@@ -116,7 +170,6 @@ model Dish {
   description    String?
   calories       Int?
   price          Float?
-  restaurant     Restaurant     @relation(fields: [restaurantId], references: [id])
   restaurantId   Int
   cuisine        Cuisine?       @relation(fields: [cuisineId], references: [id])
   cuisineId      Int?
diff --git a/backend/prisma/seeding/README.md b/backend/prisma/seeding/README.md
new file mode 100644
index 00000000..515f3ecf
--- /dev/null
+++ b/backend/prisma/seeding/README.md
@@ -0,0 +1,7 @@
+To get the data locally:
+
+1. Open the terminal in the **backend** directory
+2. Generate the prisma client - `npx prisma generate`
+3. Apply migrations - `npx prisma migrate dev --name init`
+4. Run the seed script `npx prisma db seed`
+5. Optionally, run `npx prisma studio` to view the data
\ No newline at end of file
diff --git a/backend/prisma/seeding/seed.ts b/backend/prisma/seeding/seed.ts
new file mode 100644
index 00000000..67122871
--- /dev/null
+++ b/backend/prisma/seeding/seed.ts
@@ -0,0 +1,124 @@
+// Add prisma seed script to package.json
+// # Generate Prisma client
+// npx prisma generate
+
+// # Apply migrations(if needed)
+// npx prisma migrate dev --name init
+
+// # Run the seed script
+// npx prisma db seed
+
+// # See the data created
+// npx prisma studio
+
+import { PrismaClient } from '../../generated/prisma';
+import { restaurants } from './seedConstants';
+
+const prisma = new PrismaClient();
+
+async function main(): Promise<void> {
+  console.log('Start seeding...');
+
+  try {
+    // Create restaurants
+    console.log('Creating restaurants...');
+    for (const restaurant of restaurants) {
+      try {
+        // Create or update the restaurant
+        const createdRestaurant = await prisma.restaurant.upsert({
+          where: { place_id: restaurant.place_id },
+          update: {
+            name: restaurant.name,
+            latitude: restaurant.latitude,
+            longitude: restaurant.longitude,
+            businessStatus: restaurant.businessStatus,
+            icon: restaurant.icon,
+            rating: restaurant.rating,
+            userRatingsTotal: restaurant.userRatingsTotal,
+            priceLevel: restaurant.priceLevel,
+            formattedAddress: restaurant.formattedAddress,
+            formattedPhoneNum: restaurant.formattedPhoneNum,
+            website: restaurant.website,
+            hasDetails: true,
+            // Clear existing relations
+            restaurantCuisines: {
+              deleteMany: {},
+            },
+            photos: {
+              deleteMany: {},
+            },
+          },
+          create: {
+            place_id: restaurant.place_id,
+            name: restaurant.name,
+            latitude: restaurant.latitude,
+            longitude: restaurant.longitude,
+            businessStatus: restaurant.businessStatus,
+            icon: restaurant.icon,
+            rating: restaurant.rating,
+            userRatingsTotal: restaurant.userRatingsTotal,
+            priceLevel: restaurant.priceLevel,
+            formattedAddress: restaurant.formattedAddress,
+            formattedPhoneNum: restaurant.formattedPhoneNum,
+            website: restaurant.website,
+            hasDetails: true,
+          },
+          include: {
+            restaurantCuisines: true,
+            photos: true,
+          },
+        });
+
+        // Add photos
+        if (restaurant.photos && restaurant.photos.length > 0) {
+          for (const photo of restaurant.photos) {
+            await prisma.photo.create({
+              data: {
+                restaurantId: createdRestaurant.id,
+                photoReference: photo.photoReference,
+                height: photo.height,
+                width: photo.width,
+                htmlAttributions: photo.htmlAttributions,
+              },
+            });
+          }
+        }
+
+        console.log(`Created restaurant: ${restaurant.name}`);
+      } catch (error) {
+        // Properly type the error
+        if (error instanceof Error) {
+          console.error(
+            `Error creating restaurant ${restaurant.name}: ${error.message}`,
+          );
+        } else {
+          console.error(`Unknown error creating restaurant ${restaurant.name}`);
+        }
+      }
+    }
+
+    console.log('Seeding completed');
+  } catch (error) {
+    // Handle any errors in the main process
+    if (error instanceof Error) {
+      console.error(`Seeding error: ${error.message}`);
+    } else {
+      console.error('Unknown seeding error occurred');
+    }
+    throw error; // Re-throw to be caught by the outer catch
+  }
+}
+
+main()
+  .then(async () => {
+    console.log('Seeding completed successfully');
+    await prisma.$disconnect();
+  })
+  .catch(async (e) => {
+    console.error(
+      'Error during seeding:',
+      e instanceof Error ? e.message : String(e),
+    );
+    await prisma.$disconnect();
+    process.exit(1);
+  });
diff --git a/backend/prisma/seeding/seedConstants.ts b/backend/prisma/seeding/seedConstants.ts
new file mode 100644
index 00000000..59f78501
--- /dev/null
+++ b/backend/prisma/seeding/seedConstants.ts
@@ -0,0 +1,702 @@
+import { RestaurantData } from './seedTypes';
+
+// Define the list of restaurants
+export const restaurants: RestaurantData[] = [
+  {
+    place_id: 'ChIJKzi5KMxq1moRMFJ7DrJPztA',
+    name: 'Noodle Plus',
+    latitude: -37.9140707,
+    longitude: 145.1328123,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/restaurant-71.png',
+    rating: 3.9,
+    userRatingsTotal: 59,
+    priceLevel: undefined,
+    formattedAddress:
+      'Monash University Clayton Campus, Learning and Teaching Building, Ground Floor, Clayton VIC 3168, Australia',
+    formattedPhoneNum: undefined,
+    website: undefined,
+    photos: [
+      {
+        height: 4896,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/100551349147024653082"\u003eMike Chan\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcJ9_0j2BXjQzTwLN-aWInD-vRrMp2PRc0r9jZCxzUFsjwLrc8pbcHpY6XcWu_Jxmjis2TS_EzaxO3-wWrvR06IFhjRsPq0GCdelQAcmE8lNlSKuuNV3vNhsh6Ah7vOxWcBHDhsTTC-bllei9sRBALIOBaLWlf2g8aNYeKVJG26sB7NQrcmfteuHO5vFqPo5C1dTPyFdIkoy-chhCaC_ltQeb_17xv45BP90MN0a8u9KrvQDljzicXkwBoFFLUikos0T1S2UrFAT2Ry0bSbYQpLskEob1W535L0EW6iRJqeBu1mdJLQ',
+        width: 6528,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJY1PwH5Zr1moR1cqFk01EbFA',
+    name: 'Nesso Cafe',
+    latitude: -37.9138088,
+    longitude: 145.1328663,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/cafe-71.png',
+    rating: 3.7,
+    userRatingsTotal: 87,
+    priceLevel: undefined,
+    formattedAddress:
+      'Learning and Teaching Building, Ground Floor/19 Ancora Imparo Wy, Clayton VIC 3168, Australia',
+    formattedPhoneNum: '(03) 9558 8457',
+    website: 'http://cafenessoltb.com.au/',
+    photos: [
+      {
+        height: 3840,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/116526084588028225935"\u003eA Google User\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcK5vYN-WvnLd7qazZSypIyqu6T1OO3c023jHyMaf3JBn5NXHNfaZ_X87cbFDRzixfqoIzZM7C3HDihTdVSnl4wQV6DxTkLQasesl_rr-UdAOVnpAsgHEq81WE8e3ybIsfoG-8ADjX_jow43avgvg3fKW_6YeFr1xNsQwGVnUvpqEYHx16j-g8UPwnaT9KA_LcnH_bDacy9fsM_z8n3H213N0cKhUylCTiYRh5hTTSqSlqMm9ziqEhG9Jd3PL5XcSyz75huhXZLPmuJMvvcxQjnMWAipN0aduhoseMmBTTzTVMGBnRs',
+        width: 5120,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJzXgfRZ1r1moR-yH1U6WtTJI',
+    name: 'Poked',
+    latitude: -37.911985,
+    longitude: 145.1329755,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/restaurant-71.png',
+    rating: 3.5,
+    userRatingsTotal: 31,
+    priceLevel: undefined,
+    formattedAddress: 'G57/21 Chancellors Walk, Clayton VIC 3800, Australia',
+    formattedPhoneNum: '(03) 8652 9122',
+    website: 'http://www.poked.com.au/',
+    photos: [
+      {
+        height: 4320,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/110987042987366159069"\u003eA Google User\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcL6XclHhCRfIZRpag-WL28oVUtWEipUgs10q60r0Gpcuy08ealhznDVzrqVYl0b0FzvAZMmEkeC64fEeKsl6ye0xDNLz7Z420-bwOHqy_kRLhUZxllZ4Q_h1IwdxP03uEhfjAMmR96MpnpRym6xqmuwXmT5d0CnF64XoTNB4Ew1eDeKLVvzj3Nnn_Bqd_TAU3vM-thGCm558ejZuYM3JGDo1mA1snFGF74Kz_hZyfK3t0ASH0Apx8z0v6HIi8BB6EICrgliOQeESqRBenuv0h5B8rnOLGm4E7n487WrhicHHdacTF0',
+        width: 2880,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJx1u48Mtq1moRxSnCra2rVsQ',
+    name: 'Artichoke & Whitebait',
+    latitude: -37.9118464,
+    longitude: 145.1329481,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/cafe-71.png',
+    rating: 3.7,
+    userRatingsTotal: 43,
+    priceLevel: 2,
+    formattedAddress:
+      "Monash University Clayton Campus, Ground floor, Campus Centre, 21 Chancellor's Walk, Clayton VIC 3168, Australia",
+    formattedPhoneNum: '(03) 9543 2523',
+    website: 'http://artichokeandwhitebait.com.au/',
+    photos: [
+      {
+        height: 2304,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/105087574845721738211"\u003epratiwi larosa\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcIbs_7N1WH-a5fbVOMViKavSYraeSahoovR_yJvswKZxxEDA3_fAFTm_Euc12BuXHbf4PFE7x0Dz7KLT6OGuu6GWtInX1DLau3uxjOYboeEtVPRBVR1_te5Yym2ToK6AUDtBtN3qRw3CiSC92yMNEHmkGIDXdd4LhLHQZXZuLlAR2ulOvHgG6aWRh9sU2nrTPwkcF-8H4fQ5j8vsaDYp6LZvAvBa-ggu9oTeTbZD202GA53lIGvK_NmGgVOSS1E7x0_vgE46kzDnH1lIsj7e9d010ZtgnJQdY1vzWvS2x2bfPsUTtvkD4D-BuHYtpD-AGkl0b4JA3OtLa--DgQvAmi1qTjjIvDHa_aNiOHTtscHOkntsHP1dO1kWdRtI-cR9R2feTsIvrwxjiI9bFVX5lUK9y_jK3Z0H4RPA1cHYVGu_ZyxWE-7EpKq2U88rwgh0xihgyghh5uhxE2w0xSiFb9R6jnn1OESQnZUvMZWQLv9rxPV5Zu6sESSqVpAHRCd1uIek7iANeFrh-RwLrCRBuiZJDj-olawrJG36_tJbe3cRj6lAeP2U8ZjgSVqZP-dRsrTVg',
+        width: 4096,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJO0nHoctq1moR610E36XekXM',
+    name: 'PappaRich Monash',
+    latitude: -37.9117059,
+    longitude: 145.1335523,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/restaurant-71.png',
+    rating: 3.8,
+    userRatingsTotal: 319,
+    priceLevel: 2,
+    formattedAddress:
+      'Monash University Clayton Campus, Campus Centre, Shop G15/21 Chancellors Walk, Clayton VIC 3168, Australia',
+    formattedPhoneNum: undefined,
+    website:
+      'https://www.papparich.net.au/store/monash-express?utm_content=PappaRich%20Monash%20University%20-%20Clayton&utm_campaign=Google%20My%20Business&utm_medium=organic&utm_source=google&utm_term=plcid_9438989265666385837',
+    photos: [
+      {
+        height: 1756,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/103238796680193220308"\u003eGreg Maunder\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcJ_wtYl-5K-6c2ZmTulhSjRCGNA5dQ3MWsn6pDTf8gL4JMvsqIHAR4r4qyZilkgfz5oJjwX9KmuM-s683Z2ZzAfPrfAo2G3rH07TsEvL83PxeyUzKMAV-9Xorruan2FSm-kfCD-UDtslVErWhnXNQplTVY7g28qlvYTUZcF9htlDi4eYhiYbfBsqezrw8T45sJ3baB-6lfrU_N4wLMpM6sI0bZqReYYO7Fn8-d14JKenxcKpB869UwZ0aytZte8h5iDfYbmNn2_t6kuKVTU7GNZFKlP6HHTgBuqIae10uIJ0yXz9ks',
+        width: 2685,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJJ6kO8stq1moRjjwy5VjHx6w',
+    name: 'Noodle Noodle',
+    latitude: -37.9119934,
+    longitude: 145.1332335,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/restaurant-71.png',
+    rating: 3.8,
+    userRatingsTotal: 57,
+    priceLevel: undefined,
+    formattedAddress: 'G30/21 Chancellors Walk, Clayton VIC 3168, Australia',
+    formattedPhoneNum: undefined,
+    website: 'https://www.monash.edu/food-and-retail/vendors/noodle-noodle',
+    photos: [
+      {
+        height: 3024,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/102699390853301713051"\u003eNguyen Tuan Khoi\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcL_7DfcWWPOZhsZs4Mq7rs84RcQiWa92-8MtfuUsSMba8o-7E6bJ_tOrV6k9hDWUBzfMMw1hiuGS9q_y-ksJeRXKs5zYtttABeXuO9VRlRjzcPp8FcgKAex-xHYQomAFTTCa2YxpOoE16t-nPEDjnWaovBtjreGDWgYiY9TmJ5-npmqF3FfLB54Q_UmZZhRsbpvbxKj1mNBaDMfftuvZt-YtT9TkX_g_tTcSBEcbU4t_POC3dSpF10r6ED0a5_ugZa9-bIpyFbB5MdlqH_FKCuP_G-L0gC6UGB3WV0J8Qz7phJA8JtkC6xWMgl74NnznuE4phi9Lh6RMOkL3fltxdyQnIc30ZgSqwx8ktn4g0HadyxxRCm13vAahzkfRr5cvvq-xP_X9gcN4iPmoR8w3qCIbk1tP_CJ-fGOO1Q1k2Kwr7N4iBUgC5DhGSfMEk95Q9nk-mzi0qE2muM1hwys0YT_cjcom1heFgziO503YDgNYddlCBBD_KnIAJGfDNZKbnVW3Alp4wZDEiVaNOF-LA72qimNsngJFCHuEXat8y2i9PSVckmsFETvJJqeJ_1AukXu6Bx1',
+        width: 4032,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJqUyf_stq1moRW19lZEfbNHo',
+    name: "Neptune's Seafood Catch",
+    latitude: -37.9119934,
+    longitude: 145.1332335,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/restaurant-71.png',
+    rating: 3.7,
+    userRatingsTotal: 62,
+    priceLevel: 1,
+    formattedAddress:
+      'Monash University Clayton Campus, 21 Chancellors Walk, Clayton VIC 3168, Australia',
+    formattedPhoneNum: '0424 511 687',
+    website:
+      'https://www.monash.edu/eat-drink-shop/vendors/neptunes-seafood-catch',
+    photos: [
+      {
+        height: 3024,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/100551349147024653082"\u003eMike Chan\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcK_H7oUm8cNK8A803D-_NOsLE5AjYlaXDOF9OsiOImqucEfuEiCNHxmyRFPNM4QlBewMVtWUGhqMAjzhTyaHVPM-8S7PkJwI6ryzNyvI6GZKhBSvMSIG6qw28uC2cczgghTZ0APpDGrIVSGTyJT0NilwcUgnk7fAfwOGsXlkN0cYOfb78Ml08PsdTZ-wqH_VHRq3caRYuQvyQM6zIh-vc2FyOefNMn0l-GVvxb8oCGkv_7jUXu07rI_ZuqYLkDiwDpUQXFMOmyrYb_RUu8_z8Ohsz6liCN4o2xHpDET6kgZWNexsac',
+        width: 4032,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJu7wOkstq1moRytNqs-_MGzk',
+    name: 'Guzman y Gomez - Monash University',
+    latitude: -37.9118159,
+    longitude: 145.1337583,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/restaurant-71.png',
+    rating: 4,
+    userRatingsTotal: 946,
+    priceLevel: 2,
+    formattedAddress:
+      'Monash University Clayton Campus, 21 Chancellors Walk, Clayton VIC 3800, Australia',
+    formattedPhoneNum: '(03) 9988 1409',
+    website: 'https://www.guzmanygomez.com.au/locations/monash-university/',
+    photos: [
+      {
+        height: 2268,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/113003095112172130244"\u003eDavid Parker\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcLuQNvPYOixy0gfUAG0IlFYHVFlchUn9y7FGax4iudtXF9Rq_cp17t8Qcgt1k4Dh-LCoIC1E-OX7S8uuezmfXKwZwVjgNCDlUs88sd1dVVMVTi5dMnCaeCQ6hNUGoyIVNJ4I-gpMGhU1HWXRnPV_Wq2BTw3y7O5W1wQNxFn4GWMZPHAsXXdhvKw2hPEOixNB2KZwHGI1nixbPlz7V4j5DbwmRAEZeOTV00Kou1eiHWubp9kwInBncWQRvS9-e94OmkMN2mPf6qxyqIKUbz6_7iqkpGWUYkFcFoV3CKm39Dp5O_tHJY',
+        width: 4032,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJLXTx8stq1moRwAdi9_ZYQPs',
+    name: "Roll'd Monash University Clayton",
+    latitude: -37.911784,
+    longitude: 145.133304,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/restaurant-71.png',
+    rating: 3.3,
+    userRatingsTotal: 59,
+    priceLevel: undefined,
+    formattedAddress:
+      'Tenancy G16, Northern Plaza Monash University, Clayton VIC 3168, Australia',
+    formattedPhoneNum: '(03) 9558 9291',
+    website: 'https://rolld.com.au/',
+    photos: [
+      {
+        height: 2176,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/100781170704439726852"\u003eJenkai 125\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcIMlUZq2kHR3v-u2vtk3CU30wRIxZW_K6_yiiLNmTVETkZjelePfZmdBq3faaoMq0KqwkZFOQLUXk09WtBj5mBDNAypIdhNt9TZMtXu3CebkYwdOOBAAqfRD6o9IBo-ftVSvXcbMZj69zClZm9BLbdSMEGOpXLC86VrSICGF4Il_eKgfqF2n0901RQLQzdyu7zyPvbIzq2rdl3poqwIrArDLZcb78S4cE-Pp5A0JMKm9JaXR4xsE6l3AqL-xe-PN7WHPludkyaS6jCbXBzN8cBDUTU5xbBIEfq_nu7Jtcag1fli65E',
+        width: 4608,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJ64DH7ctq1moRE7Y1AAaT33s',
+    name: 'Boost Juice Monash University Clayton',
+    latitude: -37.9115399,
+    longitude: 145.1332319,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/restaurant-71.png',
+    rating: 3.4,
+    userRatingsTotal: 63,
+    priceLevel: 2,
+    formattedAddress:
+      'Monash College G55, Ground Floor, Northern Ext, Building 10, Wellington Rd Monash University (Clayton Campus, Clayton VIC 3166, Australia',
+    formattedPhoneNum: undefined,
+    website: 'https://www.boostjuice.com.au/',
+    photos: [
+      {
+        height: 5712,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/100764247107908414493"\u003eA Google User\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcJypQEnLLnttLyYLqGH4eVyDAju9iOfxqVXdjC7RYriSXvSudycYUtqwx5iyU1tAl7LHnWyXVTlo1EJLYilROz8bZXOiVioeUUFhuGHmVfhPjLiMEvg9dDKvSWecTHZLVVUzLRdrCnNH1dghCxC6imsFaS_4aY3R2SJnDFLOF-fnsXXNlWhKwur5sjGkqff0Zu3RZV52zVOxWPEmNoFrvBHmZ7_XsA-EUNe7EOQwmyX9sl0MZOCCl_7QkgFyknurY7Q18epbwGXJ5BBr-AYKimleSV6lcz2gqT5Rp0A2fVWboxqXVQ',
+        width: 4284,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJPRbpjMtq1moRPcCxJz2EpDo',
+    name: 'Sushi Sushi Monash University',
+    latitude: -37.9117211,
+    longitude: 145.133144,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/restaurant-71.png',
+    rating: 2.7,
+    userRatingsTotal: 40,
+    priceLevel: 1,
+    formattedAddress:
+      'Monash University Clayton Campus, G29/21 Chancellors Walk, Clayton VIC 3800, Australia',
+    formattedPhoneNum: '(03) 9126 3456',
+    website:
+      'https://www.sushisushi.com.au/our-stores/monash-university-clayton-132',
+    photos: [
+      {
+        height: 4000,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/106366474048648534541"\u003eSushi Sushi Monash University (Clayton Campus)\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcJWCNbrKMXQeCabpaiO2Ciuqy1VHvjVgNK45f0u9EXOU_0NWgV1n3Als6SHH-oJ_mLIIzUdWRtuZ5hI2RHqiyr4so1uVLORFgylNjB7VwTC1-kAPy7joEm9SSbQBxoGsT66rzcx_OnSubRP5uHIxY8G_XExQpcFCjP0iO4k-zOavzjDvSuNrkM2trCKibeafmzkBx6giatO2Xy6hXsBSX6A6ainATfuM6L0vs_-XUccyEgyFe4Leabrt9PUG2mSUoGIxyD1S9LrGfmVEh3-lLfOntO40ZMJZLX3upb3WLhQ2wWHf1s',
+        width: 2669,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJATDW88tq1moRBX8HgPq1l5s',
+    name: "Grafali's Coffee Roasters",
+    latitude: -37.911985,
+    longitude: 145.1329755,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/cafe-71.png',
+    rating: 4.2,
+    userRatingsTotal: 130,
+    priceLevel: undefined,
+    formattedAddress:
+      'Australia, Victoria, Clayton, Chancellors Walk, 邮政编码: 3168',
+    formattedPhoneNum: undefined,
+    website: 'https://www.monash.edu/food-and-retail/vendors/grafali',
+    photos: [
+      {
+        height: 3024,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/117561696415342203295"\u003eJerry chen\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcKkpbNIokbiCl9gpBAUrD-MQH_ghYYniU2uc6Ybv9XY_qgPcz7ze33EVlgaNUHd4AXYbIIegtOv73-cA5i0Zp5-hkfeiZOva3JGV_GAnc-LEjFZUMJLjcrVhunlyN2VjCz0J00p_TJv6UpQ7tVLMX8PsvzjhJbiwUoRQ6nC-DaoCv4hVseUlOhUS5txUydf6jyDRHgjOmrOQv9ro4iYLMvtCfA6e8ow7miMILawKeMP1LKYFK-1XRwBTO1r2eY5HwQ6eykLMvYWj304N7Rs0BcFE2bOZw_WOMuQRNqX90aEk3ohBV7eje-fWqIHZZPpnIGC7g3aV7xIwan_PfaVEqv9y3YMoWvFLArXVe7IrwSVOvaL4xXEpzfbrSZycqSncnJHFFmh-LdRJLNXIh-uzHG50CLaKctoycN6rSn5mNfiteSWQWRwo2H4ZFq3w3kM88bmIp-h_hrv91BL47kLSBXa_iIKeCI9JW6WE2pdsQCt_SAFAcyO1_mtmeIMccA78tRm1wOYS7S7Km6AyiBmIx3MLX_z0qDldchdsWpAH30Xax1AbSSa8IIvGuO-bL2VTiDSZExSxdjQ4Q',
+        width: 4032,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJFXnO8Mtq1moRexjO3wfOOW4',
+    name: 'Subway',
+    latitude: -37.9119934,
+    longitude: 145.1332335,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/restaurant-71.png',
+    rating: 2.9,
+    userRatingsTotal: 103,
+    priceLevel: 1,
+    formattedAddress:
+      '21 Chancellors Walk Part Monash University, Clayton Campus Ground Floor G25, Clayton VIC 3168, Australia',
+    formattedPhoneNum: undefined,
+    website: 'https://www.subway.com/en-au',
+    photos: [
+      {
+        height: 3456,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/108941841443900971929"\u003eUlric\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcIjTpnDXHuUnZcmTzY-ijif1Uy5-xdZmRyMVQ-shth4WCJvCmLjBhh2Wydwq7dRv0OwWHxaRalh6n7gJI_WUeO-eC_PVrCbPHsAeWcSZ1ThtueWoI_2TBBZBmUrLBL5c9h6KnCSQyWWgQBcA68w8OJNirH_m8ljpfyP11lKPT6ySG4KetvuINck9Hd1CUAWXvciVotMlQzM-ZZ7hD0QQy060T26Qs_Y8ted33Z9e0n9G_bTfIUOkhGmIi20ZpyKLeQYeEDPETHYZHdW7pJDPZigr_cvspd-bfnm2eNidpvbRnsq',
+        width: 5184,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJHxa1pFlr1moRHFdLlvSoa_k',
+    name: "Sir John's",
+    latitude: -37.9119934,
+    longitude: 145.1332335,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/restaurant-71.png',
+    rating: 3.8,
+    userRatingsTotal: 40,
+    priceLevel: undefined,
+    formattedAddress: '21 Chancellors Walk, Clayton VIC 3168, Australia',
+    formattedPhoneNum: '(03) 9905 2883',
+    website: 'https://sirjohnsbar.com/',
+    photos: [
+      {
+        height: 1960,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/104682042760959365450"\u003eA Google User\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcKsCFTrCmMci-I1AOZm0gGBxt5LdawG4kVdJx4XHOdjo7_F6_X5iSzkXRwRsKsCuJMGW7HfFpgBWKNrvsjvjI9ook8tDZRdjcUoK_6pMz0sOX1tNl0Ut_XeraXEU3-Yo2e3GfimiTBLSGt_3wVMmfmfA4ksKw57lt7kvsZh4N36DSj8mpjZ7G6XRfV6WHCYx_SktTNHf-aSpUbOpOOoA2s9pSKs4QyA2_CgKqH3c16URmWE98LzmADHB1OOkEfvhqG6eBYtl1leGu6HoiYR1w8y9C-WwZvYSEC0V3Eot0bWyhUP_bQ',
+        width: 4032,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJuwcSCstq1moRG_TzklUYsOQ',
+    name: 'Wholefoods',
+    latitude: -37.9118892,
+    longitude: 145.1329277,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/restaurant-71.png',
+    rating: 4.6,
+    userRatingsTotal: 83,
+    priceLevel: 1,
+    formattedAddress:
+      'Level 1/21 Chancellors Walk, Clayton VIC 3168, Australia',
+    formattedPhoneNum: undefined,
+    website: 'https://linktr.ee/Monash_Wholefoods',
+    photos: [
+      {
+        height: 1080,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/107894446970721086219"\u003eHomayoun Hamedmoghadam-Rafati\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcLLx6M_wJUDGZkHekzbll0xeW6lYYXZtZ4qLTNxfaNl7RUDJM-pblLIr-DzPCg0KXs1cboe5SAvDi5kgw4rH7ejHsE-WMjlHOGNuhyIPLeO-2cgB-tiMMXMLwIxQqRAggubZpSYSQDFhW4LLAMNLZhg7A_bLWQtaeZ0tSXLg3fD4s1oW5uSxS0XtSBhUXoO_dc_ovrnfrK9mThlLhyhLjWin0k7S3bVboQj57cTEMzHTeYwaLyakpK9wBgaNKvvkdGBTc61toyE8KzbzZjJI31spzhAq8JPSuAZ8jTaCxT2_o2c3fQ',
+        width: 1920,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJj1WC1Mtq1moRJeKoET0Alw4',
+    name: 'Ma Long Kitchen and Dumplings',
+    latitude: -37.9098104,
+    longitude: 145.1321036,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/restaurant-71.png',
+    rating: 4.1,
+    userRatingsTotal: 102,
+    priceLevel: undefined,
+    formattedAddress:
+      'Monash University Clayton Campus, Hargrave Andrew Library, 13 College Walk, Clayton VIC 3168, Australia',
+    formattedPhoneNum: '(03) 9548 7173',
+    website: 'http://malongkitchen.com.au/',
+    photos: [
+      {
+        height: 3024,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/113703783703185493246"\u003eEng Hwa Lim\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcIW0E7-7fD_OY7sTqymYXALiJpL81nPjGfugVcgMmKkC5osMgs9Tkmd-7G3-1K_r-Y-c_4fW2o7OZBvcXuFU0qJ0yWXV9TYM5LR8mIHkycPrldhmZZAfek4IcsvVeelFgEcpNC_6jfj_KFdsjS98EBhoKzqjV8bMvlIpjzl6TzWhaCcskyIKZUuUJnST59_hWz-Ww0f9y55FUJFFhQSqqhTnEu0vTijmBhEtXKAB7JlSoWc7sjyR2R43RNYYrtZcdmZFaTVqT9K_RfpMNkeHckhewKseGzOC7ICQ0ABvtWcP94vykE',
+        width: 4032,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJk1F41Mtq1moREgIhKa2Mad0',
+    name: 'Secret Garden Eatery',
+    latitude: -37.9098756,
+    longitude: 145.1323205,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/cafe-71.png',
+    rating: 4.2,
+    userRatingsTotal: 169,
+    priceLevel: 2,
+    formattedAddress:
+      'Monash University Clayton Campus, 13 College Walk, Clayton VIC 3168, Australia',
+    formattedPhoneNum: '0401 786 280',
+    website: 'http://secretgardeneatery.com.au/',
+    photos: [
+      {
+        height: 3000,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/102032314973615924622"\u003eXiang Li\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcJz5kJHRgl9BN8szlnu6RhJH7BHMNmFJ5DKa3NT1b_349nHth7rcSzuH3SL37_j6jax6fUnZ7S_VRADBLQIkt-yY3YfkyhU_aiNYzscRx2o7XCs3HvBNPE964RMuXnNjZKBgtAjbYB54wCNH-JapbbCv58kyYRcYY57TDHOiLIGyMK8eCDw_yDbGXPPCVVWjTa4I6dBJmYZ695KbqcRON1jVijZqTdWyS2PTvPRiuGWI9wdH4Ful1_ZdL4saQm1DtD8tnUt9G53rJ1jS1tpsoFrU8CijFoScd4DBuuLwwhITHDpm5PwQ2EaMyXwjnfN5GbkLSIVKd6B0KImsn8vnQKCavAAtxVHrwTt_xIgObOG9d7vWkUIsjb5_y9OqP03U6e_RCa2qWeouQdVQQjRZsBk5-4L9imCdcpWnIViBcGxQlMkCkHZu6yP-ZHKI4Eibqo-I8ys8MfHqcZdLsQRCUyERGo0mlCcvJDvGqe2faqkVinNgh7UHPYcDr205MwwbWJPxfJGoBakPgINwOs8heA9o7XnXqmKgpjVHGB13zmEIQGArSCNtJ2PPWD83kVLhcvw4LZN',
+        width: 4000,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJxweMcMxq1moRE2mtr4nhNVY',
+    name: "Swift's",
+    latitude: -37.9129131,
+    longitude: 145.1340126,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/cafe-71.png',
+    rating: 3.5,
+    userRatingsTotal: 35,
+    priceLevel: undefined,
+    formattedAddress:
+      'Monash University Clayton Campus, Louis Matheson Library, Ground Floor Foyer/40 Exhibition Walk, Clayton VIC 3168, Australia',
+    formattedPhoneNum: '(03) 9905 2886',
+    website: undefined,
+    photos: [
+      {
+        height: 2304,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/105087574845721738211"\u003epratiwi larosa\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcKMsLnlIk6h93ss8YLZp242JweSf0R58mgSjl5Ah3yK-htiqtuGIj77x0PKzoS0qCzGgtkt_ZF3cQX1h8sJPl93HsadD8Zt0Ti7agOHMrgJRa4NIKm65q6Tl7arh95gdMkfNDCXWpQK0BI5b0qrs8gV0ijW-xgCxEIyBcdLvGkOD4vjLHsvdZGBhYi_ijwbBBgAyHUKbTkvjf_yvU0JKz_IFGh9f5opx66Mz2wOb-fJoNGTzKTKEwBrz2Z5AyAggm2vB1Fv4DQjTJWvN1sHh33VUe8i3ucP0-0A5XDvofzukYLHkeQ',
+        width: 4096,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJB3XChUVr1moRURgtzcD-1TM',
+    name: "Sammy's",
+    latitude: -37.9128243,
+    longitude: 145.1365006,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/cafe-71.png',
+    rating: 4.3,
+    userRatingsTotal: 32,
+    priceLevel: undefined,
+    formattedAddress: '42 Scenic Blvd, Clayton VIC 3168, Australia',
+    formattedPhoneNum: undefined,
+    website: undefined,
+    photos: [
+      {
+        height: 3024,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/108311528551142898808"\u003e許佩雯\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcJkkaOQ9HwRElD4rPrvdP-G4K3fFpD5zv0kg7TrEQP9k0yzQI71NXuri95xtRykm5flH6a7A-QnZTUj2Bp95ejGlsT_2CUXjzZZ4Pl_d7PiUQBYeuDvZax_M7uRyZzHXeVwrkn1yhqqckGwPn0_8InpPk1RCTHkVplnQvKCOB949JoSGOPFW9BZMVz7d_znBSUOgkv_ruaRKLRtEjr_DjH11XeMXe4sOyZM9xV1nfF80W9wzDET_LjQAmEK1W5vY6e8c5E0YADQAuCdfFbmBvEq5xBFKeYGT7l6hXWjlwzgkTBQvag',
+        width: 4032,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJ605lD75r1moR9XUl0U8mEJc',
+    name: "The Count's",
+    latitude: -37.91314810000001,
+    longitude: 145.1337317,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/restaurant-71.png',
+    rating: 4.5,
+    userRatingsTotal: 52,
+    priceLevel: undefined,
+    formattedAddress:
+      'Monash University Clayton Campus, 48 Exhibition Walk The Ian Potter Centre for Performing Arts, Clayton VIC 3168, Australia',
+    formattedPhoneNum: '(03) 9068 6150',
+    website:
+      'https://www.monash.edu/performing-arts-centres/eat-drink-clayton-campus/',
+    photos: [
+      {
+        height: 3744,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/102130747075042794467"\u003eA Google User\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcL0B_Qr78d0mIoAMhgFf2ju6mGAab_0jbCyawyn8sqGUMnE1TmnfLKiI_ZctHFUFSqjzHRQxdcQbMC23RonMG9x-NWlF4ENaPIndG-zCgYEVYChO48PwYxzUMYh8cdhIr5MWEC5eoEdOjs2wSpieo2iVh3DNKEl0KI099Sa_GH5mqTprLEIRmwwM-0bEgzaJYfrwt5nE72Aewh62a1Lgs66pRJhmv-ERA11h1PmdMnJiKmV4LUVfmMc77pStVj5VvcefBoP7lTEGwRvi4gyMCfPmwTC7BEFYOs_03ncqArn-t75Tkf25BaoeuoN3zvhwPdVIFj1do-n9aF1SEheBOYqPw83w-6Fo0YrDK63AQ9tqpfGJdPQA-UcDy4ttZ4OqZhoCDS6MK23ylwJ_tS6qknd52e_R5fnnhKuUE2IE-9XsYhjyT6--Vkeg9wUZPJrlC121TkJIajOLGEQR7KCunH704ibXRCc5TW-tRDgkMsFSa0rzi7S4OPg_MarboRiVtf9oGDDYPG609qK5gzS_bJlXNgI_F7QoP3H-rI4xcXUpvHNYQUbj36LmC-WYsV7zK5A1Q',
+        width: 5616,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJv9hPsEsV1moRXpFmIptz_V4',
+    name: 'Halls Cafe',
+    latitude: -37.9075912,
+    longitude: 145.1411061,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/cafe-71.png',
+    rating: 4.3,
+    userRatingsTotal: 44,
+    priceLevel: 1,
+    formattedAddress:
+      'Monash University Clayton Campus, 58 College Wy, Clayton VIC 3800, Australia',
+    formattedPhoneNum: '(03) 9905 6498',
+    website: 'https://www.monash.edu/accommodation/residential-life/halls-cafe',
+    photos: [
+      {
+        height: 1366,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/102783476753263137342"\u003eA Google User\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcLarfz_zOJ4PR0r_JkYR_5K0SEjI0Pkeg0bh7sP3uQ2p7HKw-EJcmR76ispBkY_v6bvuYysQgAAq_ykcd69HsoZz7dEwIbp8u_rpc_s6EU2HEVChvBX8Z1rV1jzRVmLiOYSTIqGVaoP6F7nerJBLVLg_NwUJqheRPS5onJmv7H8DtRSrhO3AkuNYs1mZnsFrRW-MScddTBOMQ3UHdvH3B3gM3Iydy7bvdQfx-BTyTjNcC16QX2c-OLbtCuo4J2wLqOh_IZB4QgAqe-5W50FvjHLNnBC7ov2dkN-B8TFZJDZtkReNQI',
+        width: 2048,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJg6MP-stq1moR3EFZxw-yz5E',
+    name: 'Monash Club',
+    latitude: -37.9115443,
+    longitude: 145.1344524,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/restaurant-71.png',
+    rating: 4.3,
+    userRatingsTotal: 48,
+    priceLevel: undefined,
+    formattedAddress: '32 Exhibition Walk, Clayton VIC 3168, Australia',
+    formattedPhoneNum: '(03) 9905 0888',
+    website: 'https://www.monash.edu/club/contact',
+    photos: [
+      {
+        height: 679,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/117116671379617965259"\u003eA Google User\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcLq-Cm_WFRRrkWVR_bKG4_CMYYa3J2x7Is3M52QocB0d_vaFye6uXnFkf8atY05pOrXgo1wAzwfc17x0uEwYUaeH1snPm5S4SFegzJMzgw7o8wV9bg_Evb_YVs2e1aPazsctw8WAPai4Ia9cwloIhBsbNBr_y2p8o_DuCqcI8ouT7Os-_-f67ReUtXhyc_9Nplq3zJ8sE25hpmXMh_R3kmrUF_y2B2uvZUavhyUdAkm0ohmPnfxXKkV5yQDis1sm9GljYiT11W56IOQCh9uKK3VvNivFCXD9kJy-9SHNLdnpoINDaQ',
+        width: 1036,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJxzv1mMtq1moRbPu3FCfCf-U',
+    name: 'Church of Secular Coffee',
+    latitude: -37.9115443,
+    longitude: 145.1344524,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/cafe-71.png',
+    rating: 4.4,
+    userRatingsTotal: 214,
+    priceLevel: 2,
+    formattedAddress: '32 Exhibition Walk, Clayton VIC 3168, Australia',
+    formattedPhoneNum: '(03) 9905 0886',
+    website: undefined,
+    photos: [
+      {
+        height: 897,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/105424823373171091854"\u003eA Google User\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcKiBEMgmLJgW5Bu8OtOBBfH4_9OfPLbyLT0DcPY4Vn9NKLan0iGIUmngf4FUzI7N-CeVKKLytVq7pqHePKRhaNIA11LHWhTIS8UiJ6RJO4X4Lx_YdOp2J0brm2iWLpetlnm2_0Tqnt-b0PbJguadsDBtDfAljXqW6FpDXgcF8nlmrbuANaGtxDxcA8RtV5Bf3sE7jOf-D2YOUrZiF0v5jVet3HrMCA6nytGZJJ0QP9t_ii1dw13mFydkwFZfmVEaaLXHjHg3MKoDD_Oj_0n5fVzgRkRaKKjKpzys40kG_qk2jrwJJI',
+        width: 1125,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJcbPf1f5r1moRDBVcz8X_Cpg',
+    name: 'Sharetea Monash University',
+    latitude: -37.911538,
+    longitude: 145.1345368,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/generic_business-71.png',
+    rating: 3.9,
+    userRatingsTotal: 117,
+    priceLevel: undefined,
+    formattedAddress: 'Unit 50/32 Exhibition Walk, Clayton VIC 3168, Australia',
+    formattedPhoneNum: '(03) 8512 3061',
+    website: 'https://sharetea.com.au/',
+    photos: [
+      {
+        height: 2400,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/113463525830720461832"\u003eGediminas G\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcKbAu6yBW4aqI11_toQxPrreDoeLFSQDhJG_LkACJIYsO8b-lcoMpmo7haohjylFkCHFiMam20XDKB9WO_STIXiKioV_L2GLj1h5OH0ZzpovDBu957u_nOyZ_gs6ocReAvEoMUlHFC4MJJyFCooBlYH4up3QwuBbOQtkri1spHJORUaFECUXwa3K5PsemTEfii9E4P7bda2GBuAu5bWYeDpJi0DvCZtkuYodEh7PzWz6WWn4iRHFYTlbF1NvORPi0xLfGFnuME2D3NnHLScTd-Po6DQcVCDIyIPuHDP1EhHDPMP-Vl2k-mgo-m4gUigOzm2VGQjYQXL43hcgOlRjky3USsYyakf9ZncSMVgf4tW_06Aom9vcPJ2ADbov7NqoawGVK-y2hDfq8E33jVsMy42sWObQCrlMPY8eQuLZB9L5rEpBnSUkvPI1M3rMfRmv4eRkBgzevE5g8GQJhuwgFp_90VOPL0h_Ob_5tdTMqafrwRu6rvnZuQBH9nvV_LFyw9f7YGm-33pcNp4w6XVfFt5kAgr-K9K6r_pHFkBkqhikrhppDZ0JZj8YJYq9cNqklSi6Jbo',
+        width: 3200,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJheE-1shq1moRCK-RBW6jFbI',
+    name: 'Cafe Cinque Lire',
+    latitude: -37.910374,
+    longitude: 145.1294341,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/cafe-71.png',
+    rating: 4.3,
+    userRatingsTotal: 305,
+    priceLevel: 2,
+    formattedAddress: '15 Innovation Walk, Clayton VIC 3168, Australia',
+    formattedPhoneNum: '0411 634 948',
+    website: undefined,
+    photos: [
+      {
+        height: 3144,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/112840972355852504675"\u003eA Google User\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcKL-t_0fPUMSH1VzxTv6txzaTPdnGCCmVmwWAwjSmRaT0FUT67fJyZRqsizkdhEswZB1XTnWxyfj-8Jbe67826id3SFQWWsq9i4LNqYgKwFF1ceu9mxo97RzBLrlb3VrN-7lLdbhy6ZX-OFB4CcbyVCX6S6M8NhyfsWRNT-1qfLn2_DTqcGVNdJDhH0iJiFgwMVEWfGiiZr5hj-iofxYCBQs_dR_CKY4wFqI6LJeAKnXpSMXQSD4lgGDgO6oXIhWe15X3YhXV_MUHtoSPwlVitL153RPcrmvp3NUQ7yiDcDi6t_IW8',
+        width: 4192,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJn-CZQa5r1moRUvTGwkJAWZw',
+    name: "Joe's Pizzeria & Cafe",
+    latitude: -37.9116343,
+    longitude: 145.1357125,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/restaurant-71.png',
+    rating: 4,
+    userRatingsTotal: 215,
+    priceLevel: undefined,
+    formattedAddress:
+      'Logan, Hall 2/28 Sports Walk, Clayton VIC 3168, Australia',
+    formattedPhoneNum: '(03) 9558 6546',
+    website: 'https://www.joespizzeria.com.au/',
+    photos: [
+      {
+        height: 2184,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/104252061954582713268"\u003eViraj Senevirathne\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcLNHGiJIg4gtoAOJGdOt4BWCJ5vAJPFY0zf_q7bi8_D0FdMz7DdDYdHDLdEO0hpfAw1-StUvxpiC74RMLAXmg2kAvGxl4UOOuRU_eFDDk4Za-9blKC4dbD2Y42eQSDSNZzmLBDg7f2NSYreOOXBlpzhSDasL_06Ztp07JvVJb7au4TQra9ny_vWO7dboQgQzuX3sChjBfa0A0Nm9dp3I60Laft8-ZarbvBl9pYEgTerwg73S1Qn0POi-QX0wYXs0brHaKtVQrXmTRVo2YyjxuQC_2Mf7rUIN2ZJ8X8d8sX3kg-RLhkhUEklntCIxSKfIdHuAlaBmp4dk1JRgbNAObqot3VjrviU97_iBCPxvvathN8r-ZZsiQfE8lZ9shKEYfhtPC6GHbWVfjY3NN3zGlG3aPihwEbOYtpToDY9iTwZbvrNkJmE_StfSgs_9vALdHRY5xfTvY_Qfbxov9fv7i4xbUUn8uZY1sVpJEZBwJp_mZumoMmUlkxpukmvnIz3rX7GKYGh5yqlAmTZPyj2i3viospbsfaMLP711eo8IuDZ1P2ehwhsUYd5GtVv2hzKKbjKRAvW',
+        width: 4608,
+      },
+    ],
+  },
+  {
+    place_id: 'ChIJR4YcDstq1moR07xYME4nlz8',
+    name: 'Schnitz Monash University',
+    latitude: -37.9114887,
+    longitude: 145.1354825,
+    businessStatus: 'OPERATIONAL',
+    icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/restaurant-71.png',
+    rating: 4,
+    userRatingsTotal: 435,
+    priceLevel: 2,
+    formattedAddress: '28 Sports Walk, Clayton VIC 3800, Australia',
+    formattedPhoneNum: '(03) 8522 2866',
+    website: 'https://schnitz.com.au/location/monash-uni-clayton/',
+    photos: [
+      {
+        height: 3024,
+        htmlAttributions: [
+          '\u003ca href="https://maps.google.com/maps/contrib/104415915167182495928"\u003eMidhun Cherian\u003c/a\u003e',
+        ],
+        photoReference:
+          'AeeoHcJAFBRQNIqRVrkXQRSFcNcwQOpRMKuzLZfiDJRzIFeyL4CI6jKkDrxN1tKlX5djpmgvyiJdmFvefb_I6KAjNOF55xMsFS-BLQi31CPzHOPj765pBoMaeJT8Fz8FOhdqU9dOqon-KzahLY0A3gGRImaUuy9XVlkCFDGaV24c2k6qvI7AVeBUjeOllqRB7a3AA4OZhWTLZDJo8P-OPDtyS68qsP12SnxZ55AnkktUjIYYHf2XAZyLptJKjqCKJM9Oc1wjzPjxo2s-LmSzOBdNB31sDbAP7qo3KNtgGx1EhCT-931qVbJvk7dR9sP7BlavqJnKJ28qm4XxoLNrjU1PX6Hys8A7VeaB-kJ0ENp6NA6BDyZ9B_F31tGLry0wB6AyCBXeI9ASDLRowXyEQcUmiqjZN1P7x9C1NWQFQ_TLoRIZd6SUhFMw9qDglTxyLeKYQOjFrupAr8yu4g7gmbuAyyRHEImMaM9l5yggIyfhh11H3GJk6xO9x07x-K9PSnApY5d3Xeji2nFk-8p3BLWGGuLrl9QLMiQF8xseJWn1h4wGzaYN1ZwJaee027EFaOqSVAL-D0sg',
+        width: 4032,
+      },
+    ],
+  },
+];
diff --git a/backend/prisma/seeding/seedTypes.ts b/backend/prisma/seeding/seedTypes.ts
new file mode 100644
index 00000000..2cd37936
--- /dev/null
+++ b/backend/prisma/seeding/seedTypes.ts
@@ -0,0 +1,23 @@
+// Type definitions for custom data structures
+export type RestaurantPhoto = {
+  photoReference: string;
+  height: number;
+  width: number;
+  htmlAttributions: string[];
+};
+
+export interface RestaurantData {
+  place_id: string;
+  name: string;
+  latitude: number;
+  longitude: number;
+  businessStatus: string;
+  icon: string;
+  rating: number;
+  userRatingsTotal: number;
+  priceLevel?: number;
+  formattedAddress: string;
+  formattedPhoneNum?: string;
+  website?: string;
+  photos: RestaurantPhoto[];
+}


Reviews:
user: login: lachlanmacphee
body: Nice work! Couple changes to make just to keep things organised, but nothing critical other than an explanation of why the versions bumps have been made.
state: CHANGES_REQUESTED
author_association: COLLABORATOR
submitted_at: 2025-04-20T07:20:51Z
user: login: lachlanmacphee
body: Nice work, good to go!
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-04-21T00:52:40Z

Review comments:
diff_hunk: @@ -0,0 +1,848 @@
+// Add prisma seed script to package.json
+// # Generate Prisma client
+// npx prisma generate
+
+// # Apply migrations(if needed)
+// npx prisma migrate dev--name init
+
+// # Run the seed script
+// npx prisma db seed
+
+// # See the data created
+// npx prisma studio
+
+import { PrismaClient } from '../generated/prisma';
+
+const prisma = new PrismaClient();
+
+// Type definitions for custom data structures
+type RestaurantPhoto = {
+  photoReference: string;
+  height: number;
+  width: number;
+  htmlAttributions: string[];
+};
+
+interface RestaurantData {
path: backend/prisma/seed.ts
user: login: lachlanmacphee
body: Assuming you need this interface because not all fields on the Prisma `Restaurant` type are available from the restaurant list you got? If so, fine with having it, but preferably move it to a `seedTypes.ts` file under the `prisma` directory if okay
created_at: 2025-04-20T07:17:26Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,848 @@
+// Add prisma seed script to package.json
+// # Generate Prisma client
+// npx prisma generate
+
+// # Apply migrations(if needed)
+// npx prisma migrate dev--name init
+
+// # Run the seed script
+// npx prisma db seed
+
+// # See the data created
+// npx prisma studio
+
+import { PrismaClient } from '../generated/prisma';
+
+const prisma = new PrismaClient();
+
+// Type definitions for custom data structures
+type RestaurantPhoto = {
path: backend/prisma/seed.ts
user: login: lachlanmacphee
body: Same thing here, think it'd be good to move this to another file so the `seed.ts` file can be focused on the operations required for the seed.
created_at: 2025-04-20T07:17:59Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,848 @@
+// Add prisma seed script to package.json
+// # Generate Prisma client
+// npx prisma generate
+
+// # Apply migrations(if needed)
+// npx prisma migrate dev--name init
+
+// # Run the seed script
+// npx prisma db seed
+
+// # See the data created
+// npx prisma studio
+
+import { PrismaClient } from '../generated/prisma';
+
+const prisma = new PrismaClient();
+
+// Type definitions for custom data structures
+type RestaurantPhoto = {
+  photoReference: string;
+  height: number;
+  width: number;
+  htmlAttributions: string[];
+};
+
+interface RestaurantData {
+  place_id: string;
+  name: string;
+  latitude: number;
+  longitude: number;
+  businessStatus: string;
+  icon: string;
+  rating: number;
+  userRatingsTotal: number;
+  priceLevel?: number;
+  formattedAddress: string;
+  formattedPhoneNum?: string;
+  website?: string;
+  photos: RestaurantPhoto[];
+}
+
+// Define your list of restaurants
+const restaurants: RestaurantData[] = [
path: backend/prisma/seed.ts
user: login: lachlanmacphee
body: Can you please instead define this in a `seedConstants.ts` file under the `prisma` directory so as to keep this file focused on the seeding code?
created_at: 2025-04-20T07:18:38Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,10 @@
+/*
path: backend/prisma/migrations/20250420065435_/migration.sql
user: login: lachlanmacphee
body: Nice work with the migrations 👍 
created_at: 2025-04-20T07:19:10Z
author_association: COLLABORATOR
diff_hunk: @@ -68,7 +71,7 @@
     "ts-loader": "^9.5.2",
     "ts-node": "^10.9.2",
     "tsconfig-paths": "^4.2.0",
-    "typescript": "^5.7.3",
+    "typescript": "^5.8.3",
path: backend/package.json
user: login: lachlanmacphee
body: Would be good to just mention why you've had to bump these versions 👍 
created_at: 2025-04-20T07:19:38Z
author_association: COLLABORATOR

PR comments:
user: login: lachlanmacphee
created_at: 2025-04-20T07:25:19Z
body: > To get the data locally:
> 
> 1. Open the terminal in the backend directory
> 2. Generate the prisma client - `npx prisma generate`
> 3. Apply migrations - `npx prisma migrate dev--name init`
> 4. Run the seed script `npx prisma db seed`
> 5. Optionally, run `npx prisma studio` to view the data

Can you please add this information to the `README` under a database section? Also just note there needs to be a space between `dev` and `--name`?
author_association: COLLABORATOR
user: login: RaphS03
created_at: 2025-04-21T00:41:50Z
body: I believe I have resolved all concerns and reverted the version changes. I think they updated automatically but I don't think they are necessary.
author_association: COLLABORATOR