PluginProbe
404 Solution / 4.3.3
404 Solution v4.3.3
4.3.5 4.3.4 4.3.3 4.3.2 4.3.1 4.3.0 4.2.0 4.1.19 4.1.18 4.1.17 4.1.16 4.1.15 4.1.13 4.1.12 4.1.11 4.1.10 4.1.9 4.1.8 4.1.7 4.1.6 4.1.5 4.1.4 4.1.3 trunk 2.30.0 All 109 releases
404-solution / includes / database / DatabaseQueryServices.php

DatabaseQueryServices.php in 404 Solution 4.3.3, at includes/database/DatabaseQueryServices.php

112 lines 4.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 if (!defined('ABSPATH')) {
4 exit;
5 }
6
7 require_once __DIR__ . '/DatabaseQueryTimeoutManager.php';
8 require_once __DIR__ . '/DatabaseWpdbResultHarvester.php';
9 require_once __DIR__ . '/DatabaseQueryDiagnostics.php';
10 require_once __DIR__ . '/DatabaseQueryRecoveryPolicy.php';
11 require_once __DIR__ . '/DatabaseQueryExecutor.php';
12 require_once __DIR__ . '/DatabaseTransactionExecutor.php';
13
14 /**
15 * Sub-composition-root for the cohesive "execute a SQL query and surface its
16 * result" cluster: queryExecutor (the pipeline), queryTimeoutManager (SET
17 * STATEMENT wrapping), queryRecoveryPolicy (retry-after-timeout-fallback),
18 * resultHarvester (wpdb output normalization), queryDiagnostics (sql-source
19 * extraction), and transactionExecutor (multi-statement transactions).
20 *
21 * Owns six collaborators that previously lived as separate fields on
22 * DatabaseCore. They are grouped here because each is part of the query
23 * pipeline (build SQL, apply timeout, run, harvest result, dispatch
24 * recovery, normalize output) and because every one of them needs the
25 * same DatabaseCore back-reference plus the Logging dependency.
26 * Concentrating their wiring shrinks DatabaseCore's collaborator-field
27 * count from 10 to 5.
28 *
29 * DatabaseCore exposes each of the six components via its existing
30 * per-component accessor methods (queryExecutor(), queryTimeoutManager(),
31 * queryRecoveryPolicy(), resultHarvester(), queryDiagnostics(),
32 * transactionExecutor()); those accessors now delegate here. The public
33 * contract from DatabaseQueryInterface is unchanged.
34 */
35 class ABJ_404_Solution_DatabaseQueryServices {
36
37 /** @var ABJ_404_Solution_DatabaseQueryTimeoutManager */
38 private $queryTimeoutManager;
39
40 /** @var ABJ_404_Solution_DatabaseWpdbResultHarvester */
41 private $resultHarvester;
42
43 /** @var ABJ_404_Solution_DatabaseQueryDiagnostics */
44 private $queryDiagnostics;
45
46 /** @var ABJ_404_Solution_DatabaseQueryRecoveryPolicy */
47 private $queryRecoveryPolicy;
48
49 /** @var ABJ_404_Solution_DatabaseQueryExecutor */
50 private $queryExecutor;
51
52 /** @var ABJ_404_Solution_DatabaseTransactionExecutor */
53 private $transactionExecutor;
54
55 /**
56 * @param ABJ_404_Solution_DatabaseCore $core
57 * @param ABJ_404_Solution_Logging $logger
58 */
59 public function __construct(
60 ABJ_404_Solution_DatabaseCore $core,
61 $logger
62 ) {
63 $this->queryTimeoutManager = new ABJ_404_Solution_DatabaseQueryTimeoutManager($core, $logger);
64 $this->resultHarvester = new ABJ_404_Solution_DatabaseWpdbResultHarvester();
65 $this->queryDiagnostics = new ABJ_404_Solution_DatabaseQueryDiagnostics($logger);
66 $this->queryRecoveryPolicy = new ABJ_404_Solution_DatabaseQueryRecoveryPolicy(
67 $core,
68 $logger,
69 $this->resultHarvester,
70 $this->queryDiagnostics
71 );
72 $this->queryExecutor = new ABJ_404_Solution_DatabaseQueryExecutor(
73 $core,
74 $logger,
75 $this->resultHarvester,
76 $this->queryDiagnostics,
77 $this->queryRecoveryPolicy
78 );
79 $this->transactionExecutor = new ABJ_404_Solution_DatabaseTransactionExecutor($core, $logger);
80 }
81
82 /** @return ABJ_404_Solution_DatabaseQueryTimeoutManager */
83 public function queryTimeoutManager(): ABJ_404_Solution_DatabaseQueryTimeoutManager {
84 return $this->queryTimeoutManager;
85 }
86
87 /** @return ABJ_404_Solution_DatabaseWpdbResultHarvester */
88 public function resultHarvester(): ABJ_404_Solution_DatabaseWpdbResultHarvester {
89 return $this->resultHarvester;
90 }
91
92 /** @return ABJ_404_Solution_DatabaseQueryDiagnostics */
93 public function queryDiagnostics(): ABJ_404_Solution_DatabaseQueryDiagnostics {
94 return $this->queryDiagnostics;
95 }
96
97 /** @return ABJ_404_Solution_DatabaseQueryRecoveryPolicy */
98 public function queryRecoveryPolicy(): ABJ_404_Solution_DatabaseQueryRecoveryPolicy {
99 return $this->queryRecoveryPolicy;
100 }
101
102 /** @return ABJ_404_Solution_DatabaseQueryExecutor */
103 public function queryExecutor(): ABJ_404_Solution_DatabaseQueryExecutor {
104 return $this->queryExecutor;
105 }
106
107 /** @return ABJ_404_Solution_DatabaseTransactionExecutor */
108 public function transactionExecutor(): ABJ_404_Solution_DatabaseTransactionExecutor {
109 return $this->transactionExecutor;
110 }
111 }
112