@coko/server
Version:
Reusable server for use by Coko's projects
47 lines • 1.5 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const db_1 = __importDefault(require("./db"));
const config_1 = __importDefault(require("../configManager/config"));
const env_1 = require("../utils/env");
const nodeEnv = (0, env_1.env)('NODE_ENV');
class DbTestUtils {
static checkEnv() {
if (nodeEnv !== 'test') {
throw new Error('DbTestUtils should only be used in test environments!');
}
}
static async dropAllTables() {
DbTestUtils.checkEnv();
await db_1.default.raw(`
DROP SCHEMA IF EXISTS public CASCADE;
CREATE SCHEMA public;
GRANT ALL ON SCHEMA public TO "${config_1.default.get('db.user')}";
GRANT ALL ON SCHEMA public TO public;
`);
}
static async clearDb() {
DbTestUtils.checkEnv();
await db_1.default.raw(`
DO
$$
DECLARE
tabname text;
BEGIN
FOR tabname IN
SELECT tablename
FROM pg_tables
WHERE schemaname = 'public'
AND tablename NOT IN ('migrations', 'coko_server_meta')
LOOP
EXECUTE format('TRUNCATE TABLE %I.%I RESTART IDENTITY CASCADE;', 'public', tabname);
END LOOP;
END;
$$;
`);
}
}
exports.default = DbTestUtils;
//# sourceMappingURL=DbTestUtils.js.map