Skip to content

Commit c124724

Browse files
committed
lib: refactor query builder handling
Rather than having to remember to reset the query builder in each method that uses it, these are now created on-demand from the db connection. Signed-off-by: Maximilian Bosch <[email protected]>
1 parent 8e9e960 commit c124724

File tree

6 files changed

+65
-107
lines changed

6 files changed

+65
-107
lines changed

lib/Controller/ContactsController.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ class ContactsController extends Controller {
3434
private $contactsManager;
3535
private $addressService;
3636
private $dbconnection;
37-
private $qb;
3837
private $cdBackend;
3938
private $avatarManager;
4039
private $root;
@@ -69,7 +68,6 @@ public function __construct(
6968
$this->contactsManager = $contactsManager;
7069
$this->addressService = $addressService;
7170
$this->dbconnection = $dbconnection;
72-
$this->qb = $dbconnection->getQueryBuilder();
7371
$this->cdBackend = $cdBackend;
7472
$this->root = $root;
7573
$this->urlGenerator = $urlGenerator;
@@ -669,7 +667,7 @@ private function getAddressBooksReadOnly(): array {
669667
* @throws \OCP\DB\Exception
670668
*/
671669
private function setAddressCoordinates(float $lat, float $lng, string $adr, string $uri): void {
672-
$qb = $this->qb;
670+
$qb = $this->dbconnection->getQueryBuilder();
673671
$adr_norm = strtolower(preg_replace('/\s+/', '', $adr));
674672

675673
$qb->select('id')
@@ -703,7 +701,6 @@ private function setAddressCoordinates(float $lat, float $lng, string $adr, stri
703701
$req = $qb->execute();
704702
$id = $qb->getLastInsertId();
705703
}
706-
$qb = $this->dbconnection->getQueryBuilder();
707704
}
708705

709706

lib/Controller/PublicContactsController.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
class PublicContactsController extends PublicPageController {
4040
protected IManager $contactsManager;
4141
protected AddressService $addressService;
42-
protected IQueryBuilder $qb;
4342
protected CardDavBackend $cdBackend;
4443
protected IAvatarManager $avatarManager;
4544
protected IRootFolder $root;
@@ -64,7 +63,6 @@ public function __construct(
6463
$this->avatarManager = $avatarManager;
6564
$this->contactsManager = $contactsManager;
6665
$this->addressService = $addressService;
67-
$this->qb = $dbconnection->getQueryBuilder();
6866
$this->cdBackend = $cdBackend;
6967
$this->root = $root;
7068
}

lib/Service/AddressService.php

Lines changed: 33 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
* @package OCA\Maps\Service
4040
*/
4141
class AddressService {
42-
private $qb;
4342
private $dbconnection;
4443
private $jobList;
4544
private $appData;
@@ -55,7 +54,6 @@ public function __construct(
5554
IDBConnection $dbconnection,
5655
) {
5756
$this->dbconnection = $dbconnection;
58-
$this->qb = $dbconnection->getQueryBuilder();
5957
$this->memcache = $cacheFactory->createLocal('maps');
6058
$this->jobList = $jobList;
6159
$this->appData = $appData;
@@ -78,11 +76,12 @@ public function addressToGeo($adr, $uri): string {
7876
*/
7977
public function lookupAddress($adr, $uri): array {
8078
$adr_norm = strtolower(preg_replace('/\s+/', '', $adr));
81-
$this->qb->select('id', 'lat', 'lng', 'looked_up')
79+
$qb = $this->dbconnection->getQueryBuilder();
80+
$qb->select('id', 'lat', 'lng', 'looked_up')
8281
->from('maps_address_geo')
83-
->where($this->qb->expr()->eq('object_uri', $this->qb->createNamedParameter($uri, IQueryBuilder::PARAM_STR)))
84-
->andWhere($this->qb->expr()->eq('adr_norm', $this->qb->createNamedParameter($adr_norm, IQueryBuilder::PARAM_STR)));
85-
$req = $this->qb->execute();
82+
->where($qb->expr()->eq('object_uri', $qb->createNamedParameter($uri, IQueryBuilder::PARAM_STR)))
83+
->andWhere($qb->expr()->eq('adr_norm', $qb->createNamedParameter($adr_norm, IQueryBuilder::PARAM_STR)));
84+
$req = $qb->execute();
8685
$lat = null;
8786
$lng = null;
8887
$inDb = false;
@@ -122,14 +121,13 @@ public function lookupAddress($adr, $uri): array {
122121

123122
} else {
124123
if ($lookedUp) {
125-
$this->qb->update('maps_address_geo')
124+
$qb->update('maps_address_geo')
126125
->set('lat', $qb->createNamedParameter($lat, IQueryBuilder::PARAM_STR))
127126
->set('lng', $qb->createNamedParameter($lng, IQueryBuilder::PARAM_STR))
128127
->set('object_uri', $qb->createNamedParameter($uri, IQueryBuilder::PARAM_STR))
129128
->set('looked_up', $qb->createNamedParameter($lookedUp, IQueryBuilder::PARAM_BOOL))
130-
->where($this->qb->expr()->eq('id', $this->qb->createNamedParameter($id, IQueryBuilder::PARAM_STR)));
131-
$req = $this->qb->execute();
132-
$qb = $this->dbconnection->getQueryBuilder();
129+
->where($qb->expr()->eq('id', $qb->createNamedParameter($id, IQueryBuilder::PARAM_STR)));
130+
$req = $qb->execute();
133131
}
134132
}
135133

@@ -149,18 +147,18 @@ private function lookupAddressInternal($adr): array {
149147

150148
$adr_norm = strtolower(preg_replace('/\s+/', '', $adr));
151149

152-
$this->qb->select('lat', 'lng')
150+
$qb = $this->dbconnection->getQueryBuilder();
151+
$qb->select('lat', 'lng')
153152
->from('maps_address_geo')
154-
->where($this->qb->expr()->eq('looked_up', $this->qb->createNamedParameter(true, IQueryBuilder::PARAM_BOOL)))
155-
->andWhere($this->qb->expr()->eq('adr_norm', $this->qb->createNamedParameter($adr_norm, IQueryBuilder::PARAM_STR)));
156-
$req = $this->qb->execute();
153+
->where($qb->expr()->eq('looked_up', $qb->createNamedParameter(true, IQueryBuilder::PARAM_BOOL)))
154+
->andWhere($qb->expr()->eq('adr_norm', $qb->createNamedParameter($adr_norm, IQueryBuilder::PARAM_STR)));
155+
$req = $qb->execute();
157156
while ($row = $req->fetch()) {
158157
$res[0] = $row['lat'];
159158
$res[1] = $row['lng'];
160159
$res[2] = true;
161160
}
162161
$req->closeCursor();
163-
$qb = $this->dbconnection->getQueryBuilder();
164162

165163
return $res;
166164
}
@@ -236,7 +234,7 @@ public function scheduleVCardForLookup($cardData, $cardUri) {
236234
}
237235

238236
private function cleanUpDBContactAddresses($vCard, $uri) {
239-
$qb = $this->qb;
237+
$qb = $this->dbconnection->getQueryBuilder();
240238
// get all vcard addresses
241239
$vCardAddresses = [];
242240
foreach ($vCard->children() as $property) {
@@ -247,36 +245,34 @@ private function cleanUpDBContactAddresses($vCard, $uri) {
247245
}
248246
// check which addresses from DB is not in the vCard anymore
249247
$adrIdToDelete = [];
250-
$this->qb->select('id', 'adr')
248+
$qb->select('id', 'adr')
251249
->from('maps_address_geo')
252-
->where($this->qb->expr()->eq('object_uri', $this->qb->createNamedParameter($uri, IQueryBuilder::PARAM_STR)));
253-
$req = $this->qb->execute();
250+
->where($qb->expr()->eq('object_uri', $qb->createNamedParameter($uri, IQueryBuilder::PARAM_STR)));
251+
$req = $qb->execute();
254252
while ($row = $req->fetch()) {
255253
if (!in_array($row['adr'], $vCardAddresses)) {
256254
array_push($adrIdToDelete, $row['id']);
257255
}
258256
}
259257
$req->closeCursor();
260-
$qb = $this->dbconnection->getQueryBuilder();
261258

262259
foreach ($adrIdToDelete as $id) {
260+
$qb = $this->dbconnection->getQueryBuilder();
263261
$qb->delete('maps_address_geo')
264262
->where(
265263
$qb->expr()->eq('id', $qb->createNamedParameter($id, IQueryBuilder::PARAM_INT))
266264
);
267265
$req = $qb->execute();
268-
$qb = $this->dbconnection->getQueryBuilder();
269266
}
270267
}
271268

272269
public function deleteDBContactAddresses($uri) {
273-
$qb = $this->qb;
270+
$qb = $this->dbconnection->getQueryBuilder();
274271
$qb->delete('maps_address_geo')
275272
->where(
276273
$qb->expr()->eq('object_uri', $qb->createNamedParameter($uri, IQueryBuilder::PARAM_STR))
277274
);
278275
$req = $qb->execute();
279-
$qb = $this->dbconnection->getQueryBuilder();
280276
}
281277

282278
// schedules the address for an external lookup
@@ -287,18 +283,18 @@ private function scheduleForLookup($adr, $uri): array {
287283
$geo = $this->lookupAddressExternal($adr);
288284
}
289285
$adr_norm = strtolower(preg_replace('/\s+/', '', $adr));
290-
$this->qb->insert('maps_address_geo')
286+
$qb = $this->dbconnection->getQueryBuilder();
287+
$qb->insert('maps_address_geo')
291288
->values([
292-
'adr' => $this->qb->createNamedParameter($adr, IQueryBuilder::PARAM_STR),
293-
'adr_norm' => $this->qb->createNamedParameter($adr_norm, IQueryBuilder::PARAM_STR),
294-
'object_uri' => $this->qb->createNamedParameter($uri, IQueryBuilder::PARAM_STR),
295-
'lat' => $this->qb->createNamedParameter($geo[0], IQueryBuilder::PARAM_STR),
296-
'lng' => $this->qb->createNamedParameter($geo[1], IQueryBuilder::PARAM_STR),
297-
'looked_up' => $this->qb->createNamedParameter($geo[2], IQueryBuilder::PARAM_BOOL),
289+
'adr' => $qb->createNamedParameter($adr, IQueryBuilder::PARAM_STR),
290+
'adr_norm' => $qb->createNamedParameter($adr_norm, IQueryBuilder::PARAM_STR),
291+
'object_uri' => $qb->createNamedParameter($uri, IQueryBuilder::PARAM_STR),
292+
'lat' => $qb->createNamedParameter($geo[0], IQueryBuilder::PARAM_STR),
293+
'lng' => $qb->createNamedParameter($geo[1], IQueryBuilder::PARAM_STR),
294+
'looked_up' => $qb->createNamedParameter($geo[2], IQueryBuilder::PARAM_BOOL),
298295
]);
299-
$req = $this->qb->execute();
300-
$id = $this->qb->getLastInsertId();
301-
$qb = $this->dbconnection->getQueryBuilder();
296+
$req = $qb->execute();
297+
$id = $qb->getLastInsertId();
302298
if (!$geo[2]) {
303299
$this->jobList->add(LookupMissingGeoJob::class, []);
304300
}
@@ -310,11 +306,12 @@ private function scheduleForLookup($adr, $uri): array {
310306
public function lookupMissingGeo($max = 200):bool {
311307
// stores if all addresses where looked up
312308
$lookedUpAll = true;
313-
$this->qb->select('adr', 'object_uri')
309+
$qb = $this->dbconnection->getQueryBuilder();
310+
$qb->select('adr', 'object_uri')
314311
->from('maps_address_geo')
315-
->where($this->qb->expr()->eq('looked_up', $this->qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL)))
312+
->where($qb->expr()->eq('looked_up', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL)))
316313
->setMaxResults($max);
317-
$req = $this->qb->execute();
314+
$req = $qb->execute();
318315
$result = $req->fetchAll();
319316
$req->closeCursor();
320317
$i = 0;

0 commit comments

Comments
 (0)