8 changed files with 130 additions and 170 deletions
			
			
		@ -1,20 +0,0 @@ | 
				
			|||||
<?php | 
					 | 
				
			||||
 | 
					 | 
				
			||||
namespace Darksparrow\DeegraphInteractions\QueryBuilder\LinkQuery\Building; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\Attributes\QueryBuilderQuery; | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\Attributes\QueryBuilderRequiredField; | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\QueryBuilder\LinkQuery\LinkQueryBuilder; | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\QueryBuilder\QueryBuilderTrait; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
#[QueryBuilderQuery] | 
					 | 
				
			||||
class LinkQuery_Step1 | 
					 | 
				
			||||
{ | 
					 | 
				
			||||
    use QueryBuilderTrait; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    public function RelativePath(string $relativePath): LinkQuery_Step2 | 
					 | 
				
			||||
    { | 
					 | 
				
			||||
        self::ValidateDeegraphPath(target: $relativePath); | 
					 | 
				
			||||
        return new LinkQuery_Step2(querySoFar: "LINK " . $relativePath); | 
					 | 
				
			||||
    } | 
					 | 
				
			||||
} | 
					 | 
				
			||||
@ -1,31 +0,0 @@ | 
				
			|||||
<?php | 
					 | 
				
			||||
 | 
					 | 
				
			||||
namespace Darksparrow\DeegraphInteractions\QueryBuilder\LinkQuery\Building; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\Attributes\QueryBuilderQuery; | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\Attributes\QueryBuilderRequiredField; | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\QueryBuilder\LinkQuery\LinkQueryBuilder; | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\QueryBuilder\QueryBuilderTrait; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
#[QueryBuilderQuery] | 
					 | 
				
			||||
class LinkQuery_Step2 | 
					 | 
				
			||||
{ | 
					 | 
				
			||||
    use QueryBuilderTrait; | 
					 | 
				
			||||
    private string $QuerySoFar = ""; | 
					 | 
				
			||||
    public function __construct(string $querySoFar) | 
					 | 
				
			||||
    { | 
					 | 
				
			||||
        $this->QuerySoFar = $querySoFar; | 
					 | 
				
			||||
    } | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    public function To(string $relativePath): LinkQuery_Step3 | 
					 | 
				
			||||
    { | 
					 | 
				
			||||
        self::ValidateDeegraphPath(target: $relativePath); | 
					 | 
				
			||||
        return new LinkQuery_Step3($this->QuerySoFar . " TO " . $relativePath); | 
					 | 
				
			||||
    } | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    public function Of(string $relativePath): LinkQuery_Step3 | 
					 | 
				
			||||
    { | 
					 | 
				
			||||
        self::ValidateDeegraphPath(target: $relativePath); | 
					 | 
				
			||||
        return new LinkQuery_Step3($this->QuerySoFar . " OF " . $relativePath); | 
					 | 
				
			||||
    } | 
					 | 
				
			||||
} | 
					 | 
				
			||||
@ -1,31 +0,0 @@ | 
				
			|||||
<?php | 
					 | 
				
			||||
 | 
					 | 
				
			||||
namespace Darksparrow\DeegraphInteractions\QueryBuilder\LinkQuery\Building; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\Attributes\QueryBuilderQuery; | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\Attributes\QueryBuilderRequiredField; | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\QueryBuilder\LinkQuery\LinkQuery; | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\QueryBuilder\LinkQuery\LinkQueryBuilder; | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\QueryBuilder\QueryBuilderTrait; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
#[QueryBuilderQuery] | 
					 | 
				
			||||
class LinkQuery_Step3 | 
					 | 
				
			||||
{ | 
					 | 
				
			||||
    use QueryBuilderTrait; | 
					 | 
				
			||||
    private string $QuerySoFar = ""; | 
					 | 
				
			||||
    public function __construct(string $querySoFar) | 
					 | 
				
			||||
    { | 
					 | 
				
			||||
        $this->QuerySoFar = $querySoFar; | 
					 | 
				
			||||
    } | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    public function As(string $asPropertyName): LinkQuery_Step4 | 
					 | 
				
			||||
    { | 
					 | 
				
			||||
        self::ValidateDeegraphPath(target: $asPropertyName); | 
					 | 
				
			||||
        return new LinkQuery_Step4($this->QuerySoFar . " AS " . $asPropertyName); | 
					 | 
				
			||||
    } | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    public function Build(): LinkQuery | 
					 | 
				
			||||
    { | 
					 | 
				
			||||
        return new LinkQuery($this->QuerySoFar); | 
					 | 
				
			||||
    } | 
					 | 
				
			||||
} | 
					 | 
				
			||||
@ -1,40 +0,0 @@ | 
				
			|||||
<?php | 
					 | 
				
			||||
 | 
					 | 
				
			||||
namespace Darksparrow\DeegraphInteractions\QueryBuilder\LinkQuery\Building; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\Attributes\QueryBuilderQuery; | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\Attributes\QueryBuilderRequiredField; | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\QueryBuilder\LinkQuery\LinkQuery; | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\QueryBuilder\LinkQuery\LinkQueryBuilder; | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\QueryBuilder\QueryBuilderTrait; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
#[QueryBuilderQuery] | 
					 | 
				
			||||
class LinkQuery_Step4 | 
					 | 
				
			||||
{ | 
					 | 
				
			||||
    use QueryBuilderTrait; | 
					 | 
				
			||||
    private string $QuerySoFar = ""; | 
					 | 
				
			||||
    public function __construct(string $querySoFar) | 
					 | 
				
			||||
    { | 
					 | 
				
			||||
        $this->QuerySoFar = $querySoFar; | 
					 | 
				
			||||
    } | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    public function Overwrite(): LinkQuery_Step9 | 
					 | 
				
			||||
    { | 
					 | 
				
			||||
        return new LinkQuery_Step9($this->QuerySoFar . " OVERWRITE"); | 
					 | 
				
			||||
    } | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    public function Replace(): LinkQuery_Step9 | 
					 | 
				
			||||
    { | 
					 | 
				
			||||
        return new LinkQuery_Step9($this->QuerySoFar . " REPLACE"); | 
					 | 
				
			||||
    } | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    public function Force(): LinkQuery_Step9 | 
					 | 
				
			||||
    { | 
					 | 
				
			||||
        return new LinkQuery_Step9($this->QuerySoFar . " FORCE"); | 
					 | 
				
			||||
    } | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    public function Build(): LinkQuery | 
					 | 
				
			||||
    { | 
					 | 
				
			||||
        return new LinkQuery($this->QuerySoFar); | 
					 | 
				
			||||
    } | 
					 | 
				
			||||
} | 
					 | 
				
			||||
@ -1,25 +0,0 @@ | 
				
			|||||
<?php | 
					 | 
				
			||||
 | 
					 | 
				
			||||
namespace Darksparrow\DeegraphInteractions\QueryBuilder\LinkQuery\Building; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\Attributes\QueryBuilderQuery; | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\Attributes\QueryBuilderRequiredField; | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\QueryBuilder\LinkQuery\LinkQuery; | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\QueryBuilder\LinkQuery\LinkQueryBuilder; | 
					 | 
				
			||||
use Darksparrow\DeegraphInteractions\QueryBuilder\QueryBuilderTrait; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
#[QueryBuilderQuery] | 
					 | 
				
			||||
class LinkQuery_Step9 | 
					 | 
				
			||||
{ | 
					 | 
				
			||||
    use QueryBuilderTrait; | 
					 | 
				
			||||
    private string $QuerySoFar = ""; | 
					 | 
				
			||||
    public function __construct(string $querySoFar) | 
					 | 
				
			||||
    { | 
					 | 
				
			||||
        $this->QuerySoFar = $querySoFar; | 
					 | 
				
			||||
    } | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    public function Build() | 
					 | 
				
			||||
    { | 
					 | 
				
			||||
        return new LinkQuery($this->QuerySoFar); | 
					 | 
				
			||||
    } | 
					 | 
				
			||||
} | 
					 | 
				
			||||
@ -0,0 +1,106 @@ | 
				
			|||||
 | 
					<?php | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					namespace Darksparrow\DeegraphInteractions\QueryBuilder\LinkQuery; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					use Darksparrow\DeegraphInteractions\Attributes\QueryBuilderQuery; | 
				
			||||
 | 
					use Darksparrow\DeegraphInteractions\Attributes\QueryBuilderRequiredField; | 
				
			||||
 | 
					use Darksparrow\DeegraphInteractions\QueryBuilder\DirectoryQuery\DirectoryQuery; | 
				
			||||
 | 
					use Darksparrow\DeegraphInteractions\QueryBuilder\DirectoryQuery\DirectoryQueryBuilder; | 
				
			||||
 | 
					use Darksparrow\DeegraphInteractions\QueryBuilder\QueryBuilderTrait; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#[QueryBuilderQuery] | 
				
			||||
 | 
					class LinkQueryBuilder | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					    use QueryBuilderTrait; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    #[QueryBuilderRequiredField] | 
				
			||||
 | 
					    protected string $RelativePath1 = ""; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    #[QueryBuilderRequiredField] | 
				
			||||
 | 
					    protected string $ToOrOf = ""; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    #[QueryBuilderRequiredField] | 
				
			||||
 | 
					    protected string $RelativePath2 = ""; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    #[QueryBuilderRequiredField] | 
				
			||||
 | 
					    protected string $PropertyName = ""; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    protected string $Mode = ""; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public function LinkWhat(string $relativePath): LinkQueryBuilder | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					        self::ValidateDeegraphPath(target: $relativePath); | 
				
			||||
 | 
					        $this->RelativePath1 = $relativePath; | 
				
			||||
 | 
					        return $this; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					    public function LinkTo(string $relativePath): LinkQueryBuilder | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					        self::EnsureNotSet($this->RelativePath2); | 
				
			||||
 | 
					        self::ValidateDeegraphPath(target: $relativePath); | 
				
			||||
 | 
					        $this->RelativePath2 = $relativePath; | 
				
			||||
 | 
					        $this->ToOrOf = "TO"; | 
				
			||||
 | 
					        return $this; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					    public function LinkOf(string $relativePath): LinkQueryBuilder | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					        self::EnsureNotSet($this->RelativePath2); | 
				
			||||
 | 
					        self::ValidateDeegraphPath(target: $relativePath); | 
				
			||||
 | 
					        $this->RelativePath2 = $relativePath; | 
				
			||||
 | 
					        $this->ToOrOf = "OF"; | 
				
			||||
 | 
					        return $this; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public function PropertyName(string $propertyName): LinkQueryBuilder | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					        $this->PropertyName = $propertyName; | 
				
			||||
 | 
					        return $this; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public function Overwrite(): LinkQueryBuilder | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					        self::EnsureNotSet($this->Mode); | 
				
			||||
 | 
					        $this->Mode = "OVERWRITE"; | 
				
			||||
 | 
					        return $this; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					    public function Replace(): LinkQueryBuilder | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					        self::EnsureNotSet($this->Mode); | 
				
			||||
 | 
					        $this->Mode = "REPLACE"; | 
				
			||||
 | 
					        return $this; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					    public function Force(): LinkQueryBuilder | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					        self::EnsureNotSet($this->Mode); | 
				
			||||
 | 
					        $this->Mode = "FORCE"; | 
				
			||||
 | 
					        return $this; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public function Build(): LinkQuery | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					        self::ValidateValues(target: $this); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        $builder = "LINK " | 
				
			||||
 | 
					            . $this->RelativePath1 | 
				
			||||
 | 
					            . " " | 
				
			||||
 | 
					            . $this->ToOrOf | 
				
			||||
 | 
					            . " " | 
				
			||||
 | 
					            . $this->RelativePath2 | 
				
			||||
 | 
					            . " AS " | 
				
			||||
 | 
					            . $this->PropertyName; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        if($this->Mode != "") $builder .= " " . $this->Mode; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        return new LinkQuery(queryString: $builder); | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
					Loading…
					
					
				
		Reference in new issue