general category trip
This commit is contained in:
@@ -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" } },
|
||||
],
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user