ulmus/src/QueryBuilder/SqlQueryBuilder.php

48 lines
1.3 KiB
PHP

<?php
namespace Ulmus\QueryBuilder;
use Ulmus\Query\QueryFragmentInterface;
# TODO -> Extract from MysqlQueryBuilder to build an ISO/IEC 9075:2023 compatible layer for a basic SQL QueryBuilder
abstract class SqlQueryBuilder implements QueryBuilderInterface
{
protected string $rendered;
protected string $hash;
public function push(QueryFragmentInterface $queryFragment): QueryBuilderInterface
{
// TODO: Implement push() method.
}
public function pull(QueryFragmentInterface $queryFragment): QueryBuilderInterface
{
// TODO: Implement pull() method.
}
public function render(bool $skipToken = false) : mixed
{
// TODO: Implement render() method.
}
public function reset(): void
{
// TODO: Implement reset() method.
}
public function getFragment(string $class, int $index = 0): ?QueryFragmentInterface
{
// TODO: Implement getFragment() method.
}
public function removeFragment(QueryFragmentInterface|\Stringable|array|string $fragment): void
{
// TODO: Implement removeFragment() method.
}
public function hashSerializedQuery(): string
{
return $this->hash ??= md5(sprintf("%s:%s", $this->render(), serialize($this->parameters)));
}
}