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
			| 
								 
											2 years 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}";
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |