Files
directus/tests/setup/utils/await-connection.ts
2021-04-16 16:53:28 -04:00

37 lines
912 B
TypeScript

import { Knex } from 'knex';
import axios from 'axios';
export async function awaitDatabaseConnection(database: Knex, checkSQL: string, currentAttempt: number = 0) {
try {
await database.raw(checkSQL);
} catch {
if (currentAttempt === 10) {
throw new Error(`Couldn't connect to DB`);
}
return new Promise((resolve) => {
setTimeout(async () => {
await awaitDatabaseConnection(database, checkSQL, currentAttempt + 1);
resolve(null);
}, 5000);
});
}
}
export async function awaitDirectusConnection(port: number = 6100, currentAttempt: number = 0) {
try {
await axios.get(`http://localhost:${port}/server/ping`);
} catch {
if (currentAttempt === 10) {
throw new Error(`Couldn't connect to Directus`);
}
return new Promise((resolve) => {
setTimeout(async () => {
await awaitDirectusConnection(port, currentAttempt + 1);
resolve(null);
}, 5000);
});
}
}