<?php
// Copyright (c) Pickware GmbH. All rights reserved.
// This file is part of software that is released under a proprietary license.
// You must not copy, modify, distribute, make publicly available, or execute
// its contents or parts thereof without express permission by the copyright
// holder, unless otherwise permitted by law.

namespace Shopware\Plugins\ViisonPickwareMobile\Components\QueryBuilder;

class SelectQueryComponent implements QueryComponent, ComponentWrapper
{
    use ComponentWrapping;

    /**
     * @var string|null
     */
    protected $alias = null;

    /**
     * @param QueryComponent $wrappedComponent
     * @param string|null $alias
     */
    public function __construct(QueryComponent $wrappedComponent, $alias = null)
    {
        $this->setWrappedComponent($wrappedComponent);
        $this->alias = $alias;
    }

    /**
     * @return string|null
     */
    public function getAlias()
    {
        return $this->alias;
    }

    /**
     * @param string|null $alias
     */
    public function setAlias($alias = null)
    {
        $this->alias = $alias;
    }

    /**
     * @inheritdoc
     */
    public function createQueryString()
    {
        return sprintf(
            '(%s)%s',
            $this->getWrappedComponent()->createQueryString(),
            (mb_strlen($this->alias) > 0) ? sprintf(' AS `%s`', $this->alias) : ''
        );
    }
}
