Type.h 1.8 KB

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