1
1
Fork 0
mirror of https://code.mensbeam.com/MensBeam/Arsse.git synced 2024-12-23 05:44:53 +00:00
Arsse/lib/Db/Driver.php
J. King 7ca0f4e877 Make the SQLite3 driver more generic
The changes in this commit should make it more practical to:

- Allow the driver to decide for itself whether to try creating a PDO object if its own requirements are not met
- Have any driver use a generic schema update procedure
- Use the same constructor for native and PDO SQLite
2017-12-18 18:29:32 -05:00

42 lines
2 KiB
PHP

<?php
/** @license MIT
* Copyright 2017 J. King, Dustin Wilson et al.
* See LICENSE and AUTHORS files for details */
declare(strict_types=1);
namespace JKingWeb\Arsse\Db;
interface Driver {
const TR_PEND = 0;
const TR_COMMIT = 1;
const TR_ROLLBACK = 2;
const TR_PEND_COMMIT = -1;
const TR_PEND_ROLLBACK = -2;
public static function create(): Driver;
// returns a human-friendly name for the driver (for display in installer, for example)
public static function driverName(): string;
// returns the version of the scheme of the opened database; if uninitialized should return 0
public function schemaVersion(): int;
// returns the schema set to be used for database set-up
public static function schemaID(): string;
// return a Transaction object
public function begin(bool $lock = false): Transaction;
// manually begin a real or synthetic transactions, with real or synthetic nesting
public function savepointCreate(): int;
// manually commit either the latest or all pending nested transactions
public function savepointRelease(int $index = null): bool;
// manually rollback either the latest or all pending nested transactions
public function savepointUndo(int $index = null): bool;
// attempt to perform an in-place upgrade of the database schema; this may be a no-op which always throws an exception
public function schemaUpdate(int $to): bool;
// execute one or more unsanitized SQL queries and return an indication of success
public function exec(string $query): bool;
// perform a single unsanitized query and return a result set
public function query(string $query): Result;
// ready a prepared statement for later execution
public function prepare(string $query, ...$paramType): Statement;
public function prepareArray(string $query, array $paramTypes): Statement;
// report whether the database character set is correct/acceptable
public function charsetAcceptable(): bool;
}