54 lines
1.1 KiB
TypeScript
54 lines
1.1 KiB
TypeScript
import {
|
|
PaginationSearchParams,
|
|
getPaginationForSearchParams,
|
|
} from '@/site/pagination';
|
|
import { Camera } from '.';
|
|
import {
|
|
getPhotosCached,
|
|
getPhotosCameraCountCached,
|
|
getPhotosCameraDateRangeCached,
|
|
} from '@/photo/cache';
|
|
import { pathForCamera } from '@/site/paths';
|
|
|
|
export const getPhotosCameraDataCached = ({
|
|
camera,
|
|
limit,
|
|
}: {
|
|
camera: Camera,
|
|
limit?: number,
|
|
}) =>
|
|
Promise.all([
|
|
getPhotosCached({ camera, limit }),
|
|
getPhotosCameraCountCached(camera),
|
|
getPhotosCameraDateRangeCached(camera),
|
|
]);
|
|
|
|
export const getPhotosCameraDataCachedWithPagination = async ({
|
|
camera,
|
|
limit: limitProp,
|
|
searchParams,
|
|
}: {
|
|
camera: Camera,
|
|
limit?: number,
|
|
searchParams?: PaginationSearchParams,
|
|
}) => {
|
|
const { offset, limit } = getPaginationForSearchParams(searchParams);
|
|
|
|
const [photos, count, dateRange] =
|
|
await getPhotosCameraDataCached({
|
|
camera,
|
|
limit: limitProp ?? limit,
|
|
});
|
|
|
|
const showMorePath = count > photos.length
|
|
? pathForCamera(camera, offset + 1)
|
|
: undefined;
|
|
|
|
return {
|
|
photos,
|
|
count,
|
|
dateRange,
|
|
showMorePath,
|
|
};
|
|
};
|