rosavox/lib/alveolata/storage/implementation-sqltablecluster/wrapper-class.php
2025-05-23 07:33:29 +00:00

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);}
}
?>