Type.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /*
  2. * Copyright (c) 2021, Jan de Visser <jan@de-visser.net>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/DeprecatedString.h>
  8. #include <AK/HashMap.h>
  9. #include <AK/StringView.h>
  10. namespace SQL {
  11. // Adding to this list is fine, but changing the order of any value here will result in LibSQL
  12. // becoming unable to read existing .db files. If the order must absolutely be changed, be sure
  13. // to bump Heap::current_version.
  14. #define ENUMERATE_SQL_TYPES(S) \
  15. S("null", Null) \
  16. S("text", Text) \
  17. S("int", Integer) \
  18. S("float", Float) \
  19. S("bool", Boolean) \
  20. S("tuple", Tuple)
  21. enum class SQLType {
  22. #undef __ENUMERATE_SQL_TYPE
  23. #define __ENUMERATE_SQL_TYPE(name, type) type,
  24. ENUMERATE_SQL_TYPES(__ENUMERATE_SQL_TYPE)
  25. #undef __ENUMERATE_SQL_TYPE
  26. };
  27. constexpr StringView SQLType_name(SQLType t)
  28. {
  29. switch (t) {
  30. #undef __ENUMERATE_SQL_TYPE
  31. #define __ENUMERATE_SQL_TYPE(name, type) \
  32. case SQLType::type: \
  33. return name##sv;
  34. ENUMERATE_SQL_TYPES(__ENUMERATE_SQL_TYPE)
  35. #undef __ENUMERATE_SQL_TYPE
  36. default:
  37. VERIFY_NOT_REACHED();
  38. }
  39. }
  40. #define ENUMERATE_ORDERS(S) \
  41. S(Ascending) \
  42. S(Descending)
  43. enum class Order {
  44. #undef __ENUMERATE_ORDER
  45. #define __ENUMERATE_ORDER(order) order,
  46. ENUMERATE_ORDERS(__ENUMERATE_ORDER)
  47. #undef __ENUMERATE_ORDER
  48. };
  49. constexpr StringView Order_name(Order order)
  50. {
  51. switch (order) {
  52. #undef __ENUMERATE_ORDER
  53. #define __ENUMERATE_ORDER(order) \
  54. case Order::order: \
  55. return #order##sv;
  56. ENUMERATE_ORDERS(__ENUMERATE_ORDER)
  57. #undef __ENUMERATE_ORDER
  58. default:
  59. VERIFY_NOT_REACHED();
  60. }
  61. }
  62. enum class Nulls {
  63. First,
  64. Last,
  65. };
  66. using ConnectionID = u64;
  67. using StatementID = u64;
  68. using ExecutionID = u64;
  69. }