diff --git a/composer.lock b/composer.lock index cc8223e..16aefdc 100644 --- a/composer.lock +++ b/composer.lock @@ -58,11 +58,11 @@ }, { "name": "flashwave/index", - "version": "v0.2410.51409", + "version": "v0.2410.191603", "source": { "type": "git", "url": "https://patchii.net/flash/index.git", - "reference": "c43c6eb334f85edf8fa7b5e4058b3ba35a27d960" + "reference": "17cdb4d1c239241200d7e30968122a8cd8b26509" }, "require": { "ext-mbstring": "*", @@ -83,6 +83,14 @@ }, "type": "library", "autoload": { + "files": [ + "src/Cache/ArrayCache/_ndx.php", + "src/Cache/Memcached/_ndx.php", + "src/Cache/Valkey/_ndx.php", + "src/Db/MariaDb/_ndx.php", + "src/Db/NullDb/_ndx.php", + "src/Db/Sqlite/_ndx.php" + ], "psr-4": { "Index\\": "src" } @@ -101,7 +109,7 @@ ], "description": "Composer package for the common library for my projects.", "homepage": "https://railgun.sh/index", - "time": "2024-10-05T14:10:08+00:00" + "time": "2024-10-19T16:04:17+00:00" }, { "name": "guzzlehttp/psr7", @@ -221,28 +229,28 @@ }, { "name": "jean85/pretty-package-versions", - "version": "2.0.6", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4" + "reference": "3c4e5f62ba8d7de1734312e4fff32f67a8daaf10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/f9fdd29ad8e6d024f52678b570e5593759b550b4", - "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/3c4e5f62ba8d7de1734312e4fff32f67a8daaf10", + "reference": "3c4e5f62ba8d7de1734312e4fff32f67a8daaf10", "shasum": "" }, "require": { - "composer-runtime-api": "^2.0.0", - "php": "^7.1|^8.0" + "composer-runtime-api": "^2.1.0", + "php": "^7.4|^8.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.2", "jean85/composer-provided-replaced-stub-package": "^1.0", "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^7.5|^8.5|^9.4", - "vimeo/psalm": "^4.3" + "phpunit/phpunit": "^7.5|^8.5|^9.6", + "vimeo/psalm": "^4.3 || ^5.0" }, "type": "library", "extra": { @@ -274,9 +282,9 @@ ], "support": { "issues": "https://github.com/Jean85/pretty-package-versions/issues", - "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.6" + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.1.0" }, - "time": "2024-03-08T09:58:59+00:00" + "time": "2024-11-18T16:19:46+00:00" }, { "name": "psr/http-factory", @@ -537,16 +545,16 @@ }, { "name": "sentry/sentry", - "version": "4.9.0", + "version": "4.10.0", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-php.git", - "reference": "788ec170f51ebb22f2809a1e3f78b19ccd39b70d" + "reference": "2af937d47d8aadb8dab0b1d7b9557e495dd12856" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/788ec170f51ebb22f2809a1e3f78b19ccd39b70d", - "reference": "788ec170f51ebb22f2809a1e3f78b19ccd39b70d", + "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/2af937d47d8aadb8dab0b1d7b9557e495dd12856", + "reference": "2af937d47d8aadb8dab0b1d7b9557e495dd12856", "shasum": "" }, "require": { @@ -564,12 +572,12 @@ }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.4", - "guzzlehttp/promises": "^1.0|^2.0", + "guzzlehttp/promises": "^2.0.3", "guzzlehttp/psr7": "^1.8.4|^2.1.1", "monolog/monolog": "^1.6|^2.0|^3.0", "phpbench/phpbench": "^1.0", "phpstan/phpstan": "^1.3", - "phpunit/phpunit": "^8.5.14|^9.4", + "phpunit/phpunit": "^8.5|^9.6", "symfony/phpunit-bridge": "^5.2|^6.0|^7.0", "vimeo/psalm": "^4.17" }, @@ -610,7 +618,7 @@ ], "support": { "issues": "https://github.com/getsentry/sentry-php/issues", - "source": "https://github.com/getsentry/sentry-php/tree/4.9.0" + "source": "https://github.com/getsentry/sentry-php/tree/4.10.0" }, "funding": [ { @@ -622,7 +630,7 @@ "type": "custom" } ], - "time": "2024-08-08T14:40:50+00:00" + "time": "2024-11-06T07:44:19+00:00" }, { "name": "symfony/deprecation-contracts", @@ -693,16 +701,16 @@ }, { "name": "symfony/mime", - "version": "v7.1.5", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "711d2e167e8ce65b05aea6b258c449671cdd38ff" + "reference": "caa1e521edb2650b8470918dfe51708c237f0598" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/711d2e167e8ce65b05aea6b258c449671cdd38ff", - "reference": "711d2e167e8ce65b05aea6b258c449671cdd38ff", + "url": "https://api.github.com/repos/symfony/mime/zipball/caa1e521edb2650b8470918dfe51708c237f0598", + "reference": "caa1e521edb2650b8470918dfe51708c237f0598", "shasum": "" }, "require": { @@ -757,7 +765,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.1.5" + "source": "https://github.com/symfony/mime/tree/v7.1.6" }, "funding": [ { @@ -773,20 +781,20 @@ "type": "tidelift" } ], - "time": "2024-09-20T08:28:38+00:00" + "time": "2024-10-25T15:11:02+00:00" }, { "name": "symfony/options-resolver", - "version": "v7.1.1", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "47aa818121ed3950acd2b58d1d37d08a94f9bf55" + "reference": "85e95eeede2d41cd146146e98c9c81d9214cae85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/47aa818121ed3950acd2b58d1d37d08a94f9bf55", - "reference": "47aa818121ed3950acd2b58d1d37d08a94f9bf55", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/85e95eeede2d41cd146146e98c9c81d9214cae85", + "reference": "85e95eeede2d41cd146146e98c9c81d9214cae85", "shasum": "" }, "require": { @@ -824,7 +832,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.1.1" + "source": "https://github.com/symfony/options-resolver/tree/v7.1.6" }, "funding": [ { @@ -840,7 +848,7 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/polyfill-ctype", @@ -1243,16 +1251,16 @@ }, { "name": "twig/html-extra", - "version": "v3.13.0", + "version": "v3.15.0", "source": { "type": "git", "url": "https://github.com/twigphp/html-extra.git", - "reference": "8229e750091171c1f11801a525927811c7ac5a7e" + "reference": "2086023d3ffc4bae2b1115f715d17f97fd013665" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/html-extra/zipball/8229e750091171c1f11801a525927811c7ac5a7e", - "reference": "8229e750091171c1f11801a525927811c7ac5a7e", + "url": "https://api.github.com/repos/twigphp/html-extra/zipball/2086023d3ffc4bae2b1115f715d17f97fd013665", + "reference": "2086023d3ffc4bae2b1115f715d17f97fd013665", "shasum": "" }, "require": { @@ -1295,7 +1303,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/html-extra/tree/v3.13.0" + "source": "https://github.com/twigphp/html-extra/tree/v3.15.0" }, "funding": [ { @@ -1307,20 +1315,20 @@ "type": "tidelift" } ], - "time": "2024-09-03T13:08:40+00:00" + "time": "2024-09-30T06:41:48+00:00" }, { "name": "twig/twig", - "version": "v3.14.0", + "version": "v3.15.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "126b2c97818dbff0cdf3fbfc881aedb3d40aae72" + "reference": "2d5b3964cc21d0188633d7ddce732dc8e874db02" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/126b2c97818dbff0cdf3fbfc881aedb3d40aae72", - "reference": "126b2c97818dbff0cdf3fbfc881aedb3d40aae72", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/2d5b3964cc21d0188633d7ddce732dc8e874db02", + "reference": "2d5b3964cc21d0188633d7ddce732dc8e874db02", "shasum": "" }, "require": { @@ -1374,7 +1382,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.14.0" + "source": "https://github.com/twigphp/Twig/tree/v3.15.0" }, "funding": [ { @@ -1386,22 +1394,22 @@ "type": "tidelift" } ], - "time": "2024-09-09T17:55:12+00:00" + "time": "2024-11-17T15:59:19+00:00" } ], "packages-dev": [ { "name": "phpstan/phpstan", - "version": "1.12.5", + "version": "1.12.11", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "7e6c6cb7cecb0a6254009a1a8a7d54ec99812b17" + "reference": "0d1fc20a962a91be578bcfe7cf939e6e1a2ff733" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/7e6c6cb7cecb0a6254009a1a8a7d54ec99812b17", - "reference": "7e6c6cb7cecb0a6254009a1a8a7d54ec99812b17", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/0d1fc20a962a91be578bcfe7cf939e6e1a2ff733", + "reference": "0d1fc20a962a91be578bcfe7cf939e6e1a2ff733", "shasum": "" }, "require": { @@ -1446,7 +1454,7 @@ "type": "github" } ], - "time": "2024-09-26T12:45:22+00:00" + "time": "2024-11-17T14:08:01+00:00" } ], "aliases": [], diff --git a/seria.php b/seria.php index 1362ac6..37b8fad 100644 --- a/seria.php +++ b/seria.php @@ -2,7 +2,7 @@ namespace Seria; use Index\Config\Fs\FsConfig; -use Index\Db\DbTools; +use Index\Db\DbBackends; define('SERIA_STARTUP', microtime(true)); define('SERIA_ROOT', __DIR__); @@ -32,7 +32,7 @@ if($cfg->hasValues('sentry:dsn')) }); })($cfg->scopeTo('sentry')); -$db = DbTools::create($cfg->getString('database:dsn', 'null:')); +$db = DbBackends::create($cfg->getString('database:dsn', 'null:')); $db->execute('SET SESSION time_zone = \'+00:00\', sql_mode = \'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION\';'); $seria = new SeriaContext($db, $cfg); diff --git a/src/SeriaContext.php b/src/SeriaContext.php index 279a5f4..53d8ccf 100644 --- a/src/SeriaContext.php +++ b/src/SeriaContext.php @@ -4,7 +4,7 @@ namespace Seria; use InvalidArgumentException; use Index\CsrfToken; use Index\Config\Config; -use Index\Db\DbTransactions; +use Index\Db\DbConnection; use Index\Db\Migration\{DbMigrationManager,DbMigrationRepo,FsDbMigrationRepo}; use Index\Templating\TplEnvironment; use Seria\Auth\AuthInfo; @@ -12,7 +12,7 @@ use Seria\Torrents\TorrentsContext; use Seria\Users\UsersContext; final class SeriaContext { - private DbTransactions $dbConn; + private DbConnection $dbConn; private Config $config; private ?TplEnvironment $templating = null; @@ -24,7 +24,7 @@ final class SeriaContext { private TorrentsContext $torrentsCtx; private UsersContext $usersCtx; - public function __construct(DbTransactions $dbConn, Config $config) { + public function __construct(DbConnection $dbConn, Config $config) { $this->dbConn = $dbConn; $this->config = $config; @@ -35,7 +35,7 @@ final class SeriaContext { $this->usersCtx = new UsersContext($dbConn); } - public function getDbConn(): DbTransactions { + public function getDbConn(): DbConnection { return $this->dbConn; } diff --git a/src/Torrents/TorrentBuilder.php b/src/Torrents/TorrentBuilder.php index 1d2ccb8..dad3b8e 100644 --- a/src/Torrents/TorrentBuilder.php +++ b/src/Torrents/TorrentBuilder.php @@ -5,7 +5,7 @@ use Exception; use InvalidArgumentException; use RuntimeException; use Index\Bencode\Bencode; -use Index\Db\{DbTools,DbTransactions}; +use Index\Db\DbConnection; use Seria\Users\UserInfo; class TorrentBuilder { @@ -101,12 +101,12 @@ class TorrentBuilder { return hash('sha1', Bencode::encode($info), true); } - public function create(DbTransactions $dbConn, TorrentsContext $torrentsCtx): string { + public function create(DbConnection $dbConn, TorrentsContext $torrentsCtx): string { $torrents = $torrentsCtx->getTorrents(); $pieces = $torrentsCtx->getPieces(); $files = $torrentsCtx->getFiles(); - $dbConn->beginTransaction(); + $tx = $dbConn->beginTransaction(); try { $infoHash = $this->calculateInfoHash(); @@ -121,9 +121,9 @@ class TorrentBuilder { foreach($this->pieces as $piece) $pieces->createPiece($torrentId, $piece); - $dbConn->commit(); + $tx->commit(); } catch(Exception $ex) { - $dbConn->rollBack(); + $tx->rollback(); throw $ex; } diff --git a/src/Torrents/TorrentCreateRouting.php b/src/Torrents/TorrentCreateRouting.php index 1ec3054..cbf9e8d 100644 --- a/src/Torrents/TorrentCreateRouting.php +++ b/src/Torrents/TorrentCreateRouting.php @@ -4,7 +4,7 @@ namespace Seria\Torrents; use Exception; use RuntimeException; use Index\CsrfToken; -use Index\Db\DbTransactions; +use Index\Db\DbConnection; use Index\Http\Routing\{HttpGet,HttpMiddleware,HttpPost,RouteHandler,RouteHandlerTrait}; use Index\Templating\TplEnvironment; use Seria\Auth\AuthInfo; @@ -14,7 +14,7 @@ class TorrentCreateRouting implements RouteHandler { use RouteHandlerTrait; public function __construct( - private DbTransactions $dbConn, + private DbConnection $dbConn, private AuthInfo $authInfo, private TorrentsContext $torrentsCtx, private CsrfToken $csrfp, diff --git a/src/Users/Users.php b/src/Users/Users.php index 39d779a..fcb3567 100644 --- a/src/Users/Users.php +++ b/src/Users/Users.php @@ -5,7 +5,7 @@ use InvalidArgumentException; use RuntimeException; use Index\XString; use Index\Colour\Colour; -use Index\Db\{DbConnection,DbStatementCache,DbTools}; +use Index\Db\{DbConnection,DbStatementCache}; class Users { private DbStatementCache $cache;