Skip to content

Commit

Permalink
Fix appwrite filters
Browse files Browse the repository at this point in the history
  • Loading branch information
omeraplak committed Apr 20, 2022
1 parent c6dbcb8 commit d23abb2
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -545,8 +545,8 @@ export const CreateProduct: React.FC<CreateProductProps> = ({
"default",
rcFile.name,
rcFile,
["*"],
["*"],
["role:all"],
["role:all"],
);

const url =
Expand Down
6 changes: 3 additions & 3 deletions examples/multi-tenancy/appwrite/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,18 @@
"@testing-library/jest-dom": "^5.12.0",
"@testing-library/react": "^11.2.6",
"@testing-library/user-event": "^12.8.3",
"@types/jest": "^26.0.23",
"@types/jest": "^26.0.24",
"@types/node": "^12.20.10",
"@types/react": "^17.0.4",
"@types/react-dom": "^17.0.3",
"@types/react-dom": "^17.0.4",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "^5.0.0",
"typescript": "^4.4.3",
"web-vitals": "^1.1.1"
},
"scripts": {
"dev": "react-scripts start",
"start": "react-scripts start",
"build": "DISABLE_ESLINT_PLUGIN=true react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,8 @@ export const CreateProduct: React.FC<CreateProductProps> = ({
"default",
rcFile.name,
rcFile,
["*"],
["*"],
["role:all"],
["role:all"],
);

const url =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ export const EditProduct: React.FC<EditProductProps> = ({
"default",
rcFile.name,
rcFile,
["role:all"],
["role:all"],
);

const url =
Expand Down
63 changes: 31 additions & 32 deletions packages/appwrite/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,31 +4,12 @@ import {
LiveEvent,
CrudFilters,
CrudSorting,
CrudFilter,
} from "@pankod/refine-core";
import { Appwrite } from "appwrite";
import { Appwrite, Query } from "appwrite";

export * from "appwrite";

const operators = {
eq: "=",
ne: "!=",
lt: "<",
gt: ">",
lte: "<=",
gte: ">=",
in: undefined,
nin: undefined,
contains: undefined,
containss: undefined,
ncontains: undefined,
ncontainss: undefined,
null: undefined,
between: undefined,
nbetween: undefined,
nnull: undefined,
or: undefined,
};

const appwriteEventToRefineEvent = {
"database.documents.create": "created",
"database.documents.update": "updated",
Expand Down Expand Up @@ -58,6 +39,27 @@ type GetAppwriteSortingType = {
};
};

const generateFilter = (filter: CrudFilter) => {
switch (filter.operator) {
case "eq":
return Query.equal(filter.field, filter.value);
case "ne":
return Query.notEqual(filter.field, filter.value);
case "gt":
return Query.greater(filter.field, filter.value);
case "gte":
return Query.greaterEqual(filter.field, filter.value);
case "lt":
return Query.lesser(filter.field, filter.value);
case "lte":
return Query.lesserEqual(filter.field, filter.value);
case "contains":
return Query.search(filter.field, `%${filter.value}%`);
default:
throw new Error(`Operator ${filter.operator} is not supported`);
}
};

export const getAppwriteFilters: GetAppwriteFiltersType = (filters) => {
if (!filters) {
return undefined;
Expand All @@ -66,16 +68,15 @@ export const getAppwriteFilters: GetAppwriteFiltersType = (filters) => {
const appwriteFilters: string[] = [];

for (const filter of filters) {
const operator = operators[filter.operator];

if (!operator) {
throw new Error(`Operator ${filter.operator} is not supported`);
}

if (filter.operator !== "or") {
const filterField = filter.field === "id" ? "$id" : filter.field;

appwriteFilters.push(`${filterField}${operator}${filter.value}`);
appwriteFilters.push(
generateFilter({
...filter,
field: filterField,
}),
);
}
}

Expand Down Expand Up @@ -160,8 +161,7 @@ export const dataProvider = (appwriteClient: Appwrite): DataProvider => {
const { $id, ...restData } =
await appwriteClient.database.createDocument(
resource,
// TODO: Make this configureable
"unique()",
metaData?.documentId ?? "unique()",
variables as unknown as object,
metaData?.readPermissions ?? ["role:all"],
metaData?.writePermissions ?? ["role:all"],
Expand All @@ -179,8 +179,7 @@ export const dataProvider = (appwriteClient: Appwrite): DataProvider => {
variables.map((document) =>
appwriteClient.database.createDocument<any>(
resource,
// TODO: Make this configureable
"unique()",
metaData?.documentId ?? "unique()",
document as unknown as object,
metaData?.readPermissions ?? ["role:all"],
metaData?.writePermissions ?? ["role:all"],
Expand Down

0 comments on commit d23abb2

Please sign in to comment.