Skip to content

Commit d35b4ae

Browse files
committed
Laravel Compatibility loader
1 parent e4d61b8 commit d35b4ae

26 files changed

+241
-61
lines changed

composer.json

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,11 @@
2020
"license": "MIT",
2121
"require": {
2222
"php": "^8.2",
23-
"illuminate/support": "^10.0|^11.0",
24-
"illuminate/container": "^10.0|^11.0",
25-
"illuminate/database": "^10.0|^11.0",
26-
"illuminate/events": "^10.0|^11.0",
23+
"illuminate/cache": "^10.36|^11|^12",
24+
"illuminate/container": "^10.0|^11|^12",
25+
"illuminate/database": "^10.30|^11|^12",
26+
"illuminate/events": "^10.0|^11|^12",
27+
"illuminate/support": "^10.0|^11|^12",
2728
"elasticsearch/elasticsearch": "^8.17"
2829
},
2930
"require-dev": {
@@ -41,6 +42,7 @@
4142
"phpstan/phpstan-phpunit": "^1.3",
4243
"spatie/ignition": "^1.15"
4344
},
45+
4446
"autoload-dev": {
4547
"psr-4": {
4648
"PDPhilip\\Elasticsearch\\Tests\\": "tests/"

phpstan-baseline.neon

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,3 @@ parameters:
99
message: "#^Method Illuminate\\\\Database\\\\Eloquent\\\\Model\\:\\:push\\(\\) invoked with 3 parameters, 0 required\\.$#"
1010
count: 6
1111
path: src/Relations/MorphToMany.php
12-
13-

phpstan-bootstrap.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?php
2+
3+
require_once __DIR__.'/vendor/autoload.php';
4+
5+
class_alias('PDPhilip\\Elasticsearch\\Laravel\\v11\\Connection\\ConnectionCompatibility', 'PDPhilip\\Elasticsearch\\Laravel\\Compatibility\\Connection\\ConnectionCompatibility');
6+
class_alias('PDPhilip\\Elasticsearch\\Laravel\\v11\\Schema\\BlueprintCompatibility', 'PDPhilip\\Elasticsearch\\Laravel\\Compatibility\\Schema\\BlueprintCompatibility');
7+
class_alias('PDPhilip\\Elasticsearch\\Laravel\\v11\\Schema\\BuilderCompatibility', 'PDPhilip\\Elasticsearch\\Laravel\\Compatibility\\Schema\\BuilderCompatibility');
8+
class_alias('PDPhilip\\Elasticsearch\\Laravel\\v11\\Schema\\GrammarCompatibility', 'PDPhilip\\Elasticsearch\\Laravel\\Compatibility\\Schema\\GrammarCompatibility');

phpstan.neon.dist

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ includes:
44
parameters:
55
level: 2
66

7+
bootstrapFiles:
8+
- phpstan-bootstrap.php
9+
710
paths:
811
- src
912

@@ -15,6 +18,7 @@ parameters:
1518
- '#Unsafe usage of new static#'
1619
- '#Call to an undefined method [a-zA-Z0-9\\_\<\>\(\)]+::[a-zA-Z]+\(\)#'
1720

21+
1822
universalObjectCratesClasses:
1923
- Illuminate\Support\Fluent
2024

src/Connection.php

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
use Illuminate\Support\Facades\Log;
2323
use PDPhilip\Elasticsearch\Exceptions\BulkInsertQueryException;
2424
use PDPhilip\Elasticsearch\Exceptions\QueryException;
25+
use PDPhilip\Elasticsearch\Laravel\Compatibility\Connection\ConnectionCompatibility;
2526
use PDPhilip\Elasticsearch\Query\Builder;
2627
use PDPhilip\Elasticsearch\Query\Processor;
2728
use PDPhilip\Elasticsearch\Schema\Blueprint;
@@ -40,6 +41,7 @@
4041
*/
4142
class Connection extends BaseConnection
4243
{
44+
use ConnectionCompatibility;
4345
use HasOptions;
4446

4547
const VALID_AUTH_TYPES = ['http', 'cloud'];
@@ -319,31 +321,23 @@ public function getSchemaBuilder()
319321
return new Schema\Builder($this);
320322
}
321323

322-
/**
323-
* @return Schema\Grammars\Grammar
324-
*/
325-
public function getSchemaGrammar()
326-
{
327-
return new Schema\Grammars\Grammar;
328-
}
329-
330324
/** {@inheritdoc} */
331325
protected function getDefaultPostProcessor(): Query\Processor
332326
{
333327
return new Query\Processor;
334328
}
335-
336-
/** {@inheritdoc} */
337-
protected function getDefaultQueryGrammar(): Query\Grammar
338-
{
339-
return new Query\Grammar;
340-
}
341-
342-
/** {@inheritdoc} */
343-
protected function getDefaultSchemaGrammar(): Schema\Grammars\Grammar
344-
{
345-
return new Schema\Grammars\Grammar;
346-
}
329+
//
330+
// /** {@inheritdoc} */
331+
// protected function getDefaultQueryGrammar(): Query\Grammar
332+
// {
333+
// return new Query\Grammar;
334+
// }
335+
//
336+
// /** {@inheritdoc} */
337+
// protected function getDefaultSchemaGrammar(): Schema\Grammars\Grammar
338+
// {
339+
// return new Schema\Grammars\Grammar;
340+
// }
347341

348342
// ----------------------------------------------------------------------
349343
// Connection Setters

src/ElasticServiceProvider.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public function boot(): void
2323
*/
2424
public function register(): void
2525
{
26+
require_once __DIR__.'/Laravel/compatibility-loader.php';
2627
// Add database driver.
2728
$this->app->resolving('db', function ($db) {
2829
$db->extend('elasticsearch', function ($config, $name) {

src/Helpers/Helpers.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,14 @@ public static function value(mixed $value, mixed ...$args): mixed
4545
{
4646
return $value instanceof Closure ? $value(...$args) : $value;
4747
}
48+
49+
public static function getLaravelMajorVersion(): int
50+
{
51+
$majorVersion = (int) Str::before(app()->version(), '.');
52+
if ($majorVersion < 11) {
53+
$majorVersion = 11;
54+
}
55+
56+
return $majorVersion;
57+
}
4858
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
namespace PDPhilip\Elasticsearch\Laravel;
4+
5+
use PDPhilip\Elasticsearch\Helpers\Helpers;
6+
7+
$laravelVersion = Helpers::getLaravelMajorVersion();
8+
9+
class_alias("PDPhilip\\Elasticsearch\\Laravel\\v{$laravelVersion}\\Connection\\ConnectionCompatibility", 'PDPhilip\\Elasticsearch\\Laravel\\Compatibility\\Connection\\ConnectionCompatibility');
10+
class_alias("PDPhilip\\Elasticsearch\\Laravel\\v{$laravelVersion}\\Schema\\BuilderCompatibility", 'PDPhilip\\Elasticsearch\\Laravel\\Compatibility\\Schema\\BuilderCompatibility');
11+
class_alias("PDPhilip\\Elasticsearch\\Laravel\\v{$laravelVersion}\\Schema\\BlueprintCompatibility", 'PDPhilip\\Elasticsearch\\Laravel\\Compatibility\\Schema\\BlueprintCompatibility');
12+
class_alias("PDPhilip\\Elasticsearch\\Laravel\\v{$laravelVersion}\\Schema\\GrammarCompatibility", 'PDPhilip\\Elasticsearch\\Laravel\\Compatibility\\Schema\\GrammarCompatibility');
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
3+
namespace PDPhilip\Elasticsearch\Laravel\v11\Connection;
4+
5+
use PDPhilip\Elasticsearch\Query;
6+
use PDPhilip\Elasticsearch\Schema;
7+
8+
trait ConnectionCompatibility
9+
{
10+
/**
11+
* @return Schema\Grammars\Grammar
12+
*/
13+
public function getSchemaGrammar()
14+
{
15+
return new Schema\Grammars\Grammar;
16+
}
17+
18+
/** {@inheritdoc} */
19+
protected function getDefaultQueryGrammar(): Query\Grammar
20+
{
21+
return new Query\Grammar;
22+
}
23+
24+
/** {@inheritdoc} */
25+
protected function getDefaultSchemaGrammar(): Schema\Grammars\Grammar
26+
{
27+
return new Schema\Grammars\Grammar;
28+
}
29+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
namespace PDPhilip\Elasticsearch\Laravel\v11\Schema;
4+
5+
use PDPhilip\Elasticsearch\Connection;
6+
use PDPhilip\Elasticsearch\Schema\Grammars\Grammar;
7+
8+
trait BlueprintCompatibility
9+
{
10+
public function build(Connection|\Illuminate\Database\Connection $connection, Grammar|\Illuminate\Database\Schema\Grammars\Grammar $grammar): void
11+
{
12+
foreach ($this->toDSL($connection, $grammar) as $statement) {
13+
if ($connection->pretending()) {
14+
return;
15+
}
16+
17+
$statement($this, $connection);
18+
}
19+
}
20+
}

0 commit comments

Comments
 (0)