16 changed files with 488 additions and 301 deletions
			
			
		@ -0,0 +1,26 @@ | 
				
			|||||
 | 
					<?php | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					namespace Darksparrow\DeegraphInteractions\QueryBuilder\InsertQuery; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					use Darksparrow\DeegraphInteractions\Attributes\QueryBuilderQuery; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#[QueryBuilderQuery] | 
				
			||||
 | 
					final class InsertQuery | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					    public string $QueryString; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public function __construct(InsertQueryBuilder $queryBuilder) | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					        $instance = new QueryBuilderQuery(); | 
				
			||||
 | 
					        $instance->ValidateValues($queryBuilder); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        $builder = "INSERT INTO $queryBuilder->RelativePath"; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        if(sizeof($queryBuilder->Keys) > 0)     $builder .= "KEYS " . implode(separator: ", ", array: $queryBuilder->Keys); | 
				
			||||
 | 
					        if(sizeof($queryBuilder->Schemas) > 0)  $builder .= "SCHEMAS " . implode(separator: ", ", array: $queryBuilder->Schemas); | 
				
			||||
 | 
					        if($queryBuilder->Values != "")         $builder .= "VALUES $queryBuilder->Values"; | 
				
			||||
 | 
					        if($queryBuilder->Duplicate)            $builder .= "DUPLICATE"; | 
				
			||||
 | 
					        if($queryBuilder->Replace)              $builder .= "REPLACE"; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,8 @@ | 
				
			|||||
 | 
					<?php | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					namespace Darksparrow\DeegraphInteractions\QueryBuilder\InsertQuery; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					interface InsertQueryBuilderInterface | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					    public function Build() : InsertQuery; | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,26 @@ | 
				
			|||||
 | 
					<?php | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					namespace Darksparrow\DeegraphInteractions\QueryBuilder\PermissionsQuery; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					use Darksparrow\DeegraphInteractions\Core\DeegraphServer; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class PermissionQuery | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					    protected string $QueryString; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public function __construct(string $queryString) | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					        $this->QueryString = $queryString; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public function RunQuery(DeegraphServer $server): PermissionQueryResponse | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					        $response = $server->RunRawRequest( | 
				
			||||
 | 
					            endpoint: "/api/v1/@query", | 
				
			||||
 | 
					            method: "POST", | 
				
			||||
 | 
					            body: $this->QueryString | 
				
			||||
 | 
					        ); | 
				
			||||
 | 
					        $temp = json_decode($response, true); | 
				
			||||
 | 
					        return new PermissionQueryResponse($temp); | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,44 @@ | 
				
			|||||
 | 
					<?php | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					namespace Darksparrow\DeegraphInteractions\QueryBuilder\PermissionsQuery; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					use Darksparrow\DeegraphInteractions\Attributes\QueryBuilderQuery; | 
				
			||||
 | 
					use Darksparrow\DeegraphInteractions\Attributes\QueryBuilderRequiredField; | 
				
			||||
 | 
					use Darksparrow\DeegraphInteractions\QueryBuilder\QueryBuilderTrait; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#[QueryBuilderQuery] | 
				
			||||
 | 
					class PermissionQueryBuilder | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    use QueryBuilderTrait; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    #[QueryBuilderRequiredField] | 
				
			||||
 | 
					    protected string $On = ""; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    #[QueryBuilderRequiredField] | 
				
			||||
 | 
					    protected string $As = ""; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public function On(string $relativePath): PermissionQueryBuilder | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					        // self::ValidateDeegraphPath(target: $relativePath); | 
				
			||||
 | 
					        $this->On = $relativePath; | 
				
			||||
 | 
					        return $this; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					    public function As(string $relativePath): PermissionQueryBuilder | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					        // self::ValidateDeegraphPath(target: $relativePath); | 
				
			||||
 | 
					        $this->As = $relativePath; | 
				
			||||
 | 
					        return $this; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public function Build(): PermissionQuery | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					        $builder = "PERMISSIONS "; | 
				
			||||
 | 
					        if($this->On != "") $builder .= " ON {". $this->On . "}"; | 
				
			||||
 | 
					        if($this->As != "") $builder .= " AS {". $this->As . "}"; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        return new PermissionQuery(queryString: $builder); | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,8 @@ | 
				
			|||||
 | 
					<?php | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					namespace Darksparrow\DeegraphInteractions\QueryBuilder\PermissionsQuery; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					interface PermissionQueryBuilderInterface | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					    public function Build() : PermissionQuery; | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,33 @@ | 
				
			|||||
 | 
					<?php | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					namespace Darksparrow\DeegraphInteractions\QueryBuilder\PermissionsQuery; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class PermissionQueryResponse | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					    public bool $CanAct = false; | 
				
			||||
 | 
					    public bool $CanDelete = false; | 
				
			||||
 | 
					    public bool $CanRead = false; | 
				
			||||
 | 
					    public bool $CanWrite = false; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public function __construct(array $deegraphResponse) | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					        foreach ($deegraphResponse["@permissions"] as $permission) | 
				
			||||
 | 
					        { | 
				
			||||
 | 
					            switch($permission) | 
				
			||||
 | 
					            { | 
				
			||||
 | 
					                case "ACT": | 
				
			||||
 | 
					                    $this->CanAct = true; | 
				
			||||
 | 
					                    break; | 
				
			||||
 | 
					                case "DELETE": | 
				
			||||
 | 
					                    $this->CanDelete = true; | 
				
			||||
 | 
					                    break; | 
				
			||||
 | 
					                case "READ": | 
				
			||||
 | 
					                    $this->CanRead = true; | 
				
			||||
 | 
					                    break; | 
				
			||||
 | 
					                case "WRITE": | 
				
			||||
 | 
					                    $this->CanWrite = true; | 
				
			||||
 | 
					                    break; | 
				
			||||
 | 
					            } | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,26 @@ | 
				
			|||||
 | 
					<?php | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					namespace Darksparrow\DeegraphInteractions\QueryBuilder\SelectQuery; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					use Darksparrow\DeegraphInteractions\Core\DeegraphServer; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class SelectQuery | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					    protected string $QueryString; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public function __construct(string $queryString) | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					        $this->QueryString = $queryString; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public function RunQuery(DeegraphServer $server): array | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					        $response = $server->RunRawRequest( | 
				
			||||
 | 
					            endpoint: "/api/v1/@query", | 
				
			||||
 | 
					            method: "POST", | 
				
			||||
 | 
					            body: $this->QueryString | 
				
			||||
 | 
					        ); | 
				
			||||
 | 
					        $temp = json_decode($response, true); | 
				
			||||
 | 
					        return $temp; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,8 @@ | 
				
			|||||
 | 
					<?php | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					namespace Darksparrow\DeegraphInteractions\QueryBuilder\SelectQuery; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					interface SelectQueryBuilderInterface | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					    public function Build() : SelectQuery; | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,18 @@ | 
				
			|||||
 | 
					<?php | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					namespace Darksparrow\DeegraphInteractions\QueryBuilder\SelectQuery; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					use Darksparrow\DeegraphInteractions\DataStructures\QueryResponseRow; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class SelectQueryResponse | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					    public array $Rows; | 
				
			||||
 | 
					    public string $RowFormat; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public function __construct(array $response) | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					        foreach($response["@rows"] as $row) | 
				
			||||
 | 
					            $this->Rows[] = new QueryResponseRow(array: $row); | 
				
			||||
 | 
					        $this->RowFormat = $response["@row_format"]; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
					Loading…
					
					
				
		Reference in new issue