refactor: define filter subjects for users and use plural resource names

This commit is contained in:
Dayv1dDev
2026-07-24 18:12:47 +02:00
parent 39b20195c8
commit 0085cb303f
+77 -23
View File
@@ -33,7 +33,7 @@ export type FilterOperator =
| "lte"
| "lt";
export type FilterResource = "project" | "gateway_charge";
export type FilterResource = "projects" | "gateway_charges" | "users";
export interface FilterOption {
value: string;
@@ -95,21 +95,21 @@ const filterSubjects: Record<string, FilterSubject> = {
key: "title",
type: "string",
compatibleOperators: ["equals"],
resources: ["project"],
resources: ["projects"],
suggest: suggestProjects,
},
subtitle: {
key: "subtitle",
type: "string",
compatibleOperators: ["equals"],
resources: ["project"],
resources: ["projects"],
suggest: suggestProjectsBySubtitle,
},
description: {
key: "description",
type: "string",
compatibleOperators: ["equals"],
resources: ["project"],
resources: ["projects"],
suggest: suggestProjectsByDescription,
},
projectStatus: {
@@ -117,7 +117,7 @@ const filterSubjects: Record<string, FilterSubject> = {
param: "status",
type: "string",
compatibleOperators: ["equals", "is_any_of"],
resources: ["project"],
resources: ["projects"],
options: projectStatuses,
},
chargeStatus: {
@@ -125,28 +125,28 @@ const filterSubjects: Record<string, FilterSubject> = {
param: "status",
type: "string",
compatibleOperators: ["equals", "is_any_of"],
resources: ["gateway_charge"],
resources: ["gateway_charges"],
options: gatewayChargeStatuses,
},
categories: {
key: "categories",
type: "string",
compatibleOperators: ["equals", "is_any_of"],
resources: ["project"],
resources: ["projects"],
suggest: suggestCategories,
},
owner: {
key: "owner",
type: "string",
compatibleOperators: ["equals", "is_any_of"],
resources: ["project"],
resources: ["projects"],
suggest: suggestOwner,
},
slug: {
key: "slug",
type: "string",
compatibleOperators: ["equals", "is_any_of"],
resources: ["project"],
resources: ["projects"],
suggest: suggestProjectsBySlug,
},
territoryCountry: {
@@ -154,40 +154,34 @@ const filterSubjects: Record<string, FilterSubject> = {
param: "territory.country",
type: "string",
compatibleOperators: ["equals", "is_any_of"],
resources: ["project"],
},
dateUpdated: {
key: "dateUpdated",
type: "date",
compatibleOperators: ["before", "after", "strictly_before", "strictly_after"],
resources: ["project", "gateway_charge"],
resources: ["projects"],
},
budgetAmount: {
key: "budgetAmount",
type: "number",
compatibleOperators: ["gte", "gt", "lte", "lt"],
resources: ["project"],
resources: ["projects"],
},
gateway: {
key: "gateway",
param: "checkout.gateway",
type: "string",
compatibleOperators: ["equals", "is_any_of"],
resources: ["gateway_charge"],
resources: ["gateway_charges"],
suggest: suggestGateways,
},
type: {
key: "type",
type: "string",
compatibleOperators: ["equals", "is_any_of"],
resources: ["gateway_charge"],
resources: ["gateway_charges"],
options: chargeTypes,
},
target: {
key: "target",
type: "string",
compatibleOperators: ["equals", "is_any_of"],
resources: ["gateway_charge"],
resources: ["gateway_charges"],
suggest: suggestTarget,
},
currency: {
@@ -195,7 +189,7 @@ const filterSubjects: Record<string, FilterSubject> = {
param: "money.currency",
type: "string",
compatibleOperators: ["equals", "is_any_of"],
resources: ["gateway_charge"],
resources: ["gateway_charges"],
options: currencies,
},
amount: {
@@ -203,13 +197,73 @@ const filterSubjects: Record<string, FilterSubject> = {
param: "money.amount",
type: "number",
compatibleOperators: ["gte", "gt", "lte", "lt"],
resources: ["gateway_charge"],
resources: ["gateway_charges"],
},
dateCreated: {
key: "dateCreated",
type: "date",
compatibleOperators: ["before", "after", "strictly_before", "strictly_after"],
resources: ["gateway_charge"],
resources: ["projects", "gateway_charges", "users"],
},
dateUpdated: {
key: "dateUpdated",
type: "date",
compatibleOperators: ["before", "after", "strictly_before", "strictly_after"],
resources: ["projects", "gateway_charges", "users"],
},
handle: {
key: "handle",
type: "string",
compatibleOperators: ["equals", "is_any_of"],
resources: ["users"],
},
email: {
key: "email",
type: "string",
compatibleOperators: ["equals", "is_any_of"],
resources: ["users"],
},
displayName: {
key: "displayName",
param: "displayName",
type: "string",
compatibleOperators: ["equals"],
resources: ["users"],
},
userType: {
key: "userType",
param: "type",
type: "string",
compatibleOperators: ["equals", "is_any_of"],
resources: ["users"],
options: [
{ value: "individual", label: "Individual" },
{ value: "organization", label: "Organization" },
],
},
active: {
key: "active",
type: "string",
compatibleOperators: ["equals"],
resources: ["users"],
options: [
{ value: "true", label: "Active" },
{ value: "false", label: "Inactive" },
],
},
userRoles: {
key: "userRoles",
param: "roles",
type: "string",
compatibleOperators: ["is_any_of"],
resources: ["users"],
},
userTerritoryCountry: {
key: "userTerritoryCountry",
param: "territory.country",
type: "string",
compatibleOperators: ["equals", "is_any_of"],
resources: ["users"],
},
};