Result.cpp 1.1 KB

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