// @ts-check const fs = require("fs"); const path = require("path"); require("dotenv").config({ path: path.resolve(__dirname, "../.env"), }); const grabDbSSL = require("../package-shared/utils/backend/grabDbSSL"); const mysql = require("serverless-mysql"); const connection = mysql({ config: { host: process.env.DSQL_DB_HOST, user: process.env.DSQL_DB_USERNAME, password: process.env.DSQL_DB_PASSWORD, database: process.env.DSQL_DB_NAME, charset: "utf8mb4", ssl: grabDbSSL(), }, }); const tableIndex = process.argv.findIndex((str) => str.match(/--table|-t/)); const table = tableIndex >= 0 ? process.argv[tableIndex + 1] : null; if (!table) { console.log( "Please add a table flag to the arguments: Eg. '--talbe '" ); process.exit(); } connection .query("SHOW COLUMNS FROM" + " " + table) .then((result) => { let typedefStart = `/**\n * @typedef {object} MYSQL_${table}_table_def\n`; let typedefMid = ""; let typedefEnd = ` */`; console.log("Result =>", result); result.forEach((/** @type {any} */ res) => { const parsedResult = JSON.parse(JSON.stringify(res)); const { Field, Type, Null, Key, Default, Extra } = parsedResult; const type = (() => { if (Type?.match(/int/i)) return "number"; return "string"; })(); typedefMid += ` * @property {${type}} [${Field}] - NULL=\`${Null}\` Key=\`${Key}\` Default=\`${Default}\` Extra=\`${Extra}\`\n`; }); console.log(typedefStart + typedefMid + typedefEnd); process.exit(); }) .catch((error) => { console.log(error.message); }) .finally(() => { /** ********************* Clean up */ connection.end(); });