Serenity Operating System
at master 47 lines 1.2 kB view raw
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}