general category trip

This commit is contained in:
2026-05-07 18:47:45 +07:00
parent 12f13f2049
commit 49aa64c522
25 changed files with 904 additions and 386 deletions
+14 -2
View File
@@ -1,5 +1,6 @@
import { prisma } from "@/lib/prisma";
import { Prisma } from "@/app/generated/prisma/client";
import type { ActivityCategory } from "@/app/generated/prisma/enums";
import {
utcStartOfDay,
utcDayStartFromYmd,
@@ -7,6 +8,13 @@ import {
maxUtcDate,
} from "@/lib/trip-dates";
export interface TripFilters {
q?: string;
from?: string;
to?: string;
category?: ActivityCategory;
}
export const tripRepo = {
async findAll() {
return prisma.trip.findMany({
@@ -30,11 +38,15 @@ export const tripRepo = {
});
},
async findOpen(filters?: { q?: string; from?: string; to?: string }) {
async findOpen(filters?: TripFilters) {
const todayStart = utcStartOfDay(new Date());
const andParts: Prisma.TripWhereInput[] = [{ status: "OPEN" }];
if (filters?.category) {
andParts.push({ category: filters.category });
}
if (!filters?.from && !filters?.to) {
andParts.push({ date: { gte: todayStart } });
} else {
@@ -72,7 +84,7 @@ export const tripRepo = {
andParts.push({
OR: [
{ title: { contains: filters.q, mode: "insensitive" } },
{ mountain: { contains: filters.q, mode: "insensitive" } },
{ destination: { contains: filters.q, mode: "insensitive" } },
{ location: { contains: filters.q, mode: "insensitive" } },
],
});