export const getPostList = query({
args: {
paginationOpts: paginationOptsValidator,
categoryId: v.optional(v.id("categories")),
title: v.optional(v.string()),
sortedBy: v.string(),
min: v.optional(v.number()),
max: v.optional(v.number()),
},
handler: async (ctx, args) => {
var res = ctx.db.query("post");
if (args.categoryId) {
var res = res.filter((q) => q.eq(q.field("categoryId"), args.categoryId));
}
if (args.title) {
var res = res.filter((q) => q.eq(q.field("title"), args.title));
}
if (args.min) {
var res = res.filter((q) => q.gte(q.field("pricing"), args.min!));
}
if (args.max) {
var res = res.filter((q) => q.lte(q.field("pricing"), args.max!));
}
if (args.sortedBy === "oldest") {
return await res.order("asc").paginate(args.paginationOpts);
} else if (args.sortedBy === "desc") {
const x = await res.paginate(args.paginationOpts);
const ret = x.page.sort((a, b) => b.pricing - a.pricing);
return x;
} else if (args.sortedBy === "asc") {
const x = await res.paginate(args.paginationOpts);
const ret = x.page.sort((a, b) => a.pricing - b.pricing);
return x;
} else {
return await res.order("desc").paginate(args.paginationOpts);
}
},
});
export const getPostList = query({
args: {
paginationOpts: paginationOptsValidator,
categoryId: v.optional(v.id("categories")),
title: v.optional(v.string()),
sortedBy: v.string(),
min: v.optional(v.number()),
max: v.optional(v.number()),
},
handler: async (ctx, args) => {
var res = ctx.db.query("post");
if (args.categoryId) {
var res = res.filter((q) => q.eq(q.field("categoryId"), args.categoryId));
}
if (args.title) {
var res = res.filter((q) => q.eq(q.field("title"), args.title));
}
if (args.min) {
var res = res.filter((q) => q.gte(q.field("pricing"), args.min!));
}
if (args.max) {
var res = res.filter((q) => q.lte(q.field("pricing"), args.max!));
}
if (args.sortedBy === "oldest") {
return await res.order("asc").paginate(args.paginationOpts);
} else if (args.sortedBy === "desc") {
const x = await res.paginate(args.paginationOpts);
const ret = x.page.sort((a, b) => b.pricing - a.pricing);
return x;
} else if (args.sortedBy === "asc") {
const x = await res.paginate(args.paginationOpts);
const ret = x.page.sort((a, b) => a.pricing - b.pricing);
return x;
} else {
return await res.order("desc").paginate(args.paginationOpts);
}
},
});