@dbnx/mysql
Version:
A powerful and enhanced ORM library for MySQL, offering query execution, model creation, and full relational management.
53 lines (52 loc) • 1.78 kB
JavaScript
import { GlobalConfig } from "./config.js";
import { Query } from "./query.js";
import { dbnxCondition, parseMySQLUrl } from "../utils/index.js";
import { Model } from "./model.js";
export class DBnxHandler extends Query {
#dbConfig = null;
constructor(db, dbConfig) {
super(db);
this.#dbConfig = dbConfig;
}
get getConfig() {
let option;
if (this.db.pool) {
option = (this.db.pool?.pool.config).connectionConfig;
}
else if (this.db.connection) {
option = this.db.connection.config;
}
if (option) {
return option;
}
if (typeof this.#dbConfig == "string") {
return parseMySQLUrl(this.#dbConfig);
}
return this.#dbConfig;
}
define(modelName, attributes, options) {
const model = class extends Model {
};
Object.defineProperty(model, "name", { value: modelName });
model.init(modelName, attributes, this, options);
return model;
}
async close() {
if (this.db.pool) {
GlobalConfig.logger_function("⏳ Closing connection pool...");
await this.db.pool.end();
GlobalConfig.logger_function("✅ Connection pool closed successfully.");
}
else if (this.db.connection) {
GlobalConfig.logger_function("⏳ Closing database connection...");
await this.db.connection.end();
GlobalConfig.logger_function("✅ Database connection closed successfully.");
}
else {
GlobalConfig.logger_function("⚠️ No active connection or pool to close.");
}
}
condition(filters, joinBy = "AND") {
return dbnxCondition(filters, joinBy);
}
}