1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2025-12-12 21:54:03 +00:00

Interfaces -> Contracts

This commit is contained in:
Samuel Štancl 2019-09-05 19:25:32 +02:00
parent e4f27e7396
commit 89bf90f595
4 changed files with 81 additions and 0 deletions

View file

@ -0,0 +1,29 @@
<?php
declare(strict_types=1);
namespace Stancl\Tenancy\Contracts;
interface StorageDriver
{
public function identifyTenant(string $domain): array;
/** @return array[] */
public function getAllTenants(array $uuids = []): array;
public function getTenantById(string $uuid, array $fields = []): array;
public function getTenantIdByDomain(string $domain): ?string;
public function createTenant(string $domain, string $uuid): array;
public function deleteTenant(string $uuid): bool;
public function get(string $uuid, string $key);
public function getMany(string $uuid, array $keys): array;
public function put(string $uuid, string $key, $value);
public function putMany(string $uuid, array $values): array;
}

View file

@ -0,0 +1,11 @@
<?php
namespace Stancl\Tenancy\Contracts;
use Stancl\Tenancy\Tenant;
interface TenancyBootstrapper
{
public function start(Tenant $tenant); // todo better name?
public function end(Tenant $tenant); // todo arg?
}

View file

@ -0,0 +1,24 @@
<?php
declare(strict_types=1);
namespace Stancl\Tenancy\Contracts;
interface TenantDatabaseManager
{
/**
* Create a database.
*
* @param string $name Name of the database.
* @return bool
*/
public function createDatabase(string $name): bool;
/**
* Delete a database.
*
* @param string $name Name of the database.
* @return bool
*/
public function deleteDatabase(string $name): bool;
}

View file

@ -0,0 +1,17 @@
<?php
declare(strict_types=1);
namespace Stancl\Tenancy\Contracts;
interface UniqueIdentifierGenerator
{
/**
* Generate a unique identifier.
*
* @param string $domain
* @param array $data
* @return string
*/
public static function handle(string $domain, array $data = []): string;
}