Skip to content

Commit

Permalink
Fixing pagination and search from database
Browse files Browse the repository at this point in the history
  • Loading branch information
ratheesh-aot committed Jul 25, 2024
1 parent 4d43f6a commit 82de145
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 12 deletions.
12 changes: 12 additions & 0 deletions spiffworkflow-backend/src/spiffworkflow_backend/api.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3302,6 +3302,12 @@ paths:
description: Sort the results in the specified order (asc or desc)
schema:
type: string
- name: firstResult
in: query
required: false
description: Count of the first result to return
schema:
type: integer
- name: maxResults
in: query
required: false
Expand Down Expand Up @@ -3355,6 +3361,12 @@ paths:
description: Sort the results in the specified order (asc or desc)
schema:
type: string
- name: firstResult
in: query
required: false
description: Count of the first result to return
schema:
type: integer
- name: maxResults
in: query
required: false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ def process_definition_list(
page = (firstResult // maxResults) + 1
per_page = maxResults

process_models = ProcessModelService.get_process_models_for_api(user=g.user)
process_models = ProcessModelService.get_process_models_for_api(user=g.user, filter_by_name=nameLike)
process_models_to_return = ProcessModelService.get_batch(process_models, page=page, per_page=per_page)

# Convert to desired format
Expand All @@ -125,12 +125,6 @@ def process_definition_list(
for model in process_models_to_return
]

# Filter by nameLike if provided TODO : Change to filter using db query itself.
if nameLike:
pattern = nameLike.replace('%', '*').lower()
converted_process_models = [
model for model in converted_process_models if fnmatch.fnmatch(model["name"].lower(), pattern)
]
if return_count_only:
return make_response(jsonify({"count": len(converted_process_models)}), 200)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ def get_process_model(cls, process_model_id: str) -> ProcessModelInfo:
process_model_id is the full path to the model--including groups.
"""
# Return process model from database
#TODO Change for multi tenancy and versions
# TODO Change for multi tenancy and versions
return ProcessModelInfo.query.filter_by(id=process_model_id).first()

# if not os.path.exists(FileSystemService.root_path()):
Expand All @@ -206,8 +206,17 @@ def get_process_models(
process_group_id: str | None = None,
recursive: bool | None = False,
include_files: bool | None = False,
filter_by_name: str | None = None
) -> list[ProcessModelInfo]:
process_models = []
# TODO ff : Need refinements here
query = ProcessModelInfo.query

# Applying the filter by name if provided
if filter_by_name:
query = query.filter(ProcessModelInfo.display_name.like(f"{filter_by_name}"))

process_models_infos = query.all()

# root_path = FileSystemService.root_path()
# if process_group_id:
# awesome_id = process_group_id.replace("/", os.sep)
Expand All @@ -221,8 +230,6 @@ def get_process_models(
# FileSystemService.standard_directory_predicate(recursive),
# FileSystemService.is_process_model_json_file,
# )
#TODO ff : Need refinements here
process_models_infos = ProcessModelInfo.query.all()

# for process_models_info in process_models_infos:
# process_model = cls.get_process_model_from_path(file)
Expand All @@ -246,6 +253,7 @@ def get_process_models_for_api(
filter_runnable_by_user: bool | None = False,
filter_runnable_as_extension: bool | None = False,
include_files: bool | None = False,
filter_by_name: str | None = None
) -> list[ProcessModelInfo]:
if filter_runnable_as_extension and filter_runnable_by_user:
raise Exception(
Expand All @@ -254,7 +262,7 @@ def get_process_models_for_api(

# get the full list (before we filter it by the ones you are allowed to start)
process_models = cls.get_process_models(
process_group_id=process_group_id, recursive=recursive, include_files=include_files
process_group_id=process_group_id, recursive=recursive, include_files=include_files, filter_by_name=filter_by_name
)
process_model_identifiers = [p.id for p in process_models]

Expand Down

0 comments on commit 82de145

Please sign in to comment.