3
0

Fleshing out a bit further

This commit is contained in:
2022-07-20 20:38:09 +01:00
parent c46af9c4f7
commit cf03ff8f89
7 changed files with 70 additions and 9 deletions

14
.editorconfig Normal file
View File

@@ -0,0 +1,14 @@
# This is the top-most .editorconfig file; do not search in parent directories.
root = true
# All files.
[*]
end_of_line = LF
indent_style = space
indent_size = 4
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[Makefile]
indent_style = tab

1
.gitignore vendored
View File

@@ -1,2 +1,3 @@
/vendor
composer.lock
.phpunit.result.cache

View File

@@ -9,11 +9,21 @@
"doctrine/orm": "^2.12",
"symfony/framework-bundle": "*"
},
"require-dev": {
"vimeo/psalm": "^4.24",
"psalm/plugin-symfony": "^3.1",
"phpunit/phpunit": "^9.5"
},
"autoload": {
"psr-4": {
"Pcm\\SearchBundle\\": "src/"
}
},
},
"autoload-dev": {
"psr-4": {
"Pcm\\SearchBundle\\": "tests/"
}
},
"authors": [
{
"name": "Matt Feeny",
@@ -23,9 +33,5 @@
"name": "Bradley Goode",
"email": "bg@pcmsystems.co.uk"
}
],
"require-dev": {
"vimeo/psalm": "^4.24",
"psalm/plugin-symfony": "^3.1"
}
]
}

4
config/services.yaml Normal file
View File

@@ -0,0 +1,4 @@
services:
Pcm\SearchBundle\EventSubscriber\SearchableSubscriber:
tags:
- { name: doctrine.event_subscriber }

13
phpunit.xml Normal file
View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit colors="true" bootstrap="vendor/autoload.php">
<testsuites>
<testsuite name="Test Suite">
<directory suffix="Test.php">./tests/</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory>./src</directory>
</whitelist>
</filter>
</phpunit>

View File

@@ -14,7 +14,14 @@ class SearchService
{
public function __construct(private EntityManagerInterface $em) {}
public function index($entity)
/**
* Given an $entity that implements SearchableInterface, this method
* creates or updates a SearchIndex $entity
*
* @param SearchableInterface $entity
* @return void
*/
public function index(SearchableInterface $entity)
{
$searchIndex = $this->createSearchResult($entity);
@@ -22,7 +29,14 @@ class SearchService
$this->em->flush();
}
public function unIndex($entity)
/**
* Given an $entity that implements SearchableInterface, this method removes
* the item from the search index
*
* @param SearchableInterface $entity
* @return void
*/
public function unIndex(SearchableInterface $entity)
{
$class = get_class($entity);
@@ -37,6 +51,14 @@ class SearchService
}
}
/**
* Given an entity that implements SearchableInterface, this method first checks
* if the relevant SearchIndex entity exists. If it doesn't, it's created. The
* title and index data are set based on the methods in the $entity
*
* @param SearchableInterface $entity
* @return SearchIndex
*/
public function createSearchResult(SearchableInterface $entity): SearchIndex
{
$values = [];
@@ -76,7 +98,8 @@ class SearchService
}
/**
* Finds all searchable Doctrine entities.
* Finds all searchable Doctrine entities the implement SearchableInterface
* @return array
*/
public function getSearchableClasses(): array
{

0
tests/.gitkeep Normal file
View File