mirror of
https://github.com/archtechx/tenancy.git
synced 2025-12-12 12:54:05 +00:00
Add UUIDv7Generator
Also correct docblock for ULIDGenerator and add missing @see annotations in the config file.
This commit is contained in:
parent
36153a949b
commit
b967d1647a
5 changed files with 39 additions and 2 deletions
|
|
@ -48,6 +48,8 @@ return [
|
||||||
* SECURITY NOTE: Keep in mind that autoincrement IDs come with potential enumeration issues (such as tenant storage URLs).
|
* SECURITY NOTE: Keep in mind that autoincrement IDs come with potential enumeration issues (such as tenant storage URLs).
|
||||||
*
|
*
|
||||||
* @see \Stancl\Tenancy\UniqueIdentifierGenerators\UUIDGenerator
|
* @see \Stancl\Tenancy\UniqueIdentifierGenerators\UUIDGenerator
|
||||||
|
* @see \Stancl\Tenancy\UniqueIdentifierGenerators\ULIDGenerator
|
||||||
|
* @see \Stancl\Tenancy\UniqueIdentifierGenerators\UUIDv7Generator
|
||||||
* @see \Stancl\Tenancy\UniqueIdentifierGenerators\RandomHexGenerator
|
* @see \Stancl\Tenancy\UniqueIdentifierGenerators\RandomHexGenerator
|
||||||
* @see \Stancl\Tenancy\UniqueIdentifierGenerators\RandomIntGenerator
|
* @see \Stancl\Tenancy\UniqueIdentifierGenerators\RandomIntGenerator
|
||||||
* @see \Stancl\Tenancy\UniqueIdentifierGenerators\RandomStringGenerator
|
* @see \Stancl\Tenancy\UniqueIdentifierGenerators\RandomStringGenerator
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ use Illuminate\Support\Str;
|
||||||
use Stancl\Tenancy\Contracts\UniqueIdentifierGenerator;
|
use Stancl\Tenancy\Contracts\UniqueIdentifierGenerator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates a UUID for the tenant key.
|
* Generates a ULID for the tenant key.
|
||||||
*/
|
*/
|
||||||
class ULIDGenerator implements UniqueIdentifierGenerator
|
class ULIDGenerator implements UniqueIdentifierGenerator
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ use Ramsey\Uuid\Uuid;
|
||||||
use Stancl\Tenancy\Contracts\UniqueIdentifierGenerator;
|
use Stancl\Tenancy\Contracts\UniqueIdentifierGenerator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates a UUID for the tenant key.
|
* Generates a UUIDv4 for the tenant key.
|
||||||
*/
|
*/
|
||||||
class UUIDGenerator implements UniqueIdentifierGenerator
|
class UUIDGenerator implements UniqueIdentifierGenerator
|
||||||
{
|
{
|
||||||
|
|
|
||||||
20
src/UniqueIdentifierGenerators/UUIDv7Generator.php
Normal file
20
src/UniqueIdentifierGenerators/UUIDv7Generator.php
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Stancl\Tenancy\UniqueIdentifierGenerators;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Support\Str;
|
||||||
|
use Stancl\Tenancy\Contracts\UniqueIdentifierGenerator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates a UUIDv7 for the tenant key.
|
||||||
|
*/
|
||||||
|
class UUIDv7Generator implements UniqueIdentifierGenerator
|
||||||
|
{
|
||||||
|
public static function generate(Model $model): string|int
|
||||||
|
{
|
||||||
|
return Str::uuid7()->toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -23,6 +23,7 @@ use Stancl\Tenancy\UniqueIdentifierGenerators\RandomHexGenerator;
|
||||||
use Stancl\Tenancy\UniqueIdentifierGenerators\RandomIntGenerator;
|
use Stancl\Tenancy\UniqueIdentifierGenerators\RandomIntGenerator;
|
||||||
use Stancl\Tenancy\UniqueIdentifierGenerators\RandomStringGenerator;
|
use Stancl\Tenancy\UniqueIdentifierGenerators\RandomStringGenerator;
|
||||||
use Stancl\Tenancy\UniqueIdentifierGenerators\ULIDGenerator;
|
use Stancl\Tenancy\UniqueIdentifierGenerators\ULIDGenerator;
|
||||||
|
use Stancl\Tenancy\UniqueIdentifierGenerators\UUIDv7Generator;
|
||||||
|
|
||||||
use function Stancl\Tenancy\Tests\pest;
|
use function Stancl\Tenancy\Tests\pest;
|
||||||
|
|
||||||
|
|
@ -94,6 +95,20 @@ test('ulid ids are supported', function () {
|
||||||
expect($tenant2->id > $tenant1->id)->toBeTrue();
|
expect($tenant2->id > $tenant1->id)->toBeTrue();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('uuidv7 ids are supported', function () {
|
||||||
|
app()->bind(UniqueIdentifierGenerator::class, UUIDv7Generator::class);
|
||||||
|
|
||||||
|
$tenant1 = Tenant::create();
|
||||||
|
expect($tenant1->id)->toBeString();
|
||||||
|
expect(strlen($tenant1->id))->toBe(36);
|
||||||
|
|
||||||
|
$tenant2 = Tenant::create();
|
||||||
|
expect($tenant2->id)->toBeString();
|
||||||
|
expect(strlen($tenant2->id))->toBe(36);
|
||||||
|
|
||||||
|
expect($tenant2->id > $tenant1->id)->toBeTrue();
|
||||||
|
});
|
||||||
|
|
||||||
test('hex ids are supported', function () {
|
test('hex ids are supported', function () {
|
||||||
app()->bind(UniqueIdentifierGenerator::class, RandomHexGenerator::class);
|
app()->bind(UniqueIdentifierGenerator::class, RandomHexGenerator::class);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue