Initial Upload

This commit is contained in:
Matt Batchelder
2025-12-02 10:32:59 -05:00
commit 05ce0da296
2240 changed files with 467811 additions and 0 deletions

View File

@@ -0,0 +1,172 @@
<?php
/*
* Copyright (c) 2022 Xibo Signage Ltd
*
* Xibo - Digital Signage - http://www.xibo.org.uk
*
* This file is part of Xibo.
*
* Xibo is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* Xibo is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with Xibo. If not, see <http://www.gnu.org/licenses/>.
*/
namespace Xibo\Storage;
use Xibo\Service\LogService;
use Xibo\Support\Exception\DeadlockException;
/**
* Interface StorageInterface
* @package Xibo\Storage
*/
interface StorageServiceInterface
{
/**
* PDOConnect constructor.
* @param LogService $logger
*/
public function __construct($logger);
/**
* Set a connection
* @param string $name
* @return $this
*/
public function setConnection($name = 'default');
/**
* Closes the stored connection
* @param string|null $name The name of the connection, or null for all connections
*/
public function close($name = null);
/**
* Open a new connection using the stored details
* @param $name string The name of the connection, e.g. "default"
* @return \PDO
*/
public static function newConnection(string $name);
/**
* Open a connection with the specified details
* @param string $host
* @param string $user
* @param string $pass
* @param string|null $name
* @param string|null $ssl
* @param boolean $sslVerify
* @return \PDO
*/
public function connect($host, $user, $pass, $name = null, $ssl = null, $sslVerify = true);
/**
* Get the Raw Connection
* @param string $name The connection name
* @return \PDO
*/
public function getConnection($name = 'default');
/**
* Check to see if the query returns records
* @param string $sql
* @param array $params
* @param string|null $connection Note: the transaction for non-default connections is not automatically committed
* @param bool $reconnect
* @param bool $close
* @return bool
*/
public function exists($sql, $params, $connection = 'default', $reconnect = false, $close = false);
/**
* Run Insert SQL
* @param string $sql
* @param array $params
* @param string|null $connection Note: the transaction for non-default connections is not automatically committed
* @param bool $reconnect
* @param bool $close
* @return int
* @throws \PDOException
*/
public function insert($sql, $params, $connection = 'default', $reconnect = false, $transaction = true, $close = false);
/**
* Run Update SQL
* @param string $sql
* @param array $params
* @param string|null $connection Note: the transaction for non-default connections is not automatically committed
* @param bool $reconnect
* @param bool $transaction If we are already in a transaction, then do nothing. Otherwise, start one.
* @param bool $close
* @return int affected rows
* @throws \PDOException
*/
public function update($sql, $params, $connection = 'default', $reconnect = false, $transaction = true, $close = false);
/**
* Run Select SQL
* @param $sql
* @param $params
* @param string|null $connection Note: the transaction for non-default connections is not automatically committed
* @param bool $reconnect
* @param bool $close
* @return array
* @throws \PDOException
*/
public function select($sql, $params, $connection = 'default', $reconnect = false, $close = false);
/**
* Run the SQL statement with a deadlock loop
* @param $sql
* @param $params
* @param string|null $connection Note: the transaction for non-default connections is not automatically committed
* @param bool $close
* @param bool $transaction If we are already in a transaction, then do nothing. Otherwise, start one.
* @return mixed
* @throws DeadlockException
*/
public function updateWithDeadlockLoop($sql, $params, $connection = 'default', $transaction = true, $close = false);
/**
* Commit if necessary
* @param $name
* @param bool $close
*/
public function commitIfNecessary($name = 'default', $close = false);
/**
* Set the TimeZone for this connection
* @param string|null $connection
* @param string $timeZone e.g. -8:00
*/
public function setTimeZone($timeZone, $connection = 'default');
/**
* PDO stats
* @return array
*/
public function stats();
/**
* @param $connection
* @param $key
* @return mixed
*/
public static function incrementStat($connection, $key);
/**
* Get the Storage engine version
* @return string
*/
public function getVersion();
}