varbinary.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { entityKind } from "../../entity.js";
  2. import { getColumnNameAndConfig } from "../../utils.js";
  3. import { MySqlColumn, MySqlColumnBuilder } from "./common.js";
  4. class MySqlVarBinaryBuilder extends MySqlColumnBuilder {
  5. static [entityKind] = "MySqlVarBinaryBuilder";
  6. /** @internal */
  7. constructor(name, config) {
  8. super(name, "string", "MySqlVarBinary");
  9. this.config.length = config?.length;
  10. }
  11. /** @internal */
  12. build(table) {
  13. return new MySqlVarBinary(
  14. table,
  15. this.config
  16. );
  17. }
  18. }
  19. class MySqlVarBinary extends MySqlColumn {
  20. static [entityKind] = "MySqlVarBinary";
  21. length = this.config.length;
  22. mapFromDriverValue(value) {
  23. if (typeof value === "string") return value;
  24. if (Buffer.isBuffer(value)) return value.toString();
  25. const str = [];
  26. for (const v of value) {
  27. str.push(v === 49 ? "1" : "0");
  28. }
  29. return str.join("");
  30. }
  31. getSQLType() {
  32. return this.length === void 0 ? `varbinary` : `varbinary(${this.length})`;
  33. }
  34. }
  35. function varbinary(a, b) {
  36. const { name, config } = getColumnNameAndConfig(a, b);
  37. return new MySqlVarBinaryBuilder(name, config);
  38. }
  39. export {
  40. MySqlVarBinary,
  41. MySqlVarBinaryBuilder,
  42. varbinary
  43. };
  44. //# sourceMappingURL=varbinary.js.map