feat: sort by oldest
This commit is contained in:
parent
d9a299bb7f
commit
b23c76c2ec
2 changed files with 14 additions and 6 deletions
|
|
@ -23,7 +23,7 @@ interface Props {
|
||||||
|
|
||||||
const searchSchema = z.object({
|
const searchSchema = z.object({
|
||||||
q: querySchema.optional(),
|
q: querySchema.optional(),
|
||||||
sort: z.enum(["newest", "likes"], { message: "Sort must be either 'newest' or 'likes'" }).default("newest"),
|
sort: z.enum(["newest", "likes", "oldest"], { message: "Sort must be either 'newest', 'likes', or 'oldest'" }).default("newest"),
|
||||||
tags: z
|
tags: z
|
||||||
.string()
|
.string()
|
||||||
.optional()
|
.optional()
|
||||||
|
|
@ -79,9 +79,17 @@ export default async function MiiList({ searchParams, userId, inLikesPage }: Pro
|
||||||
...(userId && { userId }),
|
...(userId && { userId }),
|
||||||
};
|
};
|
||||||
|
|
||||||
// Sorting by likes or newest
|
// Sorting by likes, newest, or oldest
|
||||||
const orderBy: Prisma.MiiOrderByWithRelationInput[] =
|
let orderBy: Prisma.MiiOrderByWithRelationInput[];
|
||||||
sort === "likes" ? [{ likedBy: { _count: "desc" } }, { name: "asc" }] : [{ createdAt: "desc" }, { name: "asc" }];
|
|
||||||
|
if (sort === "likes") {
|
||||||
|
orderBy = [{ likedBy: { _count: "desc" } }, { name: "asc" }];
|
||||||
|
} else if (sort === "oldest") {
|
||||||
|
orderBy = [{ createdAt: "asc" }, { name: "asc" }];
|
||||||
|
} else {
|
||||||
|
// default to newest
|
||||||
|
orderBy = [{ createdAt: "desc" }, { name: "asc" }];
|
||||||
|
}
|
||||||
|
|
||||||
const select: Prisma.MiiSelect = {
|
const select: Prisma.MiiSelect = {
|
||||||
id: true,
|
id: true,
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,9 @@ import { Icon } from "@iconify/react";
|
||||||
import { useSelect } from "downshift";
|
import { useSelect } from "downshift";
|
||||||
import { redirect, useSearchParams } from "next/navigation";
|
import { redirect, useSearchParams } from "next/navigation";
|
||||||
|
|
||||||
type Sort = "likes" | "newest";
|
type Sort = "newest" | "likes" | "oldest";
|
||||||
|
|
||||||
const items = ["likes", "newest"];
|
const items = ["newest", "likes", "oldest"];
|
||||||
|
|
||||||
export default function SortSelect() {
|
export default function SortSelect() {
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue