Sindbad~EG File Manager
"use strict";
const moment = require("moment");
module.exports = (BaseTypes) => {
const warn = BaseTypes.ABSTRACT.warn.bind(void 0, "https://msdn.microsoft.com/en-us/library/ms187752%28v=sql.110%29.aspx");
function removeUnsupportedIntegerOptions(dataType) {
if (dataType._length || dataType.options.length || dataType._unsigned || dataType._zerofill) {
warn(`MSSQL does not support '${dataType.key}' with options. Plain '${dataType.key}' will be used instead.`);
dataType._length = void 0;
dataType.options.length = void 0;
dataType._unsigned = void 0;
dataType._zerofill = void 0;
}
}
BaseTypes.DATE.types.mssql = [43];
BaseTypes.STRING.types.mssql = [231, 173];
BaseTypes.CHAR.types.mssql = [175];
BaseTypes.TEXT.types.mssql = false;
BaseTypes.TINYINT.types.mssql = [30];
BaseTypes.SMALLINT.types.mssql = [34];
BaseTypes.MEDIUMINT.types.mssql = false;
BaseTypes.INTEGER.types.mssql = [38];
BaseTypes.BIGINT.types.mssql = false;
BaseTypes.FLOAT.types.mssql = [109];
BaseTypes.TIME.types.mssql = [41];
BaseTypes.DATEONLY.types.mssql = [40];
BaseTypes.BOOLEAN.types.mssql = [104];
BaseTypes.BLOB.types.mssql = [165];
BaseTypes.DECIMAL.types.mssql = [106];
BaseTypes.UUID.types.mssql = false;
BaseTypes.ENUM.types.mssql = false;
BaseTypes.REAL.types.mssql = [109];
BaseTypes.DOUBLE.types.mssql = [109];
BaseTypes.GEOMETRY.types.mssql = false;
class BLOB extends BaseTypes.BLOB {
toSql() {
if (this._length) {
if (this._length.toLowerCase() === "tiny") {
warn("MSSQL does not support BLOB with the `length` = `tiny` option. `VARBINARY(256)` will be used instead.");
return "VARBINARY(256)";
}
warn("MSSQL does not support BLOB with the `length` option. `VARBINARY(MAX)` will be used instead.");
}
return "VARBINARY(MAX)";
}
_hexify(hex) {
return `0x${hex}`;
}
}
class STRING extends BaseTypes.STRING {
toSql() {
if (!this._binary) {
return `NVARCHAR(${this._length})`;
}
return `BINARY(${this._length})`;
}
_stringify(value, options) {
if (this._binary) {
return BLOB.prototype._stringify(value);
}
return options.escape(value);
}
_bindParam(value, options) {
return options.bindParam(this._binary ? Buffer.from(value) : value);
}
}
STRING.prototype.escape = false;
class TEXT extends BaseTypes.TEXT {
toSql() {
if (this._length) {
if (this._length.toLowerCase() === "tiny") {
warn("MSSQL does not support TEXT with the `length` = `tiny` option. `NVARCHAR(256)` will be used instead.");
return "NVARCHAR(256)";
}
warn("MSSQL does not support TEXT with the `length` option. `NVARCHAR(MAX)` will be used instead.");
}
return "NVARCHAR(MAX)";
}
}
class BOOLEAN extends BaseTypes.BOOLEAN {
toSql() {
return "BIT";
}
}
class UUID extends BaseTypes.UUID {
toSql() {
return "CHAR(36)";
}
}
class NOW extends BaseTypes.NOW {
toSql() {
return "GETDATE()";
}
}
class DATE extends BaseTypes.DATE {
toSql() {
return "DATETIMEOFFSET";
}
}
class DATEONLY extends BaseTypes.DATEONLY {
static parse(value) {
return moment(value).format("YYYY-MM-DD");
}
}
class INTEGER extends BaseTypes.INTEGER {
constructor(length) {
super(length);
removeUnsupportedIntegerOptions(this);
}
}
class TINYINT extends BaseTypes.TINYINT {
constructor(length) {
super(length);
removeUnsupportedIntegerOptions(this);
}
}
class SMALLINT extends BaseTypes.SMALLINT {
constructor(length) {
super(length);
removeUnsupportedIntegerOptions(this);
}
}
class BIGINT extends BaseTypes.BIGINT {
constructor(length) {
super(length);
removeUnsupportedIntegerOptions(this);
}
}
class REAL extends BaseTypes.REAL {
constructor(length, decimals) {
super(length, decimals);
if (this._length || this.options.length || this._unsigned || this._zerofill) {
warn("MSSQL does not support REAL with options. Plain `REAL` will be used instead.");
this._length = void 0;
this.options.length = void 0;
this._unsigned = void 0;
this._zerofill = void 0;
}
}
}
class FLOAT extends BaseTypes.FLOAT {
constructor(length, decimals) {
super(length, decimals);
if (this._decimals) {
warn("MSSQL does not support Float with decimals. Plain `FLOAT` will be used instead.");
this._length = void 0;
this.options.length = void 0;
}
if (this._unsigned) {
warn("MSSQL does not support Float unsigned. `UNSIGNED` was removed.");
this._unsigned = void 0;
}
if (this._zerofill) {
warn("MSSQL does not support Float zerofill. `ZEROFILL` was removed.");
this._zerofill = void 0;
}
}
}
class ENUM extends BaseTypes.ENUM {
toSql() {
return "VARCHAR(255)";
}
}
return {
BLOB,
BOOLEAN,
ENUM,
STRING,
UUID,
DATE,
DATEONLY,
NOW,
TINYINT,
SMALLINT,
INTEGER,
BIGINT,
REAL,
FLOAT,
TEXT
};
};
//# sourceMappingURL=data-types.js.map
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists