refactor: abstract heavy database queries (resolves #10)
This commit is contained in:
@@ -0,0 +1,16 @@
|
|||||||
|
import { db } from '$lib/server/db';
|
||||||
|
import { aktis, ratings } from '$lib/server/db/schema';
|
||||||
|
import { avg, eq } from 'drizzle-orm';
|
||||||
|
|
||||||
|
export async function getAktisWithAvgRating() {
|
||||||
|
return await db
|
||||||
|
.select({
|
||||||
|
id: aktis.id,
|
||||||
|
title: aktis.title,
|
||||||
|
summary: aktis.summary,
|
||||||
|
rating: avg(ratings.rating)
|
||||||
|
})
|
||||||
|
.from(aktis)
|
||||||
|
.leftJoin(ratings, eq(aktis.id, ratings.aktiId))
|
||||||
|
.groupBy(aktis.id, aktis.title, aktis.summary);
|
||||||
|
}
|
||||||
@@ -1,19 +1,8 @@
|
|||||||
import { db } from '$lib/server/db';
|
import { getAktisWithAvgRating } from '$lib/server/db/queries';
|
||||||
import { aktis, ratings } from '$lib/server/db/schema';
|
|
||||||
import { avg, eq } from 'drizzle-orm';
|
|
||||||
import type { PageServerLoad } from './$types';
|
import type { PageServerLoad } from './$types';
|
||||||
|
|
||||||
export const load: PageServerLoad = async () => {
|
export const load: PageServerLoad = async () => {
|
||||||
const a = await db
|
const a = await getAktisWithAvgRating();
|
||||||
.select({
|
|
||||||
id: aktis.id,
|
|
||||||
title: aktis.title,
|
|
||||||
summary: aktis.summary,
|
|
||||||
rating: avg(ratings.rating)
|
|
||||||
})
|
|
||||||
.from(aktis)
|
|
||||||
.leftJoin(ratings, eq(aktis.id, ratings.aktiId))
|
|
||||||
.groupBy(aktis.id, aktis.title, aktis.summary);
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
aktis: a.map((a) => ({ ...a, rating: a.rating ? parseFloat(a.rating) : undefined }))
|
aktis: a.map((a) => ({ ...a, rating: a.rating ? parseFloat(a.rating) : undefined }))
|
||||||
|
|||||||
Reference in New Issue
Block a user