Skip to content

Commit e436a4a

Browse files
Usage of polyfill class to cope with backward incompatible change in NC 21
Signed-off-by: Christian Wolf <[email protected]>
1 parent 6463485 commit e436a4a

File tree

2 files changed

+80
-28
lines changed

2 files changed

+80
-28
lines changed

lib/Db/DbTypesPolyfillHelper.php

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<?php
2+
3+
namespace OCA\Cookbook\Db;
4+
5+
use OCP\Util;
6+
7+
class DbTypesPolyfillHelper {
8+
/**
9+
* @var String
10+
*/
11+
private $int;
12+
/**
13+
* @var String
14+
*/
15+
private $string;
16+
17+
public function __construct(Util $util) {
18+
switch ($util->getVersion()[0]) {
19+
case 18:
20+
case 19:
21+
case 20:
22+
$this->int = \Doctrine\DBAL\Types\Type::INTEGER;
23+
$this->string = \Doctrine\DBAL\Types\Type::STRING;
24+
break;
25+
26+
default:
27+
$this->int = \OCP\DB\Types::INTEGER;
28+
$this->string = \OCP\DB\Types::STRING;
29+
break;
30+
}
31+
}
32+
33+
/**
34+
* @return string
35+
*/
36+
final public function INT() {
37+
return $this->int;
38+
}
39+
40+
/**
41+
* @return string
42+
*/
43+
final public function STRING() {
44+
return $this->string;
45+
}
46+
}

lib/Db/RecipeDb.php

+34-28
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,14 @@ class RecipeDb {
1313

1414
private $db;
1515

16-
public function __construct(IDBConnection $db) {
16+
/**
17+
* @var DbTypesPolyfillHelper
18+
*/
19+
private $types;
20+
21+
public function __construct(IDBConnection $db, DbTypesPolyfillHelper $polyfillTypes) {
1722
$this->db = $db;
23+
$this->types = $polyfillTypes;
1824
}
1925

2026
/**
@@ -78,7 +84,7 @@ public function findAllRecipes(string $user_id) {
7884
->from(self::DB_TABLE_RECIPES, 'r')
7985
->where('r.user_id = :user')
8086
->orderBy('r.name');
81-
$qb->setParameter('user', $user_id, 'string');
87+
$qb->setParameter('user', $user_id, $this->types->STRING());
8288
$qb->leftJoin('r', self::DB_TABLE_KEYWORDS, 'k',
8389
$qb->expr()->andX(
8490
'r.recipe_id = k.recipe_id',
@@ -135,7 +141,7 @@ public function findAllKeywords(string $user_id) {
135141
->where('user_id = :user AND k.name != \'\'')
136142
->groupBy('k.name')
137143
->orderBy('k.name');
138-
$qb->setParameter('user', $user_id, 'string');
144+
$qb->setParameter('user', $user_id, $this->types->STRING());
139145

140146
$cursor = $qb->execute();
141147
$result = $cursor->fetchAll();
@@ -159,7 +165,7 @@ public function findAllCategories(string $user_id) {
159165
->where('user_id = :user')
160166
->groupBy('c.name')
161167
->orderBy('c.name');
162-
$qb->setParameter('user', $user_id, 'string');
168+
$qb->setParameter('user', $user_id, $this->types->STRING());
163169

164170
$cursor = $qb->execute();
165171
$result = $cursor->fetchAll();
@@ -216,8 +222,8 @@ public function getRecipesByCategory(string $category, string $user_id) {
216222
->from(self::DB_TABLE_CATEGORIES, 'c')
217223
->where('c.name = :category')
218224
->andWhere('c.user_id = :user')
219-
->setParameter('category', $category, 'string')
220-
->setParameter('user', $user_id, 'string');
225+
->setParameter('category', $category, $this->types->STRING())
226+
->setParameter('user', $user_id, $this->types->STRING());
221227

222228
$qb->join('c', self::DB_TABLE_RECIPES, 'r', 'c.recipe_id = r.recipe_id');
223229
$qb->leftJoin('c', self::DB_TABLE_KEYWORDS, 'k', 'c.recipe_id = k.recipe_id');
@@ -267,9 +273,9 @@ public function getRecipesByKeywords(string $keywords, string $user_id) {
267273
->where('k.name IN (:keywords)')
268274
->andWhere('k.user_id = :user')
269275
->having('COUNT(DISTINCT k.name) = :keywordsCount')
270-
->setParameter('user', $user_id, 'integer')
276+
->setParameter('user', $user_id, $this->types->INT())
271277
->setParameter('keywords', $keywords_arr, IQueryBuilder::PARAM_STR_ARRAY)
272-
->setParameter('keywordsCount', sizeof($keywords_arr), 'integer');
278+
->setParameter('keywordsCount', sizeof($keywords_arr), $this->types->INT());
273279
$qb->join('k', self::DB_TABLE_RECIPES, 'r', 'k.recipe_id = r.recipe_id');
274280
$qb->join('r', self::DB_TABLE_KEYWORDS, 'kk', 'kk.recipe_id = r.recipe_id');
275281
$qb->groupBy(['r.name', 'r.recipe_id', 'kk.name']);
@@ -315,14 +321,14 @@ public function findRecipes(array $keywords, string $user_id) {
315321
$qb->orWhere("LOWER(c.name) LIKE :keyword$paramIdx");
316322

317323
$params["keyword$paramIdx"] = "%$lowerKeyword%";
318-
$types["keyword$paramIdx"] = 'string';
324+
$types["keyword$paramIdx"] = $this->types->STRING();
319325
$paramIdx++;
320326
}
321327

322328
$qb->andWhere('r.user_id = :user');
323329

324330
$qb->setParameters($params, $types);
325-
$qb->setParameter('user', $user_id, 'string');
331+
$qb->setParameter('user', $user_id, $this->types->STRING());
326332

327333
$qb->groupBy(['r.name', 'r.recipe_id', 'k.name']);
328334
$qb->orderBy('r.name');
@@ -365,22 +371,22 @@ public function emptySearchIndex(string $user_id) {
365371
$qb->delete(self::DB_TABLE_RECIPES)
366372
->where('user_id = :user')
367373
->orWhere('user_id = :empty');
368-
$qb->setParameter('user', $user_id, 'string');
369-
$qb->setParameter('empty', 'empty', 'string');
374+
$qb->setParameter('user', $user_id, $this->types->STRING());
375+
$qb->setParameter('empty', 'empty', $this->types->STRING());
370376

371377
$qb->execute();
372378

373379
$qb->delete(self::DB_TABLE_KEYWORDS)
374380
->where('user_id = :user')
375381
->orWhere('user_id = :empty');
376-
$qb->setParameter('user', $user_id, 'string');
377-
$qb->setParameter('empty', 'empty', 'string');
382+
$qb->setParameter('user', $user_id, $this->types->STRING());
383+
$qb->setParameter('empty', 'empty', $this->types->STRING());
378384

379385
$qb->delete(self::DB_TABLE_CATEGORIES)
380386
->where('user_id = :user')
381387
->orWhere('user_id = :empty');
382-
$qb->setParameter('user', $user_id, 'string');
383-
$qb->setParameter('empty', 'empty', 'string');
388+
$qb->setParameter('user', $user_id, $this->types->STRING());
389+
$qb->setParameter('empty', 'empty', $this->types->STRING());
384390

385391
$qb->execute();
386392
}
@@ -443,8 +449,8 @@ public function insertRecipes(array $recipes, string $userId) {
443449
$qb->setParameter('userid', $userId);
444450

445451
foreach ($recipes as $recipe) {
446-
$qb->setParameter('id', $recipe['id'], 'integer');
447-
$qb->setParameter('name', $recipe['name'], 'string');
452+
$qb->setParameter('id', $recipe['id'], $this->types->INT());
453+
$qb->setParameter('name', $recipe['name'], $this->types->STRING());
448454

449455
$qb->execute();
450456
}
@@ -520,8 +526,8 @@ public function updateCategoryOfRecipe(int $recipeId, string $categoryName, stri
520526
$qb->update(self::DB_TABLE_CATEGORIES)
521527
->where('recipe_id = :rid', 'user_id = :user');
522528
$qb->set('name', $qb->expr()->literal($categoryName, IQueryBuilder::PARAM_STR));
523-
$qb->setParameter('rid', $recipeId, 'integer');
524-
$qb->setParameter('user', $userId, 'string');
529+
$qb->setParameter('rid', $recipeId, $this->types->INT());
530+
$qb->setParameter('user', $userId, $this->types->STRING());
525531
$qb->execute();
526532
}
527533

@@ -538,9 +544,9 @@ public function addCategoryOfRecipe(int $recipeId, string $categoryName, string
538544
$qb = $this->db->getQueryBuilder();
539545
$qb->insert(self::DB_TABLE_CATEGORIES)
540546
->values(['recipe_id' => ':rid', 'name' => ':name', 'user_id' => ':user']);
541-
$qb->setParameter('rid', $recipeId, 'integer');
542-
$qb->setParameter('name', $categoryName, 'string');
543-
$qb->setParameter('user', $userId, 'string');
547+
$qb->setParameter('rid', $recipeId, $this->types->INT());
548+
$qb->setParameter('name', $categoryName, $this->types->STRING());
549+
$qb->setParameter('user', $userId, $this->types->STRING());
544550

545551
try {
546552
$qb->execute();
@@ -553,8 +559,8 @@ public function removeCategoryOfRecipe(int $recipeId, string $userId) {
553559
$qb = $this->db->getQueryBuilder();
554560
$qb->delete(self::DB_TABLE_CATEGORIES)
555561
->where('recipe_id = :rid', 'user_id = :user');
556-
$qb->setParameter('rid', $recipeId, 'integer');
557-
$qb->setParameter('user', $userId, 'string');
562+
$qb->setParameter('rid', $recipeId, $this->types->INT());
563+
$qb->setParameter('user', $userId, $this->types->STRING());
558564
$qb->execute();
559565
}
560566

@@ -566,11 +572,11 @@ public function addKeywordPairs(array $pairs, string $userId) {
566572
$qb = $this->db->getQueryBuilder();
567573
$qb->insert(self::DB_TABLE_KEYWORDS)
568574
->values(['recipe_id' => ':rid', 'name' => ':name', 'user_id' => ':user']);
569-
$qb->setParameter('user', $userId, 'string');
575+
$qb->setParameter('user', $userId, $this->types->STRING());
570576

571577
foreach ($pairs as $p) {
572-
$qb->setParameter('rid', $p['recipeId'], 'integer');
573-
$qb->setParameter('name', $p['name'], 'string');
578+
$qb->setParameter('rid', $p['recipeId'], $this->types->INT());
579+
$qb->setParameter('name', $p['name'], $this->types->STRING());
574580

575581
try {
576582
$qb->execute();

0 commit comments

Comments
 (0)