51 lines
1.3 KiB
TypeScript
51 lines
1.3 KiB
TypeScript
import mysql from "mysql2/promise";
|
|
import { env } from "../fixtures/env.js";
|
|
import { sleep, waitForTcpPort } from "./wait-for.js";
|
|
|
|
async function main() {
|
|
await waitForTcpPort(env.db.host, env.db.port, 120_000);
|
|
|
|
let connection: mysql.Connection | undefined;
|
|
let lastError: unknown;
|
|
|
|
for (let attempt = 1; attempt <= 30; attempt += 1) {
|
|
try {
|
|
connection = await mysql.createConnection({
|
|
host: env.db.host,
|
|
port: env.db.port,
|
|
user: env.db.user,
|
|
password: env.db.password,
|
|
multipleStatements: false
|
|
});
|
|
break;
|
|
} catch (error) {
|
|
lastError = error;
|
|
await sleep(2000);
|
|
}
|
|
}
|
|
|
|
if (!connection) {
|
|
throw new Error(
|
|
`failed to connect to MySQL: ${
|
|
lastError instanceof Error ? lastError.message : String(lastError)
|
|
}`
|
|
);
|
|
}
|
|
|
|
try {
|
|
await connection.query(`DROP DATABASE IF EXISTS \`${env.db.database}\``);
|
|
await connection.query(
|
|
`CREATE DATABASE \`${env.db.database}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci`
|
|
);
|
|
console.log(`[e2e] reset database ${env.db.database}`);
|
|
} finally {
|
|
await connection.end();
|
|
}
|
|
}
|
|
|
|
main().catch((error: unknown) => {
|
|
console.error("[e2e] failed to reset database");
|
|
console.error(error instanceof Error ? error.message : String(error));
|
|
process.exit(1);
|
|
});
|