mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-02-16 18:52:06 +00:00
Continue work on brewery page, implement like system
This commit is contained in:
16
src/prisma/migrations/20230423163714_/migration.sql
Normal file
16
src/prisma/migrations/20230423163714_/migration.sql
Normal file
@@ -0,0 +1,16 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "BreweryPostLike" (
|
||||
"id" STRING NOT NULL,
|
||||
"breweryPostId" STRING NOT NULL,
|
||||
"likedById" STRING NOT NULL,
|
||||
"createdAt" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMPTZ(3),
|
||||
|
||||
CONSTRAINT "BreweryPostLike_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "BreweryPostLike" ADD CONSTRAINT "BreweryPostLike_breweryPostId_fkey" FOREIGN KEY ("breweryPostId") REFERENCES "BreweryPost"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "BreweryPostLike" ADD CONSTRAINT "BreweryPostLike_likedById_fkey" FOREIGN KEY ("likedById") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
@@ -11,15 +11,15 @@ datasource db {
|
||||
}
|
||||
|
||||
model User {
|
||||
id String @id @default(uuid())
|
||||
username String @unique
|
||||
id String @id @default(uuid())
|
||||
username String @unique
|
||||
firstName String
|
||||
lastName String
|
||||
hash String
|
||||
email String @unique
|
||||
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
||||
updatedAt DateTime? @updatedAt @db.Timestamptz(3)
|
||||
isAccountVerified Boolean @default(false)
|
||||
email String @unique
|
||||
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
||||
updatedAt DateTime? @updatedAt @db.Timestamptz(3)
|
||||
isAccountVerified Boolean @default(false)
|
||||
dateOfBirth DateTime
|
||||
beerPosts BeerPost[]
|
||||
beerTypes BeerType[]
|
||||
@@ -29,6 +29,7 @@ model User {
|
||||
BeerPostLikes BeerPostLike[]
|
||||
BeerImage BeerImage[]
|
||||
BreweryImage BreweryImage[]
|
||||
BreweryPostLike BreweryPostLike[]
|
||||
}
|
||||
|
||||
model BeerPost {
|
||||
@@ -60,6 +61,16 @@ model BeerPostLike {
|
||||
updatedAt DateTime? @updatedAt @db.Timestamptz(3)
|
||||
}
|
||||
|
||||
model BreweryPostLike {
|
||||
id String @id @default(uuid())
|
||||
breweryPost BreweryPost @relation(fields: [breweryPostId], references: [id], onDelete: Cascade)
|
||||
breweryPostId String
|
||||
likedBy User @relation(fields: [likedById], references: [id], onDelete: Cascade)
|
||||
likedById String
|
||||
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
||||
updatedAt DateTime? @updatedAt @db.Timestamptz(3)
|
||||
}
|
||||
|
||||
model BeerComment {
|
||||
id String @id @default(uuid())
|
||||
rating Int
|
||||
@@ -83,17 +94,18 @@ model BeerType {
|
||||
}
|
||||
|
||||
model BreweryPost {
|
||||
id String @id @default(uuid())
|
||||
id String @id @default(uuid())
|
||||
name String
|
||||
location String
|
||||
beers BeerPost[]
|
||||
description String
|
||||
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
||||
updatedAt DateTime? @updatedAt @db.Timestamptz(3)
|
||||
postedBy User @relation(fields: [postedById], references: [id], onDelete: Cascade)
|
||||
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
||||
updatedAt DateTime? @updatedAt @db.Timestamptz(3)
|
||||
postedBy User @relation(fields: [postedById], references: [id], onDelete: Cascade)
|
||||
postedById String
|
||||
breweryComments BreweryComment[]
|
||||
breweryImages BreweryImage[]
|
||||
BreweryPostLike BreweryPostLike[]
|
||||
}
|
||||
|
||||
model BreweryComment {
|
||||
|
||||
33
src/prisma/seed/create/createNewBreweryPostLikes.ts
Normal file
33
src/prisma/seed/create/createNewBreweryPostLikes.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import type { BreweryPost, BreweryPostLike, User } from '@prisma/client';
|
||||
import DBClient from '../../DBClient';
|
||||
|
||||
const createNewBreweryPostLikes = async ({
|
||||
joinData: { breweryPosts, users },
|
||||
numberOfLikes,
|
||||
}: {
|
||||
joinData: {
|
||||
breweryPosts: BreweryPost[];
|
||||
users: User[];
|
||||
};
|
||||
numberOfLikes: number;
|
||||
}) => {
|
||||
const breweryPostLikePromises: Promise<BreweryPostLike>[] = [];
|
||||
// eslint-disable-next-line no-plusplus
|
||||
for (let i = 0; i < numberOfLikes; i++) {
|
||||
const breweryPost = breweryPosts[Math.floor(Math.random() * breweryPosts.length)];
|
||||
const user = users[Math.floor(Math.random() * users.length)];
|
||||
|
||||
breweryPostLikePromises.push(
|
||||
DBClient.instance.breweryPostLike.create({
|
||||
data: {
|
||||
breweryPost: { connect: { id: breweryPost.id } },
|
||||
likedBy: { connect: { id: user.id } },
|
||||
},
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
return Promise.all(breweryPostLikePromises);
|
||||
};
|
||||
|
||||
export default createNewBreweryPostLikes;
|
||||
@@ -13,6 +13,7 @@ import createNewBreweryImages from './create/createNewBreweryImages';
|
||||
import createNewBreweryPostComments from './create/createNewBreweryPostComments';
|
||||
import createNewBreweryPosts from './create/createNewBreweryPosts';
|
||||
import createNewUsers from './create/createNewUsers';
|
||||
import createNewBreweryPostLikes from './create/createNewBreweryPostLikes';
|
||||
|
||||
(async () => {
|
||||
try {
|
||||
@@ -52,6 +53,10 @@ import createNewUsers from './create/createNewUsers';
|
||||
numberOfLikes: 10000,
|
||||
joinData: { beerPosts, users },
|
||||
}),
|
||||
createNewBreweryPostLikes({
|
||||
numberOfLikes: 10000,
|
||||
joinData: { breweryPosts, users },
|
||||
}),
|
||||
createNewBeerImages({
|
||||
numberOfImages: 1000,
|
||||
joinData: { beerPosts, users },
|
||||
|
||||
Reference in New Issue
Block a user