summaryrefslogtreecommitdiffstats
path: root/server/utils/knex/lib
diff options
context:
space:
mode:
Diffstat (limited to 'server/utils/knex/lib')
-rw-r--r--server/utils/knex/lib/dialects/mysql2/schema/mysql2-columncompiler.js22
1 files changed, 22 insertions, 0 deletions
diff --git a/server/utils/knex/lib/dialects/mysql2/schema/mysql2-columncompiler.js b/server/utils/knex/lib/dialects/mysql2/schema/mysql2-columncompiler.js
new file mode 100644
index 0000000..d05a6bc
--- /dev/null
+++ b/server/utils/knex/lib/dialects/mysql2/schema/mysql2-columncompiler.js
@@ -0,0 +1,22 @@
+const ColumnCompilerMySQL = require("knex/lib/dialects/mysql/schema/mysql-columncompiler");
+const { formatDefault } = require("knex/lib/formatter/formatterUtils");
+const { log } = require("../../../../../../../src/util");
+
+class KumaColumnCompiler extends ColumnCompilerMySQL {
+ /**
+ * Override defaultTo method to handle default value for TEXT fields
+ * @param {any} value Value
+ * @returns {string|void} Default value (Don't understand why it can return void or string, but it's the original code, lol)
+ */
+ defaultTo(value) {
+ if (this.type === "text" && typeof value === "string") {
+ log.debug("defaultTo", `${this.args[0]}: ${this.type} ${value} ${typeof value}`);
+ // MySQL 8.0 is required and only if the value is written as an expression: https://dev.mysql.com/doc/refman/8.0/en/data-type-defaults.html
+ // MariaDB 10.2 is required: https://mariadb.com/kb/en/text/
+ return `default (${formatDefault(value, this.type, this.client)})`;
+ }
+ return super.defaultTo.apply(this, arguments);
+ }
+}
+
+module.exports = KumaColumnCompiler;