87 lines
1.8 KiB
TypeScript
87 lines
1.8 KiB
TypeScript
|
import execute from "../../docker/setup/(utils)/execute";
|
||
|
import mysql, { ServerlessMysql } from "serverless-mysql";
|
||
|
import initSQLHandleRootUsers from "./(functions)/handle-root-user";
|
||
|
import initSQLCheckEnvVariables from "./(functions)/check-env-variables";
|
||
|
import initSQLCreateDatabases from "./(functions)/create-databases";
|
||
|
import initSQLCheckDsqlUsers from "./(functions)/check-dsql-users";
|
||
|
|
||
|
console.log(`Initializing Database ...`);
|
||
|
console.log(`DB HOST => ${process.env.DSQL_DB_HOST}`);
|
||
|
|
||
|
/**
|
||
|
* # Declare Global Variables
|
||
|
*/
|
||
|
declare global {
|
||
|
var INIT_SQL_ROOT_DB_CONN: ServerlessMysql;
|
||
|
var INIT_SQL_MAIN_DB_CONN: ServerlessMysql;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* # Ping Database Function
|
||
|
*/
|
||
|
function pingDb() {
|
||
|
return execute(
|
||
|
`mysqladmin ping -h"${process.env.DSQL_DB_HOST}" -u"root" -p"${process.env.DSQL_MARIADB_ROOT_PASSWORD}" --silent`
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* # Check MariaDB Availability
|
||
|
*/
|
||
|
let tries = 0;
|
||
|
|
||
|
while (true) {
|
||
|
if (tries > 10) {
|
||
|
process.exit(2);
|
||
|
}
|
||
|
|
||
|
const checkDb = pingDb();
|
||
|
|
||
|
if (checkDb?.match(/alive/)) break;
|
||
|
|
||
|
tries++;
|
||
|
|
||
|
await Bun.sleep(2000);
|
||
|
}
|
||
|
|
||
|
console.log("MariaDB is ready!");
|
||
|
|
||
|
/**
|
||
|
* # Check Environment Variables
|
||
|
*/
|
||
|
await initSQLCheckEnvVariables();
|
||
|
|
||
|
/**
|
||
|
* # Handle Root Users
|
||
|
*/
|
||
|
global.INIT_SQL_ROOT_DB_CONN = mysql({
|
||
|
config: {
|
||
|
host: process.env.DSQL_DB_HOST,
|
||
|
user: "root",
|
||
|
password: process.env.DSQL_MARIADB_ROOT_PASSWORD,
|
||
|
charset: "utf8mb4",
|
||
|
},
|
||
|
});
|
||
|
|
||
|
await initSQLHandleRootUsers();
|
||
|
|
||
|
/**
|
||
|
* # Handle Operations with New Root User
|
||
|
*/
|
||
|
global.INIT_SQL_MAIN_DB_CONN = mysql({
|
||
|
config: {
|
||
|
host: process.env.DSQL_DB_HOST,
|
||
|
user: "root",
|
||
|
password: process.env.DSQL_DB_PASSWORD,
|
||
|
charset: "utf8mb4",
|
||
|
},
|
||
|
});
|
||
|
|
||
|
await initSQLCreateDatabases();
|
||
|
await initSQLCheckDsqlUsers();
|
||
|
|
||
|
/**
|
||
|
* # All Done. Exit With Success.
|
||
|
*/
|
||
|
process.exit(0);
|