Sindbad~EG File Manager
"use strict";
module.exports = (BaseTypes) => {
const warn = BaseTypes.ABSTRACT.warn.bind(void 0, "https://www.sqlite.org/datatype3.html");
function removeUnsupportedIntegerOptions(dataType) {
if (dataType._zerofill || dataType._unsigned) {
warn(`SQLite does not support '${dataType.key}' with UNSIGNED or ZEROFILL. Plain '${dataType.key}' will be used instead.`);
dataType._unsigned = void 0;
dataType._zerofill = void 0;
}
}
BaseTypes.DATE.types.sqlite = ["DATETIME"];
BaseTypes.STRING.types.sqlite = ["VARCHAR", "VARCHAR BINARY"];
BaseTypes.CHAR.types.sqlite = ["CHAR", "CHAR BINARY"];
BaseTypes.TEXT.types.sqlite = ["TEXT"];
BaseTypes.TINYINT.types.sqlite = ["TINYINT"];
BaseTypes.SMALLINT.types.sqlite = ["SMALLINT"];
BaseTypes.MEDIUMINT.types.sqlite = ["MEDIUMINT"];
BaseTypes.INTEGER.types.sqlite = ["INTEGER"];
BaseTypes.BIGINT.types.sqlite = ["BIGINT"];
BaseTypes.FLOAT.types.sqlite = ["FLOAT"];
BaseTypes.TIME.types.sqlite = ["TIME"];
BaseTypes.DATEONLY.types.sqlite = ["DATE"];
BaseTypes.BOOLEAN.types.sqlite = ["TINYINT"];
BaseTypes.BLOB.types.sqlite = ["TINYBLOB", "BLOB", "LONGBLOB"];
BaseTypes.DECIMAL.types.sqlite = ["DECIMAL"];
BaseTypes.UUID.types.sqlite = ["UUID"];
BaseTypes.ENUM.types.sqlite = false;
BaseTypes.REAL.types.sqlite = ["REAL"];
BaseTypes.DOUBLE.types.sqlite = ["DOUBLE PRECISION"];
BaseTypes.GEOMETRY.types.sqlite = false;
BaseTypes.JSON.types.sqlite = ["JSON", "JSONB"];
class JSONTYPE extends BaseTypes.JSON {
static parse(data) {
return JSON.parse(data);
}
}
class DATE extends BaseTypes.DATE {
static parse(date, options) {
if (!date.includes("+")) {
return new Date(date + options.timezone);
}
return new Date(date);
}
}
class DATEONLY extends BaseTypes.DATEONLY {
static parse(date) {
return date;
}
}
class STRING extends BaseTypes.STRING {
toSql() {
if (this._binary) {
return `VARCHAR BINARY(${this._length})`;
}
return super.toSql(this);
}
}
class TEXT extends BaseTypes.TEXT {
toSql() {
if (this._length) {
warn("SQLite does not support TEXT with options. Plain `TEXT` will be used instead.");
this._length = void 0;
}
return "TEXT";
}
}
class CITEXT extends BaseTypes.CITEXT {
toSql() {
return "TEXT COLLATE NOCASE";
}
}
class CHAR extends BaseTypes.CHAR {
toSql() {
if (this._binary) {
return `CHAR BINARY(${this._length})`;
}
return super.toSql();
}
}
class NUMBER extends BaseTypes.NUMBER {
toSql() {
let result = this.key;
if (this._unsigned) {
result += " UNSIGNED";
}
if (this._zerofill) {
result += " ZEROFILL";
}
if (this._length) {
result += `(${this._length}`;
if (typeof this._decimals === "number") {
result += `,${this._decimals}`;
}
result += ")";
}
return result;
}
}
class TINYINT extends BaseTypes.TINYINT {
constructor(length) {
super(length);
removeUnsupportedIntegerOptions(this);
}
}
class SMALLINT extends BaseTypes.SMALLINT {
constructor(length) {
super(length);
removeUnsupportedIntegerOptions(this);
}
}
class MEDIUMINT extends BaseTypes.MEDIUMINT {
constructor(length) {
super(length);
removeUnsupportedIntegerOptions(this);
}
}
class INTEGER extends BaseTypes.INTEGER {
constructor(length) {
super(length);
removeUnsupportedIntegerOptions(this);
}
}
class BIGINT extends BaseTypes.BIGINT {
constructor(length) {
super(length);
removeUnsupportedIntegerOptions(this);
}
}
class FLOAT extends BaseTypes.FLOAT {
}
class DOUBLE extends BaseTypes.DOUBLE {
}
class REAL extends BaseTypes.REAL {
}
function parseFloating(value) {
if (typeof value !== "string") {
return value;
}
if (value === "NaN") {
return NaN;
}
if (value === "Infinity") {
return Infinity;
}
if (value === "-Infinity") {
return -Infinity;
}
}
for (const floating of [FLOAT, DOUBLE, REAL]) {
floating.parse = parseFloating;
}
for (const num of [FLOAT, DOUBLE, REAL, TINYINT, SMALLINT, MEDIUMINT, INTEGER, BIGINT]) {
num.prototype.toSql = NUMBER.prototype.toSql;
}
class ENUM extends BaseTypes.ENUM {
toSql() {
return "TEXT";
}
}
return {
DATE,
DATEONLY,
STRING,
CHAR,
NUMBER,
FLOAT,
REAL,
"DOUBLE PRECISION": DOUBLE,
TINYINT,
SMALLINT,
MEDIUMINT,
INTEGER,
BIGINT,
TEXT,
ENUM,
JSON: JSONTYPE,
CITEXT
};
};
//# sourceMappingURL=data-types.js.map
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists