Feat: Implement mapbox for geocoding and location data for brewery posts

This commit is contained in:
Aaron William Po
2023-04-24 21:45:11 -04:00
parent eec082e73a
commit 4aeafc0de8
17 changed files with 1845 additions and 134 deletions

View File

@@ -1,4 +1,4 @@
import logger from '@/config/pino/logger';
import logger from '../../../config/pino/logger';
import cleanDatabase from './cleanDatabase';
cleanDatabase().then(() => {

View File

@@ -2,6 +2,7 @@
import { faker } from '@faker-js/faker';
import { User } from '@prisma/client';
import DBClient from '../../DBClient';
import geocode from '../../../config/mapbox/geocoder';
interface CreateNewBreweryPostsArgs {
numberOfPosts: number;
@@ -21,6 +22,15 @@ const createNewBreweryPosts = async ({
for (let i = 0; i < numberOfPosts; i++) {
const name = `${faker.commerce.productName()} Brewing Company`;
const location = faker.address.cityName();
// eslint-disable-next-line no-await-in-loop
const geodata = await geocode(location);
const city = geodata.text;
const stateOrProvince = geodata.context.find((c) => c.id.startsWith('region'))?.text;
const country = geodata.context.find((c) => c.id.startsWith('country'))?.text;
const coordinates = geodata.center;
const address = geodata.place_name;
const description = faker.lorem.lines(5);
const user = users[Math.floor(Math.random() * users.length)];
const createdAt = faker.date.past(1);
@@ -30,7 +40,13 @@ const createNewBreweryPosts = async ({
prisma.breweryPost.create({
data: {
name,
location,
city,
stateOrProvince,
country,
coordinates,
address,
description,
postedBy: { connect: { id: user.id } },
createdAt,

View File

@@ -26,7 +26,7 @@ import createNewBreweryPostLikes from './create/createNewBreweryPostLikes';
const users = await createNewUsers({ numberOfUsers: 1000 });
const [breweryPosts, beerTypes] = await Promise.all([
createNewBreweryPosts({ numberOfPosts: 100, joinData: { users } }),
createNewBreweryPosts({ numberOfPosts: 30, joinData: { users } }),
createNewBeerTypes({ joinData: { users } }),
]);
const beerPosts = await createNewBeerPosts({