const { parentPort, workerData } = require("worker_threads");
const Database = require("../database");
const path = require("path");

/**
 * Send message to parent process for logging
 * since worker_thread does not have access to stdout, this is used
 * instead of console.log()
 * @param {any} any The message to log
 */
const log = function (any) {
    if (parentPort) {
        parentPort.postMessage(any);
    }
};

/**
 * Exit the worker process
 * @param {number} error The status code to exit
 */
const exit = function (error) {
    if (error && error !== 0) {
        process.exit(error);
    } else {
        if (parentPort) {
            parentPort.postMessage("done");
        } else {
            process.exit(0);
        }
    }
};

/** Connects to the database */
const connectDb = async function () {
    const dbPath = path.join(
        process.env.DATA_DIR || workerData["data-dir"] || "./data/"
    );

    Database.init({
        "data-dir": dbPath,
    });

    await Database.connect();
};

module.exports = {
    log,
    exit,
    connectDb,
};