Skip to content
This repository was archived by the owner on Jan 7, 2025. It is now read-only.

Commit 05a8fac

Browse files
Merge branch 'RichardStyles/main' into main
2 parents 7d80942 + 4ae6c87 commit 05a8fac

12 files changed

+62
-148
lines changed

src/Connection/MySqlConnection.php

Lines changed: 0 additions & 19 deletions
This file was deleted.

src/Connection/PostgresConnection.php

Lines changed: 0 additions & 19 deletions
This file was deleted.

src/Connection/SQLiteConnection.php

Lines changed: 0 additions & 19 deletions
This file was deleted.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
3+
namespace Dyrynda\Database\Exceptions;
4+
5+
class UnknownGrammarClass extends \Exception
6+
{
7+
/** @var string */
8+
protected $message = 'Unknown grammar class, unable to define database type.';
9+
}

src/LaravelEfficientUuidServiceProvider.php

Lines changed: 18 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,47 +2,35 @@
22

33
namespace Dyrynda\Database;
44

5-
use Illuminate\Database\Connection;
6-
use Illuminate\Database\Schema\ColumnDefinition;
5+
use Illuminate\Support\Fluent;
76
use Illuminate\Support\ServiceProvider;
87
use Illuminate\Database\Schema\Blueprint;
9-
use Dyrynda\Database\Connection\MySqlConnection;
10-
use Dyrynda\Database\Connection\SQLiteConnection;
11-
use Dyrynda\Database\Connection\PostgresConnection;
8+
use Illuminate\Database\Schema\ColumnDefinition;
9+
use Illuminate\Database\Schema\Grammars\Grammar;
10+
use Dyrynda\Database\Exceptions\UnknownGrammarClass;
1211

1312
class LaravelEfficientUuidServiceProvider extends ServiceProvider
1413
{
15-
/**
16-
* Bootstrap any application services.
17-
*
18-
* @return void
19-
*/
20-
public function boot()
21-
{
22-
//
23-
}
24-
25-
/**
26-
* Register any application services.
27-
*
28-
* @return void
29-
*/
3014
public function register()
3115
{
32-
Connection::resolverFor('mysql', function ($connection, $database, $prefix, $config): MySqlConnection {
33-
return new MySqlConnection($connection, $database, $prefix, $config);
34-
});
16+
Grammar::macro('typeEfficientUuid', function (Fluent $column) {
17+
switch (class_basename(static::class)) {
18+
case 'MySqlGrammar':
19+
return sprintf('binary(%d)', $column->length ?? 16);
3520

36-
Connection::resolverFor('pgsql', function ($connection, $database, $prefix, $config): PostgresConnection {
37-
return new PostgresConnection($connection, $database, $prefix, $config);
38-
});
39-
40-
Connection::resolverFor('sqlite', function ($connection, $database, $prefix, $config): SQLiteConnection {
41-
return new SQLiteConnection($connection, $database, $prefix, $config);
21+
case 'PostgresGrammar':
22+
return 'bytea';
23+
24+
case 'SQLiteGrammar':
25+
return 'blob(256)';
26+
27+
default:
28+
throw new UnknownGrammarClass;
29+
}
4230
});
4331

4432
Blueprint::macro('efficientUuid', function ($column): ColumnDefinition {
45-
/** @var Blueprint $this */
33+
/* @var Blueprint $this */
4634
return $this->addColumn('efficientUuid', $column);
4735
});
4836
}

src/Schema/Grammars/MySqlGrammar.php

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/Schema/Grammars/PostgresGrammar.php

Lines changed: 0 additions & 18 deletions
This file was deleted.

src/Schema/Grammars/SQLiteGrammar.php

Lines changed: 0 additions & 19 deletions
This file was deleted.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
4+
namespace Tests;
5+
6+
use Mockery as m;
7+
use Dyrynda\Database\Exceptions\UnknownGrammarClass;
8+
use Illuminate\Database\Connection;
9+
use Illuminate\Database\Schema\Blueprint;
10+
use Illuminate\Database\Schema\Grammars\SqlServerGrammar;
11+
12+
class DatabaseInvalidSchemaGrammarTest extends TestCase
13+
{
14+
public function tearDown(): void
15+
{
16+
m::close();
17+
}
18+
19+
public function testAddingUuid()
20+
{
21+
$blueprint = new Blueprint('users', function ($table) {
22+
$table->uuid('foo');
23+
$table->efficientUuid('bar');
24+
});
25+
26+
$connection = m::mock(Connection::class);
27+
28+
$this->expectExceptionObject(new UnknownGrammarClass());
29+
30+
$blueprint->toSql($connection, new SqlServerGrammar);
31+
}
32+
}

tests/DatabaseMySqlSchemaGrammarTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use Mockery as m;
66
use Illuminate\Database\Connection;
77
use Illuminate\Database\Schema\Blueprint;
8-
use Dyrynda\Database\Schema\Grammars\MySqlGrammar;
8+
use Illuminate\Database\Schema\Grammars\MySqlGrammar;
99

1010
class DatabaseMySqlSchemaGrammarTest extends TestCase
1111
{

tests/DatabasePostgresSchemaGrammarTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use Mockery as m;
66
use Illuminate\Database\Connection;
77
use Illuminate\Database\Schema\Blueprint;
8-
use Dyrynda\Database\Schema\Grammars\PostgresGrammar;
8+
use Illuminate\Database\Schema\Grammars\PostgresGrammar;
99

1010
class DatabasePostgresSchemaGrammarTest extends TestCase
1111
{

tests/DatabaseSQLiteSchemaGrammarTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use Mockery as m;
66
use Illuminate\Database\Connection;
77
use Illuminate\Database\Schema\Blueprint;
8-
use Dyrynda\Database\Schema\Grammars\SQLiteGrammar;
8+
use Illuminate\Database\Schema\Grammars\SQLiteGrammar;
99

1010
class DatabaseSQLiteSchemaGrammarTest extends TestCase
1111
{

0 commit comments

Comments
 (0)