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