Refactor: extract logic out of api route

This commit is contained in:
Aaron William Po
2023-10-30 12:37:29 -04:00
parent 8093817ccc
commit 51c29702d3
4 changed files with 127 additions and 20 deletions

View File

@@ -0,0 +1,38 @@
import DBClient from '@/prisma/DBClient';
import { z } from 'zod';
import BeerPostQueryResult from './schema/BeerPostQueryResult';
interface GetBeerPostsByBeerStyleIdArgs {
styleId: string;
pageSize: number;
pageNum: number;
}
const getBeerPostsByBeerStyleId = async ({
pageNum,
pageSize,
styleId,
}: GetBeerPostsByBeerStyleIdArgs): Promise<z.infer<typeof BeerPostQueryResult>[]> => {
const beers = await DBClient.instance.beerPost.findMany({
where: { styleId },
take: pageSize,
skip: pageNum * pageSize,
select: {
id: true,
name: true,
ibu: true,
abv: true,
createdAt: true,
updatedAt: true,
description: true,
postedBy: { select: { username: true, id: true } },
brewery: { select: { name: true, id: true } },
style: { select: { name: true, id: true, description: true } },
beerImages: { select: { alt: true, path: true, caption: true, id: true } },
},
});
return beers;
};
export default getBeerPostsByBeerStyleId;

View File

@@ -0,0 +1,38 @@
import DBClient from '@/prisma/DBClient';
import { z } from 'zod';
import BeerPostQueryResult from './schema/BeerPostQueryResult';
interface GetBeerPostsByBeerStyleIdArgs {
breweryId: string;
pageSize: number;
pageNum: number;
}
const getBeerPostsByBeerStyleId = async ({
pageNum,
pageSize,
breweryId,
}: GetBeerPostsByBeerStyleIdArgs): Promise<z.infer<typeof BeerPostQueryResult>[]> => {
const beers = await DBClient.instance.beerPost.findMany({
where: { breweryId },
take: pageSize,
skip: pageNum * pageSize,
select: {
id: true,
name: true,
ibu: true,
abv: true,
createdAt: true,
updatedAt: true,
description: true,
postedBy: { select: { username: true, id: true } },
brewery: { select: { name: true, id: true } },
style: { select: { name: true, id: true, description: true } },
beerImages: { select: { alt: true, path: true, caption: true, id: true } },
},
});
return beers;
};
export default getBeerPostsByBeerStyleId;