feat: persist view filters and sorts on Update View button click (#1290)

* feat: add viewFilters table

Closes #1121

* feat: add Update View button + Create View dropdown

Closes #1124, #1289

* feat: add View Filter resolvers

* feat: persist view filters and sorts on Update View button click

Closes #1123

* refactor: code review

- Rename recoil selectors
- Rename filters `field` property to `key`
This commit is contained in:
Thaïs
2023-08-23 18:20:43 +02:00
committed by GitHub
parent 76246ec880
commit 74ab0142c7
54 changed files with 1331 additions and 277 deletions

View File

@ -0,0 +1,21 @@
-- CreateEnum
CREATE TYPE "ViewFilterOperand" AS ENUM ('Contains', 'DoesNotContain', 'GreaterThan', 'LessThan', 'Is', 'IsNot');
-- CreateTable
CREATE TABLE "viewFilters" (
"displayValue" TEXT NOT NULL,
"key" TEXT NOT NULL,
"name" TEXT NOT NULL,
"operand" "ViewFilterOperand" NOT NULL,
"value" TEXT NOT NULL,
"viewId" TEXT NOT NULL,
"workspaceId" TEXT NOT NULL,
CONSTRAINT "viewFilters_pkey" PRIMARY KEY ("viewId","key")
);
-- AddForeignKey
ALTER TABLE "viewFilters" ADD CONSTRAINT "viewFilters_viewId_fkey" FOREIGN KEY ("viewId") REFERENCES "views"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "viewFilters" ADD CONSTRAINT "viewFilters_workspaceId_fkey" FOREIGN KEY ("workspaceId") REFERENCES "workspaces"("id") ON DELETE RESTRICT ON UPDATE CASCADE;

View File

@ -174,6 +174,7 @@ model Workspace {
pipelineProgresses PipelineProgress[]
activityTargets ActivityTarget[]
viewFields ViewField[]
viewFilters ViewFilter[]
views View[]
viewSorts ViewSort[]
@ -582,6 +583,7 @@ model View {
id String @id @default(uuid())
fields ViewField[]
filters ViewFilter[]
name String
objectId String
sorts ViewSort[]
@ -596,6 +598,34 @@ model View {
@@map("views")
}
enum ViewFilterOperand {
Contains
DoesNotContain
GreaterThan
LessThan
Is
IsNot
}
model ViewFilter {
displayValue String
key String
name String
operand ViewFilterOperand
value String
view View @relation(fields: [viewId], references: [id], onDelete: Cascade)
viewId String
/// @TypeGraphQL.omit(input: true, output: true)
workspace Workspace @relation(fields: [workspaceId], references: [id])
/// @TypeGraphQL.omit(input: true, output: true)
workspaceId String
@@id([viewId, key])
@@map("viewFilters")
}
enum ViewSortDirection {
asc
desc