datetime.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import { entityKind } from "../../entity.js";
  2. import { getColumnNameAndConfig } from "../../utils.js";
  3. import { MySqlColumn, MySqlColumnBuilder } from "./common.js";
  4. class MySqlDateTimeBuilder extends MySqlColumnBuilder {
  5. static [entityKind] = "MySqlDateTimeBuilder";
  6. constructor(name, config) {
  7. super(name, "date", "MySqlDateTime");
  8. this.config.fsp = config?.fsp;
  9. }
  10. /** @internal */
  11. build(table) {
  12. return new MySqlDateTime(
  13. table,
  14. this.config
  15. );
  16. }
  17. }
  18. class MySqlDateTime extends MySqlColumn {
  19. static [entityKind] = "MySqlDateTime";
  20. fsp;
  21. constructor(table, config) {
  22. super(table, config);
  23. this.fsp = config.fsp;
  24. }
  25. getSQLType() {
  26. const precision = this.fsp === void 0 ? "" : `(${this.fsp})`;
  27. return `datetime${precision}`;
  28. }
  29. mapToDriverValue(value) {
  30. return value.toISOString().replace("T", " ").replace("Z", "");
  31. }
  32. mapFromDriverValue(value) {
  33. return /* @__PURE__ */ new Date(value.replace(" ", "T") + "Z");
  34. }
  35. }
  36. class MySqlDateTimeStringBuilder extends MySqlColumnBuilder {
  37. static [entityKind] = "MySqlDateTimeStringBuilder";
  38. constructor(name, config) {
  39. super(name, "string", "MySqlDateTimeString");
  40. this.config.fsp = config?.fsp;
  41. }
  42. /** @internal */
  43. build(table) {
  44. return new MySqlDateTimeString(
  45. table,
  46. this.config
  47. );
  48. }
  49. }
  50. class MySqlDateTimeString extends MySqlColumn {
  51. static [entityKind] = "MySqlDateTimeString";
  52. fsp;
  53. constructor(table, config) {
  54. super(table, config);
  55. this.fsp = config.fsp;
  56. }
  57. getSQLType() {
  58. const precision = this.fsp === void 0 ? "" : `(${this.fsp})`;
  59. return `datetime${precision}`;
  60. }
  61. }
  62. function datetime(a, b) {
  63. const { name, config } = getColumnNameAndConfig(a, b);
  64. if (config?.mode === "string") {
  65. return new MySqlDateTimeStringBuilder(name, config);
  66. }
  67. return new MySqlDateTimeBuilder(name, config);
  68. }
  69. export {
  70. MySqlDateTime,
  71. MySqlDateTimeBuilder,
  72. MySqlDateTimeString,
  73. MySqlDateTimeStringBuilder,
  74. datetime
  75. };
  76. //# sourceMappingURL=datetime.js.map