feat(*): Enable filtering to either do a forms dex or a regular dex

This commit is contained in:
Josh Creek
2024-07-14 17:47:16 +01:00
parent 7467a4425f
commit 0edc7f0974
6 changed files with 5111 additions and 5086 deletions
+25 -5
View File
@@ -3,9 +3,13 @@ import CatchRecordModel, { type CatchRecord } from '$lib/models/CatchRecord';
import { CombinedData } from '$lib/models/CombinedData';
class CombinedDataRepository {
async findCombinedData(page: number = 1, limit: number = 20): Promise<CombinedData[]> {
async findCombinedData(
page: number = 1,
limit: number = 20,
enableForms: boolean = true
): Promise<CombinedData[]> {
const skip = (page - 1) * limit;
const combinedData: CombinedData[] = await PokedexEntryModel.aggregate([
const pipeline: any[] = [
{
$lookup: {
from: 'catchrecords',
@@ -29,7 +33,17 @@ class CombinedDataRepository {
},
{ $skip: skip },
{ $limit: limit }
]).exec();
];
if (!enableForms) {
pipeline.unshift({
$match: {
'boxPlacement.box': { $ne: null }
}
});
}
const combinedData: CombinedData[] = await PokedexEntryModel.aggregate(pipeline).exec();
// Filter out entries with no catch records
const filteredData = combinedData.filter((data) => data.catchRecord);
@@ -40,8 +54,14 @@ class CombinedDataRepository {
}));
}
async countCombinedData(): Promise<number> {
return PokedexEntryModel.countDocuments().exec();
async countCombinedData(enableForms: boolean): Promise<number> {
const filter: any = {};
if (!enableForms) {
filter['boxPlacement.box'] = { $ne: null };
}
return PokedexEntryModel.countDocuments(filter).exec();
}
}