From b30b7a3289a51d86dd44c3119240c124f5e42fea Mon Sep 17 00:00:00 2001 From: ricky rx Date: Mon, 22 Apr 2024 16:31:20 +0700 Subject: [PATCH] chore: copas lib from dinguin & rosterku --- app/Helper/Common.php | 29 ++++++++++++++++++++ app/Helper/DatabaseHelper.php | 29 ++++++++++++++++++++ app/Helper/Traits/Models/CanMultiOrderBy.php | 18 ++++++++++++ app/Helper/Traits/Models/CanMultiSearch.php | 20 ++++++++++++++ 4 files changed, 96 insertions(+) create mode 100644 app/Helper/Common.php create mode 100644 app/Helper/DatabaseHelper.php create mode 100644 app/Helper/Traits/Models/CanMultiOrderBy.php create mode 100644 app/Helper/Traits/Models/CanMultiSearch.php diff --git a/app/Helper/Common.php b/app/Helper/Common.php new file mode 100644 index 0000000..89c4f6c --- /dev/null +++ b/app/Helper/Common.php @@ -0,0 +1,29 @@ + 'nullable|array', + "$key.*" => ['nullable', 'string', Rule::in(['asc', 'desc'])], + ]; + } + public static function getSearchValidation() { return 'nullable|string'; } + } +?> \ No newline at end of file diff --git a/app/Helper/Traits/Models/CanMultiOrderBy.php b/app/Helper/Traits/Models/CanMultiOrderBy.php new file mode 100644 index 0000000..c192e6b --- /dev/null +++ b/app/Helper/Traits/Models/CanMultiOrderBy.php @@ -0,0 +1,18 @@ + $direction) { + $queryBuilder->orderBy($column, $direction); + } + } else if($defaultOrderBy) { + $queryBuilder->orderByRaw($defaultOrderBy); + } + } +} diff --git a/app/Helper/Traits/Models/CanMultiSearch.php b/app/Helper/Traits/Models/CanMultiSearch.php new file mode 100644 index 0000000..365db91 --- /dev/null +++ b/app/Helper/Traits/Models/CanMultiSearch.php @@ -0,0 +1,20 @@ +where(function($q) use($search, $searchColumns) { + foreach($searchColumns as $column) { + $q->orWhere($column, 'ilike', "%$search%"); + } + }); + } +}