Mercurial > hg > orthanc-databases
comparison Framework/Plugins/IndexBackend.cpp @ 239:e9ba888f371b
fix IndexBackend::SetGlobalProperty(), lighten GlobalProperty enum
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 08 Apr 2021 20:30:15 +0200 |
parents | f033cc039264 |
children | 7f5ee2b42a86 |
comparison
equal
deleted
inserted
replaced
238:f033cc039264 | 239:e9ba888f371b |
---|---|
1393 internalId = ReadInteger64(statement, 0); | 1393 internalId = ReadInteger64(statement, 0); |
1394 return true; | 1394 return true; |
1395 } | 1395 } |
1396 } | 1396 } |
1397 | 1397 |
1398 | |
1399 static void RunSetGlobalPropertyStatement(DatabaseManager::CachedStatement& statement, | |
1400 bool hasServer, | |
1401 bool hasValue, | |
1402 const char* serverIdentifier, | |
1403 int32_t property, | |
1404 const char* utf8) | |
1405 { | |
1406 Dictionary args; | |
1407 | |
1408 statement.SetParameterType("property", ValueType_Integer64); | |
1409 args.SetIntegerValue("property", static_cast<int>(property)); | |
1410 | |
1411 if (hasValue) | |
1412 { | |
1413 assert(utf8 != NULL); | |
1414 statement.SetParameterType("value", ValueType_Utf8String); | |
1415 args.SetUtf8Value("value", utf8); | |
1416 } | |
1417 else | |
1418 { | |
1419 assert(utf8 == NULL); | |
1420 } | |
1421 | |
1422 if (hasServer) | |
1423 { | |
1424 assert(serverIdentifier != NULL && strlen(serverIdentifier) > 0); | |
1425 statement.SetParameterType("server", ValueType_Utf8String); | |
1426 args.SetUtf8Value("server", serverIdentifier); | |
1427 } | |
1428 else | |
1429 { | |
1430 assert(serverIdentifier == NULL); | |
1431 } | |
1432 | |
1433 statement.Execute(args); | |
1434 } | |
1435 | |
1398 | 1436 |
1399 void IndexBackend::SetGlobalProperty(DatabaseManager& manager, | 1437 void IndexBackend::SetGlobalProperty(DatabaseManager& manager, |
1400 const char* serverIdentifier, | 1438 const char* serverIdentifier, |
1401 int32_t property, | 1439 int32_t property, |
1402 const char* utf8) | 1440 const char* utf8) |
1407 } | 1445 } |
1408 else if (manager.GetDialect() == Dialect_SQLite) | 1446 else if (manager.GetDialect() == Dialect_SQLite) |
1409 { | 1447 { |
1410 bool hasServer = (strlen(serverIdentifier) != 0); | 1448 bool hasServer = (strlen(serverIdentifier) != 0); |
1411 | 1449 |
1412 std::unique_ptr<DatabaseManager::CachedStatement> statement; | |
1413 | |
1414 if (hasServer) | 1450 if (hasServer) |
1415 { | 1451 { |
1416 statement.reset(new DatabaseManager::CachedStatement( | 1452 DatabaseManager::CachedStatement statement( |
1417 STATEMENT_FROM_HERE, manager, | 1453 STATEMENT_FROM_HERE, manager, |
1418 "INSERT OR REPLACE INTO ServerProperties VALUES (${server}, ${property}, ${value})")); | 1454 "INSERT OR REPLACE INTO ServerProperties VALUES (${server}, ${property}, ${value})"); |
1455 | |
1456 RunSetGlobalPropertyStatement(statement, true, true, serverIdentifier, property, utf8); | |
1419 } | 1457 } |
1420 else | 1458 else |
1421 { | 1459 { |
1422 statement.reset(new DatabaseManager::CachedStatement( | 1460 DatabaseManager::CachedStatement statement( |
1423 STATEMENT_FROM_HERE, manager, | 1461 STATEMENT_FROM_HERE, manager, |
1424 "INSERT OR REPLACE INTO GlobalProperties VALUES (${property}, ${value})")); | 1462 "INSERT OR REPLACE INTO GlobalProperties VALUES (${property}, ${value})"); |
1425 } | 1463 |
1426 | 1464 RunSetGlobalPropertyStatement(statement, false, true, NULL, property, utf8); |
1427 statement->SetParameterType("property", ValueType_Integer64); | 1465 } |
1428 statement->SetParameterType("value", ValueType_Utf8String); | 1466 } |
1429 | 1467 else |
1430 Dictionary args; | 1468 { |
1431 args.SetIntegerValue("property", static_cast<int>(property)); | 1469 bool hasServer = (strlen(serverIdentifier) != 0); |
1432 args.SetUtf8Value("value", utf8); | |
1433 | 1470 |
1434 if (hasServer) | 1471 if (hasServer) |
1435 { | 1472 { |
1436 statement->SetParameterType("server", ValueType_Utf8String); | |
1437 args.SetUtf8Value("server", serverIdentifier); | |
1438 } | |
1439 | |
1440 statement->Execute(args); | |
1441 } | |
1442 else | |
1443 { | |
1444 bool hasServer = (strlen(serverIdentifier) != 0); | |
1445 | |
1446 std::unique_ptr<DatabaseManager::CachedStatement> statement; | |
1447 | |
1448 { | |
1449 if (hasServer) | |
1450 { | 1473 { |
1451 statement.reset(new DatabaseManager::CachedStatement( | 1474 DatabaseManager::CachedStatement statement( |
1452 STATEMENT_FROM_HERE, manager, | 1475 STATEMENT_FROM_HERE, manager, |
1453 "DELETE FROM ServerProperties WHERE server=${server} AND property=${property}")); | 1476 "DELETE FROM ServerProperties WHERE server=${server} AND property=${property}"); |
1477 | |
1478 RunSetGlobalPropertyStatement(statement, true, false, serverIdentifier, property, NULL); | |
1454 } | 1479 } |
1455 else | 1480 |
1456 { | 1481 { |
1457 statement.reset(new DatabaseManager::CachedStatement( | 1482 DatabaseManager::CachedStatement statement( |
1458 STATEMENT_FROM_HERE, manager, | 1483 STATEMENT_FROM_HERE, manager, |
1459 "DELETE FROM GlobalProperties WHERE property=${property}")); | 1484 "INSERT INTO ServerProperties VALUES (${server}, ${property}, ${value})"); |
1485 | |
1486 RunSetGlobalPropertyStatement(statement, true, true, serverIdentifier, property, utf8); | |
1460 } | 1487 } |
1461 | 1488 } |
1462 statement->SetParameterType("property", ValueType_Integer64); | 1489 else |
1463 | 1490 { |
1464 Dictionary args; | |
1465 args.SetIntegerValue("property", property); | |
1466 | |
1467 if (hasServer) | |
1468 { | 1491 { |
1469 statement->SetParameterType("server", ValueType_Utf8String); | 1492 DatabaseManager::CachedStatement statement( |
1470 args.SetUtf8Value("server", serverIdentifier); | 1493 STATEMENT_FROM_HERE, manager, |
1494 "DELETE FROM GlobalProperties WHERE property=${property}"); | |
1495 | |
1496 RunSetGlobalPropertyStatement(statement, false, false, NULL, property, NULL); | |
1471 } | 1497 } |
1472 | 1498 |
1473 statement->Execute(args); | |
1474 } | |
1475 | |
1476 { | |
1477 if (hasServer) | |
1478 { | 1499 { |
1479 statement.reset(new DatabaseManager::CachedStatement( | 1500 DatabaseManager::CachedStatement statement( |
1480 STATEMENT_FROM_HERE, manager, | 1501 STATEMENT_FROM_HERE, manager, |
1481 "INSERT INTO ServerProperties VALUES (${server}, ${property}, ${value})")); | 1502 "INSERT INTO GlobalProperties VALUES (${property}, ${value})"); |
1503 | |
1504 RunSetGlobalPropertyStatement(statement, false, true, NULL, property, utf8); | |
1482 } | 1505 } |
1483 else | |
1484 { | |
1485 statement.reset(new DatabaseManager::CachedStatement( | |
1486 STATEMENT_FROM_HERE, manager, | |
1487 "INSERT INTO GlobalProperties VALUES (${property}, ${value})")); | |
1488 } | |
1489 | |
1490 statement->SetParameterType("property", ValueType_Integer64); | |
1491 statement->SetParameterType("value", ValueType_Utf8String); | |
1492 | |
1493 Dictionary args; | |
1494 args.SetIntegerValue("property", static_cast<int>(property)); | |
1495 args.SetUtf8Value("value", utf8); | |
1496 | |
1497 if (hasServer) | |
1498 { | |
1499 statement->SetParameterType("server", ValueType_Utf8String); | |
1500 args.SetUtf8Value("server", serverIdentifier); | |
1501 } | |
1502 | |
1503 statement->Execute(args); | |
1504 } | 1506 } |
1505 } | 1507 } |
1506 } | 1508 } |
1507 | 1509 |
1508 | 1510 |