Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
159 changes: 85 additions & 74 deletions docs.md

Large diffs are not rendered by default.

37 changes: 37 additions & 0 deletions src/Driver/MySQL.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,32 @@

class MySQL
{
/**
* @param string $fieldName
* @param string $alias
* @param string $orderBy
* @return string
*/
public function concat(string $fieldName, string $alias, string $orderBy): string
{
return ", GROUP_CONCAT($fieldName ORDER BY $orderBy SEPARATOR ';') as $alias ";
}

/**
* @return string
*/
public function close(): string
{
return ") ENGINE = InnoDB";
}

/**
* @param string $field
* @param string $default
* @param boolean $autoincrement
* @param string $null
* @return string
*/
public function integer(string $field, string $default = "", bool $autoincrement = false, string $null = "NOT NULL"): string
{
if ($autoincrement) {
Expand All @@ -30,26 +46,47 @@ public function integer(string $field, string $default = "", bool $autoincrement
return ", `$field` INT $null $default";
}

/**
* @param string $field
* @param string $default
* @param string $null
* @return string
*/
public function string(string $field, string $default = "", string $null = "NOT NULL"): string
{
return ", `$field` VARCHAR(255) $null $default";
}

/**
* @param string $field
* @param string $null
* @return string
*/
public function text(string $field, string $null = "NOT NULL"): string
{
return ", `$field` text $null";
}

/**
* @return string
*/
public function created_at(): string
{
return ", `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP";
}

/**
* @return string
*/
public function updated_at(): string
{
return ", `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP";
}

/**
* @param $field
* @return string
*/
public function pk($field): string
{
return ", PRIMARY KEY (`$field`)";
Expand Down
37 changes: 37 additions & 0 deletions src/Driver/PgSQL.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,32 @@

class PgSQL
{
/**
* @param string $fieldName
* @param string $alias
* @param string $orderBy
* @return string
*/
public function concat(string $fieldName, string $alias, string $orderBy): string
{
return ", array_to_string(array_agg($fieldName ORDER BY $orderBy), ';') $alias ";
}

/**
* @return string
*/
public function close(): string
{
return ");";
}

/**
* @param string $field
* @param string $default
* @param boolean $pk
* @param string $null
* @return string
*/
public function integer(string $field, string $default = "", bool $pk = false, string $null = "NOT NULL"): string
{
if ($pk) {
Expand All @@ -30,26 +46,47 @@ public function integer(string $field, string $default = "", bool $pk = false, s
return ", $field INTEGER $null $default";
}

/**
* @param string $field
* @param string $default
* @param string $null
* @return string
*/
public function string(string $field, string $default = "", string $null = "NOT NULL"): string
{
return ", $field VARCHAR(255) $null $default";
}

/**
* @param string $field
* @param string $null
* @return string
*/
public function text(string $field, string $null = "NOT NULL"): string
{
return ", $field TEXT $null";
}

/**
* @return string
*/
public function created_at(): string
{
return ", created_at TIMESTAMP without time zone";
}

/**
* @return string
*/
public function updated_at(): string
{
return ", updated_at TIMESTAMP without time zone";
}

/**
* @param string $field
* @return string
*/
public function pk(string $field): string
{
return "";
Expand Down
37 changes: 37 additions & 0 deletions src/Driver/SQLite.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,32 @@

class SQLite
{
/**
* @param string $fieldName
* @param string $alias
* @param string $orderBy
* @return string
*/
public function concat(string $fieldName, string $alias, string $orderBy): string
{
return ", GROUP_CONCAT($fieldName,';') $alias ";
}

/**
* @return string
*/
public function close(): string
{
return ")";
}

/**
* @param string $field
* @param string $default
* @param boolean $pk
* @param string $null
* @return string
*/
public function integer(string $field, string $default = "", bool $pk = false, string $null = "NOT NULL"): string
{
if ($pk) {
Expand All @@ -30,26 +46,47 @@ public function integer(string $field, string $default = "", bool $pk = false, s
return ", $field INTEGER $null $default";
}

/**
* @param string $field
* @param string $default
* @param string $null
* @return string
*/
public function string(string $field, string $default = "", string $null = "NOT NULL"): string
{
return ", $field TEXT $null $default";
}

/**
* @param string $field
* @param string $null
* @return string
*/
public function text(string $field, string $null = "NOT NULL"): string
{
return ", $field TEXT $null";
}

/**
* @return string
*/
public function created_at(): string
{
return ", created_at TEXT DEFAULT CURRENT_TIMESTAMP";
}

/**
* @return string
*/
public function updated_at(): string
{
return ", updated_at TEXT DEFAULT CURRENT_TIMESTAMP";
}

/**
* @param string $field
* @return string
*/
public function pk(string $field): string
{
return "";
Expand Down
25 changes: 25 additions & 0 deletions src/Entity.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,41 @@ class Entity
{
public static ?string $table = null;

/**
* @param $method
* @param array $parameters
* @return void
*/
public static function __callStatic($method, array $parameters = [])
{
return self::callMethod($method, $parameters);
}

/**
* @param $method
* @param array $parameters
* @return void
*/
public function __call($method, array $parameters = [])
{
return self::callMethod($method, $parameters);
}

/**
* Dynamically calls a method on the corresponding Model, Repository, or parent Repository class.
* The method first attempts to call the method on the Model class associated with the Entity.
* If the Model does not exist, it falls back to the Repository class.
* If the Repository does not exist, it defaults to the parent Repository class.
* -------------------------
* Динамически вызывает метод в соответствующем классе Model, Repository или родительском Repository.
* Метод сначала пытается вызвать метод в классе Model, связанном с Entity.
* Если Model не существует, используется класс Repository.
* Если Repository не существует, используется родительский класс Repository.
*
* @param $method
* @param array $parameters
* @return void
*/
protected static function callMethod($method, array $parameters)
{
$className = str_replace("Entity", "Model", get_called_class());
Expand Down
21 changes: 21 additions & 0 deletions src/Model.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,32 @@ class Model
{
public ?string $table;

/**
* @param string|null $table
*/
public function __construct(?string $table = null)
{
$this->table = $table;
}

/**
* Handles calls to undefined methods by delegating them to the corresponding Repository class.
* The method dynamically resolves the Repository class associated with the Model.
* If the Repository does not exist, it falls back to the parent Repository class.
* If the method exists in the resolved Repository, it is invoked with the provided parameters.
* Otherwise, an exception is thrown.
* -------------------------
* Обрабатывает вызовы неопределённых методов, делегируя их соответствующему классу Repository.
* Метод динамически определяет класс Repository, связанный с Model.
* Если Repository не существует, используется родительский класс Repository.
* Если метод существует в разрешённом Repository, он вызывается с предоставленными параметрами.
* В противном случае выбрасывается исключение.
*
* @param $method
* @param array $parameters
* @return void
* @throws RudraException
*/
public function __call($method, array $parameters = [])
{
$className = str_replace("Model", "Repository", get_called_class()) . "Repository";
Expand Down
Loading
Loading