summaryrefslogtreecommitdiffstats
path: root/server/utils/knex/lib/dialects/mysql2/schema/mysql2-columncompiler.js
blob: d05a6bc8cd69f7ea820731989fa61b72fb6c0ace (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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;