88 lines
2.5 KiB
PHP
88 lines
2.5 KiB
PHP
<?php
|
|
|
|
namespace alveolata\storage;
|
|
|
|
// require_once(DIR_ALVEOLATA . '/definitions.php');
|
|
require_once(DIR_ALVEOLATA . '/map/functions.php');
|
|
require_once(DIR_ALVEOLATA . '/storage/abstract/interface.php');
|
|
require_once(DIR_ALVEOLATA . '/storage/implementation-sqltablecluster/functions.php');
|
|
|
|
|
|
/**
|
|
* @author Christian Fraß <frass@greenscale.de>
|
|
*/
|
|
class implementation_sqltablecluster implements interface_storage/*<int,array>*/ {
|
|
|
|
/**
|
|
* @var struct_sqltablecluster $subject
|
|
* @author Christian Fraß <frass@greenscale.de>
|
|
*/
|
|
private $subject;
|
|
|
|
|
|
/**
|
|
* @param struct_sqltable $subject
|
|
* @author Christian Fraß <frass@greenscale.de>
|
|
*/
|
|
private function __construct(struct_sqltablecluster $subject) {$this->subject = $subject;}
|
|
|
|
|
|
/**
|
|
* @return implementation_sqltablecluster
|
|
* @author Christian Fraß <frass@greenscale.de>
|
|
*/
|
|
public static function make(
|
|
\alveolata\storage\implementation_sqltable $core,
|
|
array $tight_supplements,
|
|
array $loose_supplements,
|
|
\Closure $assemble,
|
|
\Closure $disperse
|
|
) : implementation_sqltablecluster
|
|
{
|
|
$subject = sqltablecluster_make(
|
|
$core->get_subject(),
|
|
\alveolata\map\map(
|
|
$tight_supplements,
|
|
function ($value) {
|
|
return (new struct_sqltablecluster_tight_supplement(
|
|
$value['target_table']->get_subject(),
|
|
$value['core_id_column'],
|
|
$value['include_own_id'],
|
|
$value['exclude_core_id']
|
|
));
|
|
}
|
|
),
|
|
\alveolata\map\map(
|
|
$loose_supplements,
|
|
function ($value) {
|
|
return (new struct_sqltablecluster_loose_supplement(
|
|
$value['target_table']->get_subject(),
|
|
$value['edge_table']->get_subject(),
|
|
$value['core_id_column'],
|
|
$value['target_id_column'],
|
|
));
|
|
}
|
|
),
|
|
$assemble,
|
|
$disperse
|
|
);
|
|
return (new implementation_sqltablecluster($subject));
|
|
}
|
|
|
|
|
|
/**
|
|
* implementations
|
|
*
|
|
* @author Christian Fraß <frass@greenscale.de>
|
|
*/
|
|
public function teardown() : void {sqltablecluster_teardown($this->subject);}
|
|
public function setup() : void {sqltablecluster_setup($this->subject);}
|
|
public function create($value) {return sqltablecluster_create($this->subject, $value);}
|
|
public function update($key, $value) : void {sqltablecluster_update($this->subject, $key, $value);}
|
|
public function delete($key) : void {sqltablecluster_delete($this->subject, $key);}
|
|
public function read($key) {return sqltablecluster_read($this->subject, $key);}
|
|
public function search(array $parameters) : array {return sqltablecluster_search($this->subject, $parameters);}
|
|
|
|
}
|
|
|
|
?>
|