UNPKG

json-api-nestjs

Version:
57 lines 2.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.sharedConnect = sharedConnect; exports.initMikroOrm = initMikroOrm; const core_1 = require("@mikro-orm/core"); const postgresql_1 = require("@mikro-orm/postgresql"); const sql_highlighter_1 = require("@mikro-orm/sql-highlighter"); const knex_1 = require("knex"); const ClientPgLite = require("knex-pglite"); const entities_1 = require("../entities"); let knexInst; async function sharedConnect() { // @ts-ignore // return globalThis.pgLite; if (knexInst) { return knexInst; } const pgLite = await Promise.all([ Promise.resolve().then(() => require('@electric-sql/pglite')), Promise.resolve().then(() => require('@electric-sql/pglite/contrib/uuid_ossp')), ]).then(([{ PGlite }, { uuid_ossp }]) => new PGlite({ extensions: { uuid_ossp }, })); knexInst = (0, knex_1.default)({ // @ts-ignore client: ClientPgLite, dialect: 'postgres', // @ts-ignore connection: { pglite: pgLite }, }); return knexInst; } async function initMikroOrm(knex, testDbName) { const result = await knex.raw(`select 1 from pg_database where datname = '${testDbName}'`); if (result['rows'].length === 0) { await knex.raw(`create database ??`, [testDbName]); } const orm = await core_1.MikroORM.init({ highlighter: new sql_highlighter_1.SqlHighlighter(), driver: postgresql_1.PostgreSqlDriver, dbName: testDbName, driverOptions: knexInst, entities: [entities_1.Users, entities_1.UserGroups, entities_1.Roles, entities_1.Comments, entities_1.Addresses, entities_1.Notes], allowGlobalContext: true, schema: 'public', debug: process.env['DB_LOGGING'] !== '0' ? ['query', 'query-params'] : false, }); if (result['rows'].length === 0) { const sql = await orm.getSchemaGenerator().getCreateSchemaSQL(); const statements = sql.split(';').filter((s) => s.trim().length > 0); // Разбиваем на отдельные команды for (const statement of statements) { await orm.em.execute(statement); } } return orm; } //# sourceMappingURL=init-db.js.map