Skip to content

Commit

Permalink
Feature/search
Browse files Browse the repository at this point in the history
  • Loading branch information
bvlinsky committed Apr 4, 2022
1 parent f9ea91c commit 76f1115
Show file tree
Hide file tree
Showing 262 changed files with 8,666 additions and 1,083 deletions.
4 changes: 0 additions & 4 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ APP_STORE_URL=http://localhost
APP_ADMIN_URL=http://admin.localhost

LOG_CHANNEL=stack
L5_SWAGGER_GENERATE_ALWAYS=false

QUEUE_CONNECTION=redis
CACHE_DRIVER=redis
Expand Down Expand Up @@ -41,9 +40,6 @@ SILVERBOX_HOST=silverbox.localhost
SILVERBOX_CLIENT=heseya
SILVERBOX_KEY=secret

FACEBOOK_APP_ID=
FACEBOOK_APP_SECRET=

FURGONETKA_ENABLED=false
FURGONETKA_WEBHOOK_SALT=tajnasól
FURGONETKA_LOGIN=
Expand Down
44 changes: 44 additions & 0 deletions app/Casts/MetadataValue.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<?php

namespace App\Casts;

use App\Enums\MetadataType;
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
use Illuminate\Database\Eloquent\Model;

class MetadataValue implements CastsAttributes
{
/**
* Cast the given value.
*
* @param Model $model
* @param string $key
* @param mixed $value
* @param array $attributes
*
* @return mixed
*/
public function get($model, string $key, $value, array $attributes): mixed
{
return match ($model->value_type->value) {
MetadataType::BOOLEAN => (bool) $value,
MetadataType::NUMBER => (float) $value,
default => $value
};
}

/**
* Prepare the given value for storage.
*
* @param Model $model
* @param string $key
* @param mixed $value
* @param array $attributes
*
* @return mixed
*/
public function set($model, string $key, $value, array $attributes)
{
return $value;
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?php

namespace App\SearchTypes;
namespace App\Criteria;

use Heseya\Searchable\Searches\Search;
use Heseya\Searchable\Criteria\Criterion;
use Illuminate\Database\Eloquent\Builder;

class DiscountSearch extends Search
class DiscountSearch extends Criterion
{
public function query(Builder $query): Builder
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?php

namespace App\SearchTypes;
namespace App\Criteria;

use Heseya\Searchable\Searches\Search;
use Heseya\Searchable\Criteria\Criterion;
use Illuminate\Database\Eloquent\Builder;

class ItemSearch extends Search
class ItemSearch extends Criterion
{
public function query(Builder $query): Builder
{
Expand Down
35 changes: 35 additions & 0 deletions app/Criteria/MetadataPrivateSearch.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php

namespace App\Criteria;

use App\Traits\PermissionUtility;
use Heseya\Searchable\Criteria\Criterion;
use Illuminate\Database\Eloquent\Builder;

class MetadataPrivateSearch extends Criterion
{
use PermissionUtility;

public function query(Builder $query): Builder
{
if ($this->deniesAbilityByModel('show_metadata_private', $query->getModel())) {
return $query;
}

return $query->where(function (Builder $query): void {
$query->whereHas('metadataPrivate', function (Builder $query): void {
$first = true;
foreach ($this->value as $key => $value) {
if ($first) {
$query->where('name', 'LIKE', "%${key}%")
->where('value', 'LIKE', "%${value}%");
$first = false;
} else {
$query->orWhere('name', 'LIKE', "%${key}%")
->where('value', 'LIKE', "%${value}%");
}
}
});
});
}
}
26 changes: 26 additions & 0 deletions app/Criteria/MetadataSearch.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?php

namespace App\Criteria;

use Heseya\Searchable\Criteria\Criterion;
use Illuminate\Database\Eloquent\Builder;

class MetadataSearch extends Criterion
{
public function makeQuery(Builder $query, string $relation): Builder
{
foreach ($this->value as $key => $value) {
$query->whereHas($relation, function (Builder $query) use ($key, $value): void {
$query->where('name', '=', $key)
->where('value', '=', $value);
});
}

return $query;
}

public function query(Builder $query): Builder
{
return $this->makeQuery($query, 'metadata');
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?php

namespace App\SearchTypes;
namespace App\Criteria;

use Heseya\Searchable\Searches\Search;
use Heseya\Searchable\Criteria\Criterion;
use Illuminate\Database\Eloquent\Builder;

class OrderSearch extends Search
class OrderSearch extends Criterion
{
public function query(Builder $query): Builder
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<?php

namespace App\SearchTypes;
namespace App\Criteria;

use Heseya\Searchable\Searches\Search;
use Heseya\Searchable\Criteria\Criterion;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\Auth;

class PermissionSearch extends Search
class PermissionSearch extends Criterion
{
public function query(Builder $query): Builder
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?php

namespace App\SearchTypes;
namespace App\Criteria;

use Heseya\Searchable\Searches\Search;
use Heseya\Searchable\Criteria\Criterion;
use Illuminate\Database\Eloquent\Builder;

class ProductSetSearch extends Search
class ProductSetSearch extends Criterion
{
public function query(Builder $query): Builder
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<?php

namespace App\SearchTypes;
namespace App\Criteria;

use App\Enums\RoleType;
use Heseya\Searchable\Searches\Search;
use Heseya\Searchable\Criteria\Criterion;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\Auth;

class RoleAssignableSearch extends Search
class RoleAssignableSearch extends Criterion
{
public function query(Builder $query): Builder
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?php

namespace App\SearchTypes;
namespace App\Criteria;

use Heseya\Searchable\Searches\Search;
use Heseya\Searchable\Criteria\Criterion;
use Illuminate\Database\Eloquent\Builder;

class RoleSearch extends Search
class RoleSearch extends Criterion
{
public function query(Builder $query): Builder
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?php

namespace App\SearchTypes;
namespace App\Criteria;

use Heseya\Searchable\Searches\Search;
use Heseya\Searchable\Criteria\Criterion;
use Illuminate\Database\Eloquent\Builder;

class SchemaSearch extends Search
class SchemaSearch extends Criterion
{
public function query(Builder $query): Builder
{
Expand Down
6 changes: 3 additions & 3 deletions app/SearchTypes/TagSearch.php → app/Criteria/TagSearch.php
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?php

namespace App\SearchTypes;
namespace App\Criteria;

use Heseya\Searchable\Searches\Search;
use Heseya\Searchable\Criteria\Criterion;
use Illuminate\Database\Eloquent\Builder;

class TagSearch extends Search
class TagSearch extends Criterion
{
public function query(Builder $query): Builder
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?php

namespace App\SearchTypes;
namespace App\Criteria;

use Heseya\Searchable\Searches\Search;
use Heseya\Searchable\Criteria\Criterion;
use Illuminate\Database\Eloquent\Builder;

class UserSearch extends Search
class UserSearch extends Criterion
{
public function query(Builder $query): Builder
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?php

namespace App\SearchTypes;
namespace App\Criteria;

use Heseya\Searchable\Searches\Search;
use Heseya\Searchable\Criteria\Criterion;
use Illuminate\Database\Eloquent\Builder;

class WhereBelongsToManyById extends Search
class WhereBelongsToManyById extends Criterion
{
public function query(Builder $query): Builder
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?php

namespace App\SearchTypes;
namespace App\Criteria;

use Heseya\Searchable\Searches\Search;
use Heseya\Searchable\Criteria\Criterion;
use Illuminate\Database\Eloquent\Builder;

class WhereBelongsToSet extends Search
class WhereBelongsToSet extends Criterion
{
public function query(Builder $query): Builder
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?php

namespace App\SearchTypes;
namespace App\Criteria;

use Heseya\Searchable\Searches\Search;
use Heseya\Searchable\Criteria\Criterion;
use Illuminate\Database\Eloquent\Builder;

class WhereCreatedAfter extends Search
class WhereCreatedAfter extends Criterion
{
public function query(Builder $query): Builder
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<?php

namespace App\SearchTypes;
namespace App\Criteria;

use Heseya\Searchable\Searches\Search;
use Heseya\Searchable\Criteria\Criterion;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Str;

class WhereCreatedBefore extends Search
class WhereCreatedBefore extends Criterion
{
public function query(Builder $query): Builder
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?php

namespace App\SearchTypes;
namespace App\Criteria;

use Heseya\Searchable\Searches\Search;
use Heseya\Searchable\Criteria\Criterion;
use Illuminate\Database\Eloquent\Builder;

class WhereHasSlug extends Search
class WhereHasSlug extends Criterion
{
public function query(Builder $query): Builder
{
Expand Down
22 changes: 22 additions & 0 deletions app/Criteria/WhereHasStatusHidden.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace App\Criteria;

use Heseya\Searchable\Criteria\Criterion;
use Illuminate\Database\Eloquent\Builder;

class WhereHasStatusHidden extends Criterion
{
public function query(Builder $query): Builder
{
return $query->where(function (Builder $query): void {
$query->whereHas('status', function (Builder $query) {
return $query->where('hidden', $this->value);
});

if (!$this->value) {
$query->orWhereDoesntHave('status');
}
});
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?php

namespace App\SearchTypes;
namespace App\Criteria;

use Heseya\Searchable\Searches\Search;
use Heseya\Searchable\Criteria\Criterion;
use Illuminate\Database\Eloquent\Builder;

class WhereInIds extends Search
class WhereInIds extends Criterion
{
public function query(Builder $query): Builder
{
Expand Down
Loading

0 comments on commit 76f1115

Please sign in to comment.