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.
		
		
		
		
		
			
		
			
				
					
					
						
							194 lines
						
					
					
						
							6.5 KiB
						
					
					
				
			
		
		
	
	
							194 lines
						
					
					
						
							6.5 KiB
						
					
					
				<?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\Api\BuilderInterface;
 | 
						|
use Phacil\Framework\Databases\Api\DriverInterface as DatabaseDriverInterface;
 | 
						|
 | 
						|
/**
 | 
						|
 * Class WriterFactory.
 | 
						|
 */
 | 
						|
final class WriterFactory
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * @param \Phacil\Framework\MagiQL\Api\BuilderInterface    $writer
 | 
						|
     * @param PlaceholderWriter $placeholderWriter
 | 
						|
     *
 | 
						|
     * @return ColumnWriter
 | 
						|
     */
 | 
						|
    public static function createColumnWriter(\Phacil\Framework\MagiQL\Api\BuilderInterface $writer, PlaceholderWriter $placeholderWriter)
 | 
						|
    {
 | 
						|
        return new ColumnWriter($writer, $placeholderWriter);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param BuilderInterface    $writer
 | 
						|
     * @param PlaceholderWriter $placeholderWriter
 | 
						|
     *
 | 
						|
     * @return WhereWriter
 | 
						|
     */
 | 
						|
    public static function createWhereWriter(BuilderInterface $writer, PlaceholderWriter $placeholderWriter)
 | 
						|
    {
 | 
						|
        return new WhereWriter($writer, $placeholderWriter);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param \Phacil\Framework\MagiQL\Api\BuilderInterface    $writer
 | 
						|
     * @param PlaceholderWriter $placeholderWriter
 | 
						|
     *
 | 
						|
     * @return SelectWriter
 | 
						|
     */
 | 
						|
    public static function createSelectWriter(BuilderInterface $writer, PlaceholderWriter $placeholderWriter)
 | 
						|
    {
 | 
						|
        /** @var \Phacil\Framework\MagiQL $writer */
 | 
						|
        
 | 
						|
        switch ($writer->getDb()->getDBTypeId()) {
 | 
						|
            case DatabaseDriverInterface::LIST_DB_TYPE_ID['MYSQL']:
 | 
						|
            case DatabaseDriverInterface::LIST_DB_TYPE_ID['SQLLITE3']:
 | 
						|
                return new SelectWriter($writer, $placeholderWriter);
 | 
						|
                break;
 | 
						|
 | 
						|
            case DatabaseDriverInterface::LIST_DB_TYPE_ID['MSSQL']:
 | 
						|
                return new \Phacil\Framework\MagiQL\Builder\Syntax\Adapt\MSSQL\SelectWriter($writer, $placeholderWriter);
 | 
						|
                break;
 | 
						|
 | 
						|
            case DatabaseDriverInterface::LIST_DB_TYPE_ID['POSTGRE']:
 | 
						|
                return new \Phacil\Framework\MagiQL\Builder\Syntax\Adapt\PostgreSQL\SelectWriter($writer, $placeholderWriter);
 | 
						|
                break;
 | 
						|
 | 
						|
            case DatabaseDriverInterface::LIST_DB_TYPE_ID['ORACLE']:
 | 
						|
                return new \Phacil\Framework\MagiQL\Builder\Syntax\Adapt\Oracle\SelectWriter($writer, $placeholderWriter);
 | 
						|
                break;
 | 
						|
            
 | 
						|
            default:
 | 
						|
                return new SelectWriter($writer, $placeholderWriter);
 | 
						|
                break;
 | 
						|
        }
 | 
						|
        return new SelectWriter($writer, $placeholderWriter);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param \Phacil\Framework\MagiQL\Api\BuilderInterface $writer
 | 
						|
     * @param PlaceholderWriter $placeholderWriter
 | 
						|
     *
 | 
						|
     * @return InsertWriter
 | 
						|
     */
 | 
						|
    public static function createInsertWriter(\Phacil\Framework\MagiQL\Api\BuilderInterface $writer, PlaceholderWriter $placeholderWriter)
 | 
						|
    {
 | 
						|
        /** @var \Phacil\Framework\MagiQL $writer */
 | 
						|
        switch ($writer->getDb()->getDBTypeId()) {
 | 
						|
            case DatabaseDriverInterface::LIST_DB_TYPE_ID['MYSQL']:
 | 
						|
            case DatabaseDriverInterface::LIST_DB_TYPE_ID['MSSQL']:
 | 
						|
            case DatabaseDriverInterface::LIST_DB_TYPE_ID['ORACLE']:
 | 
						|
                return new InsertWriter($writer, $placeholderWriter);
 | 
						|
                break;
 | 
						|
 | 
						|
            case DatabaseDriverInterface::LIST_DB_TYPE_ID['POSTGRE']:
 | 
						|
            case DatabaseDriverInterface::LIST_DB_TYPE_ID['SQLLITE3']:
 | 
						|
                return new \Phacil\Framework\MagiQL\Builder\Syntax\Adapt\SQLite3\InsertWriter($writer, $placeholderWriter);
 | 
						|
                break;
 | 
						|
 | 
						|
            default:
 | 
						|
                return new InsertWriter($writer, $placeholderWriter);
 | 
						|
                break;
 | 
						|
        }
 | 
						|
        return new InsertWriter($writer, $placeholderWriter);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param BuilderInterface $writer
 | 
						|
     * @param PlaceholderWriter $placeholderWriter
 | 
						|
     *
 | 
						|
     * @return UpdateWriter
 | 
						|
     */
 | 
						|
    public static function createUpdateWriter(BuilderInterface $writer, PlaceholderWriter $placeholderWriter)
 | 
						|
    {
 | 
						|
        /** @var \Phacil\Framework\MagiQL $writer */
 | 
						|
        switch ($writer->getDb()->getDBTypeId()) {
 | 
						|
            case DatabaseDriverInterface::LIST_DB_TYPE_ID['MYSQL']:
 | 
						|
            case DatabaseDriverInterface::LIST_DB_TYPE_ID['MSSQL']:
 | 
						|
            case DatabaseDriverInterface::LIST_DB_TYPE_ID['ORACLE']:
 | 
						|
                return new UpdateWriter($writer, $placeholderWriter);
 | 
						|
                break;
 | 
						|
 | 
						|
            case DatabaseDriverInterface::LIST_DB_TYPE_ID['POSTGRE']:
 | 
						|
                return new \Phacil\Framework\MagiQL\Builder\Syntax\Adapt\PostgreSQL\UpdateWriter($writer, $placeholderWriter);
 | 
						|
                break;
 | 
						|
 | 
						|
            case DatabaseDriverInterface::LIST_DB_TYPE_ID['SQLLITE3']:
 | 
						|
                return new \Phacil\Framework\MagiQL\Builder\Syntax\Adapt\SQLite3\UpdateWriter($writer, $placeholderWriter);
 | 
						|
                break;
 | 
						|
 | 
						|
            default:
 | 
						|
                return new UpdateWriter($writer, $placeholderWriter);
 | 
						|
                break;
 | 
						|
        }
 | 
						|
        return new UpdateWriter($writer, $placeholderWriter);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param \Phacil\Framework\MagiQL\Api\BuilderInterface $writer
 | 
						|
     * @param PlaceholderWriter $placeholderWriter
 | 
						|
     *
 | 
						|
     * @return DeleteWriter
 | 
						|
     */
 | 
						|
    public static function createDeleteWriter(BuilderInterface $writer, PlaceholderWriter $placeholderWriter)
 | 
						|
    {
 | 
						|
        return new DeleteWriter($writer, $placeholderWriter);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @return PlaceholderWriter
 | 
						|
     */
 | 
						|
    public static function createPlaceholderWriter()
 | 
						|
    {
 | 
						|
        return new PlaceholderWriter();
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param \Phacil\Framework\MagiQL\Api\BuilderInterface $writer
 | 
						|
     *
 | 
						|
     * @return IntersectWriter
 | 
						|
     */
 | 
						|
    public static function createIntersectWriter(\Phacil\Framework\MagiQL\Api\BuilderInterface $writer)
 | 
						|
    {
 | 
						|
        return new IntersectWriter($writer);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param \Phacil\Framework\MagiQL\Api\BuilderInterface $writer
 | 
						|
     *
 | 
						|
     * @return MinusWriter
 | 
						|
     */
 | 
						|
    public static function createMinusWriter(\Phacil\Framework\MagiQL\Api\BuilderInterface $writer)
 | 
						|
    {
 | 
						|
        return new MinusWriter($writer);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param BuilderInterface $writer
 | 
						|
     *
 | 
						|
     * @return UnionWriter
 | 
						|
     */
 | 
						|
    public static function createUnionWriter(BuilderInterface $writer)
 | 
						|
    {
 | 
						|
        return new UnionWriter($writer);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param \Phacil\Framework\MagiQL\Api\BuilderInterface $writer
 | 
						|
     *
 | 
						|
     * @return UnionAllWriter
 | 
						|
     */
 | 
						|
    public static function createUnionAllWriter(BuilderInterface $writer)
 | 
						|
    {
 | 
						|
        return new UnionAllWriter($writer);
 | 
						|
    }
 | 
						|
}
 | 
						|
 |