A super easy PHP Framework for web development!
https://github.com/exacti/phacil-framework
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.4 KiB
95 lines
2.4 KiB
1 year ago
|
<?php
|
||
|
/**
|
||
|
* Copyright © 2023 ExacTI Technology Solutions. All rights reserved.
|
||
|
* GPLv3 General License.
|
||
|
* https://exacti.com.br
|
||
|
* Phacil PHP Framework - https://github.com/exacti/phacil-framework
|
||
|
*/
|
||
|
|
||
|
namespace Phacil\Framework\MagiQL\Builder\Syntax;
|
||
|
|
||
|
use Phacil\Framework\MagiQL\Builder;
|
||
|
use Phacil\Framework\MagiQL\Manipulation\AbstractBaseQuery;
|
||
|
|
||
|
/**
|
||
|
* Class AbstractBaseWriter.
|
||
|
*/
|
||
|
abstract class AbstractBaseWriter
|
||
|
{
|
||
|
/**
|
||
|
* @var Builder
|
||
|
*/
|
||
|
protected $writer;
|
||
|
|
||
|
/**
|
||
|
* @var PlaceholderWriter
|
||
|
*/
|
||
|
protected $placeholderWriter;
|
||
|
|
||
|
/**
|
||
|
* @var ColumnWriter
|
||
|
*/
|
||
|
protected $columnWriter;
|
||
|
|
||
|
/**
|
||
|
* @param Builder $writer
|
||
|
* @param PlaceholderWriter $placeholder
|
||
|
*/
|
||
|
public function __construct(\Phacil\Framework\MagiQL\Api\BuilderInterface $writer, PlaceholderWriter $placeholder)
|
||
|
{
|
||
|
$this->writer = $writer;
|
||
|
$this->placeholderWriter = $placeholder;
|
||
|
|
||
|
$this->columnWriter = WriterFactory::createColumnWriter($writer, $placeholder);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param AbstractBaseQuery $class
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public static function writeQueryComment(AbstractBaseQuery $class)
|
||
|
{
|
||
|
$comment = '';
|
||
|
if ('' !== $class->getComment()) {
|
||
|
$comment = $class->getComment();
|
||
|
}
|
||
|
|
||
|
return $comment;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param AbstractBaseQuery $class
|
||
|
* @param \Phacil\Framework\MagiQL\Api\BuilderInterface $writer
|
||
|
* @param PlaceholderWriter $placeholderWriter
|
||
|
* @param array $parts
|
||
|
*/
|
||
|
public static function writeWhereCondition(
|
||
|
AbstractBaseQuery $class,
|
||
|
\Phacil\Framework\MagiQL\Api\BuilderInterface $writer,
|
||
|
PlaceholderWriter $placeholderWriter,
|
||
|
array &$parts
|
||
|
) {
|
||
|
if (!is_null($class->getWhere())) {
|
||
|
$whereWriter = WriterFactory::createWhereWriter($writer, $placeholderWriter);
|
||
|
$parts[] = "WHERE {$whereWriter->writeWhere($class->getWhere())}";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param AbstractBaseQuery $class
|
||
|
* @param PlaceholderWriter $placeholderWriter
|
||
|
* @param array $parts
|
||
|
*/
|
||
|
public static function writeLimitCondition(
|
||
|
AbstractBaseQuery $class,
|
||
|
PlaceholderWriter $placeholderWriter,
|
||
|
array &$parts
|
||
|
) {
|
||
|
if (!is_null($class->getLimitStart())) {
|
||
|
$start = $placeholderWriter->add($class->getLimitStart());
|
||
|
$parts[] = "LIMIT {$start}";
|
||
|
}
|
||
|
}
|
||
|
}
|