export function connectOrNot(id?: string | null) { return { connect: id ? { id } : undefined }; } export function connectOrDisconnect(id?: string | null) { return { connect: id ? { id } : undefined, disconnect: id === null || undefined, }; } export function whereAddressQuery(query: string) { return [ { address: { contains: query, mode: "insensitive" } }, { addressEN: { contains: query, mode: "insensitive" } }, { soi: { contains: query, mode: "insensitive" } }, { soiEN: { contains: query, mode: "insensitive" } }, { moo: { contains: query, mode: "insensitive" } }, { mooEN: { contains: query, mode: "insensitive" } }, { street: { contains: query, mode: "insensitive" } }, { streetEN: { contains: query, mode: "insensitive" } }, { province: { name: { contains: query, mode: "insensitive" } } }, { province: { nameEN: { contains: query, mode: "insensitive" } } }, { district: { name: { contains: query, mode: "insensitive" } } }, { district: { nameEN: { contains: query, mode: "insensitive" } } }, { subDistrict: { name: { contains: query, mode: "insensitive" } } }, { subDistrict: { nameEN: { contains: query, mode: "insensitive" } } }, { subDistrict: { zipCode: { contains: query, mode: "insensitive" } } }, ] as const; } export function queryOrNot(query: any, where: T): T | undefined; export function queryOrNot(query: any, where: T, fallback: U): T | U; export function queryOrNot(query: any, where: T, fallback?: U) { return !!query ? where : fallback; } export function whereDateQuery(startDate: Date | undefined, endDate: Date | undefined) { return { createdAt: { gte: startDate, lte: endDate, }, }; }