Skip to content

Commit 493594d

Browse files
committed
feat userver: use a refactoring-proof c_str() instead of data()
Tests: протестировано CI commit_hash:1386b1640678c76f205d3490c81d745dd35a3c96
1 parent 4a8668d commit 493594d

9 files changed

Lines changed: 54 additions & 52 deletions

File tree

core/src/clients/http/connect_to.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ ConnectTo::ConnectTo(ConnectTo&& other) noexcept : value_(other.value_) {
1212

1313
ConnectTo::ConnectTo(const std::string& value) {
1414
if (!value.empty()) {
15-
value_ = curl::native::curl_slist_append(nullptr, value.data());
15+
value_ = curl::native::curl_slist_append(nullptr, value.c_str());
1616
}
1717
}
1818

libraries/s3api/src/s3api/s3api_methods.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#include <userver/http/common_headers.hpp>
99
#include <userver/http/url.hpp>
10+
#include <userver/utils/string_literal.hpp>
1011

1112
USERVER_NAMESPACE_BEGIN
1213

@@ -46,7 +47,7 @@ constexpr std::string_view kApplicationXml = "application/xml; charset=UTF-8";
4647

4748
constexpr std::string_view kEncodingTypeValueUrl = "url";
4849

49-
constexpr std::string_view kS3AwsXmlNamespace = "http://s3.amazonaws.com/doc/2006-03-01/";
50+
constexpr utils::StringLiteral kS3AwsXmlNamespace = "http://s3.amazonaws.com/doc/2006-03-01/";
5051

5152
// see https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
5253
const unsigned kMaxUploadsListLimit = 1000u;
@@ -218,7 +219,7 @@ Request CreateInternalApiRequest(
218219

219220
pugi::xml_document doc;
220221
auto multipart_upload_node = doc.append_child("CompleteMultipartUpload");
221-
multipart_upload_node.append_attribute("xmlns").set_value(kS3AwsXmlNamespace.data());
222+
multipart_upload_node.append_attribute("xmlns").set_value(kS3AwsXmlNamespace.c_str());
222223
for (const auto& part : request.completed_parts) {
223224
auto part_node = multipart_upload_node.append_child("Part");
224225
part_node.append_child("PartNumber")

samples/sqlite_service/sqlite_service.cpp

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,25 @@
1717

1818
namespace {
1919

20-
inline constexpr std::string_view kCreateTable = R"~(
21-
CREATE TABLE IF NOT EXISTS key_value_table (
22-
key TEXT PRIMARY KEY,
23-
value TEXT
24-
)
25-
)~";
26-
27-
inline constexpr std::string_view kSelectValueByKey = R"~(
28-
SELECT value FROM key_value_table WHERE key = ?
29-
)~";
30-
31-
inline constexpr std::string_view kInsertKeyValue = R"~(
32-
INSERT OR IGNORE INTO key_value_table (key, value) VALUES (?, ?)
33-
)~";
34-
35-
inline constexpr std::string_view kDeleteKeyValue = R"~(
36-
DELETE FROM key_value_table WHERE key = ?
37-
)~";
20+
const storages::sqlite::Query kCreateTable(
21+
"CREATE TABLE IF NOT EXISTS key_value_table (key TEXT PRIMARY KEY, value TEXT)",
22+
storages::sqlite::Query::NameLiteral{"create"}
23+
);
24+
25+
const storages::sqlite::Query kSelectValueByKey(
26+
"SELECT value FROM key_value_table WHERE key = ?",
27+
storages::sqlite::Query::NameLiteral{"select_by_key"}
28+
);
29+
30+
const storages::sqlite::Query kInsertKeyValue(
31+
"INSERT OR IGNORE INTO key_value_table (key, value) VALUES (?, ?)",
32+
storages::sqlite::Query::NameLiteral{"insert_kv"}
33+
);
34+
35+
const storages::sqlite::Query kDeleteKeyValue(
36+
"DELETE FROM key_value_table WHERE key = ?",
37+
storages::sqlite::Query::NameLiteral{"delete_kv"}
38+
);
3839

3940
} // namespace
4041

@@ -66,7 +67,7 @@ KeyValue::KeyValue(const components::ComponentConfig& config, const components::
6667
: HttpHandlerBase(config, context),
6768
sqlite_client_(context.FindComponent<components::SQLite>("key-value-database").GetClient())
6869
{
69-
sqlite_client_->Execute(storages::sqlite::OperationType::kReadWrite, kCreateTable.data());
70+
sqlite_client_->Execute(storages::sqlite::OperationType::kReadWrite, kCreateTable);
7071
}
7172
/// [SQLite service sample - component constructor]
7273

@@ -95,7 +96,7 @@ std::string KeyValue::HandleRequest(server::http::HttpRequest& request, server::
9596
/// [SQLite service sample - GetValue]
9697
std::string KeyValue::GetValue(std::string_view key, const server::http::HttpRequest& request) const {
9798
auto res =
98-
sqlite_client_->Execute(storages::sqlite::OperationType::kReadOnly, kSelectValueByKey.data(), key)
99+
sqlite_client_->Execute(storages::sqlite::OperationType::kReadOnly, kSelectValueByKey, key)
99100
.AsOptionalSingleField<std::string>();
100101
if (!res.has_value()) {
101102
request.SetResponseStatus(server::http::HttpStatus::kNotFound);
@@ -112,14 +113,14 @@ std::string KeyValue::PostValue(std::string_view key, const server::http::HttpRe
112113

113114
storages::sqlite::Transaction transaction = sqlite_client_->Begin(storages::sqlite::OperationType::kReadWrite, {});
114115

115-
auto res = transaction.Execute(kInsertKeyValue.data(), key, value).AsExecutionResult();
116+
auto res = transaction.Execute(kInsertKeyValue, key, value).AsExecutionResult();
116117
if (res.rows_affected) {
117118
transaction.Commit();
118119
request.SetResponseStatus(server::http::HttpStatus::kCreated);
119120
return std::string{value};
120121
}
121122

122-
auto trx_res = transaction.Execute(kSelectValueByKey.data(), key).AsSingleField<std::string>();
123+
auto trx_res = transaction.Execute(kSelectValueByKey, key).AsSingleField<std::string>();
123124
transaction.Rollback();
124125
if (value != trx_res) {
125126
request.SetResponseStatus(server::http::HttpStatus::kConflict);
@@ -130,10 +131,8 @@ std::string KeyValue::PostValue(std::string_view key, const server::http::HttpRe
130131

131132
/// [SQLite service sample - DeleteValue]
132133
std::string KeyValue::DeleteValue(std::string_view key) const {
133-
const storages::sqlite::Query kDeleteValue{kDeleteKeyValue.data()};
134-
135134
auto res =
136-
sqlite_client_->Execute(storages::sqlite::OperationType::kReadWrite, kDeleteValue, key).AsExecutionResult();
135+
sqlite_client_->Execute(storages::sqlite::OperationType::kReadWrite, kDeleteKeyValue, key).AsExecutionResult();
137136
return std::to_string(res.rows_affected);
138137
}
139138
/// [SQLite service sample - DeleteValue]

sqlite/functional_tests/integration_tests/src/db/sql.hpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,33 @@
11
#pragma once
22

3-
#include <string_view>
3+
#include <userver/utils/string_literal.hpp>
44

55
namespace functional_tests::db::sql {
66

7-
inline constexpr std::string_view kCreateTable = R"~(
7+
inline constexpr utils::StringLiteral kCreateTable = R"~(
88
CREATE TABLE IF NOT EXISTS key_value_table (
99
key PRIMARY KEY,
1010
value TEXT
1111
)
1212
)~";
1313

14-
inline constexpr std::string_view kSelectValueByKey = R"~(
14+
inline constexpr utils::StringLiteral kSelectValueByKey = R"~(
1515
SELECT value FROM key_value_table WHERE key = ?
1616
)~";
1717

18-
inline constexpr std::string_view kSelectAllKeyValue = R"~(
18+
inline constexpr utils::StringLiteral kSelectAllKeyValue = R"~(
1919
SELECT * FROM key_value_table
2020
)~";
2121

22-
inline constexpr std::string_view kInsertKeyValue = R"~(
22+
inline constexpr utils::StringLiteral kInsertKeyValue = R"~(
2323
INSERT OR IGNORE INTO key_value_table (key, value) VALUES (?, ?)
2424
)~";
2525

26-
inline constexpr std::string_view kUpdateKeyValue = R"~(
26+
inline constexpr utils::StringLiteral kUpdateKeyValue = R"~(
2727
UPDATE OR IGNORE key_value_table SET value = ? WHERE key = ?
2828
)~";
2929

30-
inline constexpr std::string_view kDeleteKeyValue = R"~(
30+
inline constexpr utils::StringLiteral kDeleteKeyValue = R"~(
3131
DELETE FROM key_value_table WHERE key = ?
3232
)~";
3333

sqlite/functional_tests/integration_tests/src/handlers/batch.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class BatchSelectInsert final : public server::handlers::HttpHandlerJsonBase {
4444
: HttpHandlerJsonBase(config, context),
4545
sqlite_client_(context.FindComponent<components::SQLite>("batch-database").GetClient())
4646
{
47-
sqlite_client_->Execute(storages::sqlite::OperationType::kReadWrite, db::sql::kCreateTable.data());
47+
sqlite_client_->Execute(storages::sqlite::OperationType::kReadWrite, db::sql::kCreateTable.c_str());
4848
}
4949

5050
formats::json::Value
@@ -74,17 +74,17 @@ class BatchSelectInsert final : public server::handlers::HttpHandlerJsonBase {
7474

7575
if (rows.size() > 1) {
7676
sqlite_client_
77-
->ExecuteMany(storages::sqlite::OperationType::kReadWrite, db::sql::kInsertKeyValue.data(), rows);
77+
->ExecuteMany(storages::sqlite::OperationType::kReadWrite, db::sql::kInsertKeyValue.c_str(), rows);
7878
} else {
7979
sqlite_client_->ExecuteDecompose(
8080
storages::sqlite::OperationType::kReadWrite,
81-
db::sql::kInsertKeyValue.data(),
81+
db::sql::kInsertKeyValue.c_str(),
8282
rows.back()
8383
);
8484
}
8585

8686
auto records =
87-
sqlite_client_->Execute(storages::sqlite::OperationType::kReadOnly, db::sql::kSelectAllKeyValue.data())
87+
sqlite_client_->Execute(storages::sqlite::OperationType::kReadOnly, db::sql::kSelectAllKeyValue.c_str())
8888
.AsVector<Row>();
8989

9090
std::ranges::sort(records, [](const auto& lhs, const auto& rhs) { return lhs.key < rhs.key; });
@@ -97,7 +97,7 @@ class BatchSelectInsert final : public server::handlers::HttpHandlerJsonBase {
9797

9898
formats::json::Value GetValues() const {
9999
auto rows =
100-
sqlite_client_->Execute(storages::sqlite::OperationType::kReadOnly, db::sql::kSelectAllKeyValue.data())
100+
sqlite_client_->Execute(storages::sqlite::OperationType::kReadOnly, db::sql::kSelectAllKeyValue.c_str())
101101
.AsVector<Row>();
102102
std::ranges::sort(rows, [](const Row& lhs, const Row& rhs) -> bool { return lhs.key < rhs.key; });
103103

sqlite/functional_tests/integration_tests/src/handlers/key_value.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class KeyValue final : public server::handlers::HttpHandlerBase {
2525
: HttpHandlerBase(config, context),
2626
sqlite_client_(context.FindComponent<components::SQLite>("key-value-database").GetClient())
2727
{
28-
sqlite_client_->Execute(storages::sqlite::OperationType::kReadWrite, db::sql::kCreateTable.data());
28+
sqlite_client_->Execute(storages::sqlite::OperationType::kReadWrite, db::sql::kCreateTable.c_str());
2929
}
3030

3131
std::string HandleRequestThrow(const server::http::HttpRequest& request, server::request::RequestContext&)
@@ -54,7 +54,7 @@ class KeyValue final : public server::handlers::HttpHandlerBase {
5454
private:
5555
std::string GetValue(std::string_view key, const server::http::HttpRequest& request) const {
5656
auto res =
57-
sqlite_client_->Execute(storages::sqlite::OperationType::kReadOnly, db::sql::kSelectValueByKey.data(), key)
57+
sqlite_client_->Execute(storages::sqlite::OperationType::kReadOnly, db::sql::kSelectValueByKey.c_str(), key)
5858
.AsOptionalSingleField<std::string>();
5959
if (!res.has_value()) {
6060
request.SetResponseStatus(server::http::HttpStatus::kNotFound);
@@ -70,14 +70,14 @@ class KeyValue final : public server::handlers::HttpHandlerBase {
7070
storages::sqlite::Transaction
7171
transaction = sqlite_client_->Begin(storages::sqlite::OperationType::kReadWrite, {});
7272

73-
auto res = transaction.Execute(db::sql::kInsertKeyValue.data(), key, value).AsExecutionResult();
73+
auto res = transaction.Execute(db::sql::kInsertKeyValue.c_str(), key, value).AsExecutionResult();
7474
if (res.rows_affected) {
7575
transaction.Commit();
7676
request.SetResponseStatus(server::http::HttpStatus::kCreated);
7777
return std::string{value};
7878
}
7979

80-
auto trx_res = transaction.Execute(db::sql::kSelectValueByKey.data(), key).AsSingleField<std::string>();
80+
auto trx_res = transaction.Execute(db::sql::kSelectValueByKey.c_str(), key).AsSingleField<std::string>();
8181
transaction.Rollback();
8282
if (value != trx_res) {
8383
request.SetResponseStatus(server::http::HttpStatus::kConflict);
@@ -95,14 +95,15 @@ class KeyValue final : public server::handlers::HttpHandlerBase {
9595
TransactionOptions{TransactionOptions::LockingMode::kImmediate}
9696
);
9797

98-
auto res = transaction.Execute(db::sql::kUpdateKeyValue.data(), value, key).AsExecutionResult();
98+
auto res = transaction.Execute(db::sql::kUpdateKeyValue.c_str(), value, key).AsExecutionResult();
9999
if (res.rows_affected) {
100100
transaction.Commit();
101101
request.SetResponseStatus(server::http::HttpStatus::kCreated);
102102
return std::string{value};
103103
}
104104

105-
auto trx_res = transaction.Execute(db::sql::kSelectValueByKey.data(), key).AsOptionalSingleField<std::string>();
105+
auto
106+
trx_res = transaction.Execute(db::sql::kSelectValueByKey.c_str(), key).AsOptionalSingleField<std::string>();
106107
if (!trx_res.has_value()) {
107108
request.SetResponseStatus(server::http::HttpStatus::kNotFound);
108109
return {};
@@ -118,7 +119,7 @@ class KeyValue final : public server::handlers::HttpHandlerBase {
118119
}
119120

120121
std::string DeleteValue(std::string_view key) const {
121-
const storages::sqlite::Query delete_value{db::sql::kDeleteKeyValue.data()};
122+
const storages::sqlite::Query delete_value{db::sql::kDeleteKeyValue.c_str()};
122123

123124
auto res =
124125
sqlite_client_->Execute(storages::sqlite::OperationType::kReadWrite, delete_value, key).AsExecutionResult();

sqlite/src/storages/sqlite/savepoint.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include <userver/storages/sqlite/savepoint.hpp>
22

33
#include <userver/logging/log.hpp>
4+
#include <userver/utils/string_literal.hpp>
45

56
#include <userver/storages/sqlite/impl/connection.hpp>
67
#include <userver/storages/sqlite/infra/connection_ptr.hpp>
@@ -11,12 +12,12 @@ namespace storages::sqlite {
1112

1213
namespace {
1314

14-
constexpr std::string_view kStatementPrepeareString = "SELECT quote(?)";
15+
constexpr utils::StringLiteral kStatementPrepeareString = "SELECT quote(?)";
1516

1617
} // namespace
1718

1819
std::string Savepoint::PrepareString(const std::string& str) {
19-
auto params_binder = impl::BindHelper::UpdateParamsBindings(kStatementPrepeareString.data(), *connection_, str);
20+
auto params_binder = impl::BindHelper::UpdateParamsBindings(kStatementPrepeareString.c_str(), *connection_, str);
2021
return DoExecute(params_binder).AsSingleField<std::string>();
2122
}
2223

universal/src/http/url.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ std::optional<std::string> MakeUrlWithPathArgs(std::string_view path_template, c
255255
if (key.empty()) {
256256
return std::nullopt;
257257
}
258-
fmt_args.push_back(fmt::arg(key.data(), UrlEncode(value)));
258+
fmt_args.push_back(fmt::arg(key.c_str(), UrlEncode(value)));
259259
}
260260

261261
try {

ydb/src/ydb/table.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,7 @@ Transaction TableClient::Begin(utils::StringLiteral transaction_name, Transactio
346346
}
347347

348348
Transaction TableClient::Begin(utils::StringLiteral transaction_name, OperationSettings settings) {
349-
return Begin(DynamicTransactionName{transaction_name.data()}, std::move(settings));
349+
return Begin(DynamicTransactionName{transaction_name.c_str()}, std::move(settings));
350350
}
351351

352352
Transaction TableClient::Begin(DynamicTransactionName transaction_name, OperationSettings settings) {
@@ -486,7 +486,7 @@ ExecuteResponse TableClient::ExecuteQuery(
486486
}
487487

488488
void TableClient::RetryTx(utils::StringLiteral transaction_name, RetryTxSettings retry_settings, RetryTxFunction fn) {
489-
RetryTx(DynamicTransactionName{transaction_name.data()}, std::move(retry_settings), std::move(fn));
489+
RetryTx(DynamicTransactionName{transaction_name.c_str()}, std::move(retry_settings), std::move(fn));
490490
}
491491

492492
void TableClient::RetryTx(DynamicTransactionName transaction_name, RetryTxSettings retry_settings, RetryTxFunction fn) {

0 commit comments

Comments
 (0)