Serenity Operating System
1/*
2 * Copyright (c) 2022, Jan de Visser <jan@de-visser.net>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#include <AK/StringBuilder.h>
8#include <LibSQL/Result.h>
9
10namespace SQL {
11
12DeprecatedString Result::error_string() const
13{
14 VERIFY(is_error());
15
16 StringView error_code;
17 StringView error_description;
18
19 switch (m_error) {
20#undef __ENUMERATE_SQL_ERROR
21#define __ENUMERATE_SQL_ERROR(error, description) \
22 case SQLErrorCode::error: \
23 error_code = #error##sv; \
24 error_description = description##sv; \
25 break;
26 ENUMERATE_SQL_ERRORS(__ENUMERATE_SQL_ERROR)
27#undef __ENUMERATE_SQL_ERROR
28 default:
29 VERIFY_NOT_REACHED();
30 }
31
32 StringBuilder builder;
33 builder.appendff("{}: ", error_code);
34
35 if (m_error_message.has_value()) {
36 if (error_description.find("{}"sv).has_value())
37 builder.appendff(error_description, *m_error_message);
38 else
39 builder.appendff("{}: {}", error_description, *m_error_message);
40 } else {
41 builder.append(error_description);
42 }
43
44 return builder.to_deprecated_string();
45}
46
47}