<?php

namespace Lc\SovBundle\Repository\Site;

use Lc\SovBundle\Repository\RepositoryQueryInterface;

interface PageStoreInterface
{
    public function createDefaultQuery(RepositoryQueryInterface $query = null): RepositoryQueryInterface;

    public function createQuery(RepositoryQueryInterface $query = null): RepositoryQueryInterface;

    public function getRepositoryQuery();

    public function getOneById(int $id);

    public function getOneBySlug(string $slug, bool $isOnline = true, $query = null);

    public function getOneByDevAlias(string $devAlias, $query = null);

    public function getOneOnlineByDevAlias(string $devAlias, $query = null);

    public function getOneByOldUrl(string $oldUrl, $query = null);

    public function get($query = null);

    public function getAll($query = null);

    public function getOnline($query = null);

    public function getParent(bool $isOnline = true, $query = null);

    public function orderByDefault(RepositoryQueryInterface $query): RepositoryQueryInterface;

    public function filtersDefault(RepositoryQueryInterface $query): RepositoryQueryInterface;

    public function relationsDefault(RepositoryQueryInterface $query): RepositoryQueryInterface;
}