|
9 | 9 | use poggit\libasynql\generic\GenericVariable; |
10 | 10 | use poggit\libasynql\result\SqlChangeResult; |
11 | 11 | use poggit\libasynql\result\SqlSelectResult; |
| 12 | +use poggit\libasynql\SqlDialect; |
12 | 13 | use poggit\libasynql\SqlError; |
13 | 14 | use poggit\libasynql\SqlThread; |
14 | 15 | use Ramsey\Uuid\UuidInterface; |
|
17 | 18 |
|
18 | 19 | final class LabelManager { |
19 | 20 | private DataConnector $conn; |
| 21 | + /** @var SqlDialect::* */ |
20 | 22 | private string $dialect; |
21 | 23 |
|
22 | 24 | /** |
@@ -75,8 +77,12 @@ public function update(UuidInterface $id, string $name, string $value) : Generat |
75 | 77 | * @return VoidPromise |
76 | 78 | */ |
77 | 79 | public function set(UuidInterface $id, string $name, string $value) : Generator { |
| 80 | + $queryString = match ($this->dialect) { |
| 81 | + SqlDialect::SQLITE => "INSERT OR REPLACE INTO {$this->labelTable} (id, name, value) VALUES (:id, :name, :value);", |
| 82 | + SqlDialect::MYSQL => "INSERT INTO {$this->labelTable} (id, name, value) VALUES (:id, :name, :value) ON DUPLICATE KEY UPDATE value = :value;", |
| 83 | + }; |
78 | 84 | yield from QueryBuilder::new() |
79 | | - ->addQuery("INSERT OR REPLACE INTO {$this->labelTable} (id, name, value) VALUES (:id, :name, :value);", SqlThread::MODE_CHANGE) |
| 85 | + ->addQuery($queryString, SqlThread::MODE_CHANGE) |
80 | 86 | ->addParam("id", GenericVariable::TYPE_STRING, $id->toString()) |
81 | 87 | ->addParam("name", GenericVariable::TYPE_STRING, $name) |
82 | 88 | ->addParam("value", GenericVariable::TYPE_STRING, $value) |
|
0 commit comments