index.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import { TypeHint } from "@aws-sdk/client-rds-data";
  2. function getValueFromDataApi(field) {
  3. if (field.stringValue !== void 0) {
  4. return field.stringValue;
  5. } else if (field.booleanValue !== void 0) {
  6. return field.booleanValue;
  7. } else if (field.doubleValue !== void 0) {
  8. return field.doubleValue;
  9. } else if (field.isNull !== void 0) {
  10. return null;
  11. } else if (field.longValue !== void 0) {
  12. return field.longValue;
  13. } else if (field.blobValue !== void 0) {
  14. return field.blobValue;
  15. } else if (field.arrayValue !== void 0) {
  16. if (field.arrayValue.stringValues !== void 0) {
  17. return field.arrayValue.stringValues;
  18. }
  19. if (field.arrayValue.longValues !== void 0) {
  20. return field.arrayValue.longValues;
  21. }
  22. if (field.arrayValue.doubleValues !== void 0) {
  23. return field.arrayValue.doubleValues;
  24. }
  25. if (field.arrayValue.booleanValues !== void 0) {
  26. return field.arrayValue.booleanValues;
  27. }
  28. if (field.arrayValue.arrayValues !== void 0) {
  29. return field.arrayValue.arrayValues;
  30. }
  31. throw new Error("Unknown array type");
  32. } else {
  33. throw new Error("Unknown type");
  34. }
  35. }
  36. function typingsToAwsTypeHint(typings) {
  37. if (typings === "date") {
  38. return TypeHint.DATE;
  39. } else if (typings === "decimal") {
  40. return TypeHint.DECIMAL;
  41. } else if (typings === "json") {
  42. return TypeHint.JSON;
  43. } else if (typings === "time") {
  44. return TypeHint.TIME;
  45. } else if (typings === "timestamp") {
  46. return TypeHint.TIMESTAMP;
  47. } else if (typings === "uuid") {
  48. return TypeHint.UUID;
  49. } else {
  50. return void 0;
  51. }
  52. }
  53. function toValueParam(value, typings) {
  54. const response = {
  55. value: {},
  56. typeHint: typingsToAwsTypeHint(typings)
  57. };
  58. if (value === null) {
  59. response.value = { isNull: true };
  60. } else if (typeof value === "string") {
  61. switch (response.typeHint) {
  62. case TypeHint.DATE: {
  63. response.value = { stringValue: value.split("T")[0] };
  64. break;
  65. }
  66. case TypeHint.TIMESTAMP: {
  67. response.value = { stringValue: value.replace("T", " ").replace("Z", "") };
  68. break;
  69. }
  70. default: {
  71. response.value = { stringValue: value };
  72. break;
  73. }
  74. }
  75. } else if (typeof value === "number" && Number.isInteger(value)) {
  76. response.value = { longValue: value };
  77. } else if (typeof value === "number" && !Number.isInteger(value)) {
  78. response.value = { doubleValue: value };
  79. } else if (typeof value === "boolean") {
  80. response.value = { booleanValue: value };
  81. } else if (value instanceof Date) {
  82. response.value = { stringValue: value.toISOString().replace("T", " ").replace("Z", "") };
  83. } else {
  84. throw new Error(`Unknown type for ${value}`);
  85. }
  86. return response;
  87. }
  88. export {
  89. getValueFromDataApi,
  90. toValueParam,
  91. typingsToAwsTypeHint
  92. };
  93. //# sourceMappingURL=index.js.map