Files
legolog/src/database/database.js
Ben f68e7df223 bro
Former-commit-id: ccc7bc8c7bf361055c0a021fdad567a1e62f3ed3
2022-02-08 18:01:10 +00:00

60 lines
1.7 KiB
JavaScript

const Logger = require('../logger.js');
const EntityFramework = require('./psql-entity-framework/entity-relationships.js');
const { Client } = require('pg');
class Database {
constructor() {
this.connection = null;
}
async connect(options) {
Logger.Info('Database Connecting...');
// review options
if (!options) {
options = {
user: process.env.DATABASE_USER,
host: process.env.DATABASE_HOST,
database: process.env.DATABASE_DB,
password: process.env.DATABASE_PASSWORD,
port: process.env.DATABASE_PORT
};
}
this.options = options;
this.connection = await this.connectToDatabase();
Logger.Info('Database Connected');
}
async connectToDatabase() {
const con = new Promise((resolve, reject) => {
const psqlClient = new Client(this.options);
psqlClient.connect();
psqlClient.query('SELECT NOW()', (err, res) => {
if (err) reject(err);
this.connection = psqlClient;
Logger.Database(`PSQL Time: ${res.rows[0].now}`);
Logger.Database(`Connected to ${this.options.host}`);
resolve(psqlClient);
});
});
await con;
this.ORM = new EntityFramework(this.connection);
return this.connection;
}
get getORM() {
return this.ORM;
}
}
module.exports = {
IDatabase: Database,
DataTypes: require('./psql-entity-framework/types.js'),
DataConstraints: require('./psql-entity-framework/relationships_constraints.js')
}