Compare commits

...

2 Commits

Author SHA1 Message Date
Ryan Laurie
d8a22bca3b stupid linter 2025-04-01 13:59:57 -06:00
Ryan Laurie
02e4c5a352 setup multiple posgres dbs 2025-04-01 13:54:39 -06:00
2 changed files with 83 additions and 11 deletions

View File

@@ -14,29 +14,59 @@ import { createQuestion } from "./api";
** QA DATABASES **
******************************************/
export function addMongoDatabase(name = "QA Mongo") {
export function addMongoDatabase(displayName = "QA Mongo") {
// https://hub.docker.com/layers/metabase/qa-databases/mongo-sample-4.4/images/sha256-8cdeaacf28c6f0a6f9fde42ce004fcc90200d706ac6afa996bdd40db78ec0305
addQADatabase("mongo", name, QA_MONGO_PORT);
addQADatabase({
engine: "mongo",
displayName,
port: QA_MONGO_PORT,
});
}
export function addPostgresDatabase(name = "QA Postgres12", writable = false) {
export function addPostgresDatabase(
displayName = "QA Postgres12",
writable = false,
dbName = "postgres",
) {
// https://hub.docker.com/layers/metabase/qa-databases/postgres-sample-12/images/sha256-80bbef27dc52552d6dc64b52796ba356d7541e7bba172740336d7b8a64859cf8
addQADatabase("postgres", name, QA_POSTGRES_PORT, writable);
addQADatabase({
engine: "postgres",
displayName,
dbName,
port: QA_POSTGRES_PORT,
enable_actions: writable,
});
}
export function addMySQLDatabase(name = "QA MySQL8", writable = false) {
export function addMySQLDatabase({
displayName = "QA MySQL8",
writable = false,
}) {
// https://hub.docker.com/layers/metabase/qa-databases/mysql-sample-8/images/sha256-df67db50379ec59ac3a437b5205871f85ab519ce8d2cdc526e9313354d00f9d4
addQADatabase("mysql", name, QA_MYSQL_PORT, writable);
addQADatabase({
engine: "mysql",
displayName: name,
port: QA_MYSQL_PORT,
enable_actions: writable,
});
}
function addQADatabase(engine, db_display_name, port, enable_actions = false) {
function addQADatabase({
engine,
displayName,
dbName,
port,
enable_actions = false,
}) {
const PASS_KEY = engine === "mongo" ? "pass" : "password";
const AUTH_DB = engine === "mongo" ? "admin" : null;
const OPTIONS = engine === "mysql" ? "allowPublicKeyRetrieval=true" : null;
const db_name = enable_actions
? WRITABLE_DB_CONFIG[engine].connection.database
: QA_DB_CREDENTIALS.database;
const db_name =
dbName ??
(enable_actions
? WRITABLE_DB_CONFIG[engine].connection.database
: QA_DB_CREDENTIALS.database);
const credentials = enable_actions
? WRITABLE_DB_CONFIG[engine].connection
@@ -45,7 +75,7 @@ function addQADatabase(engine, db_display_name, port, enable_actions = false) {
cy.log(`**-- Adding ${engine.toUpperCase()} DB --**`);
cy.request("POST", "/api/database", {
engine: engine,
name: db_display_name,
name: displayName,
details: {
dbname: db_name,
host: credentials.host,

View File

@@ -0,0 +1,42 @@
const { H } = cy;
describe("admin > database > database routing", { tags: ["@external"] }, () => {
before(() => {
H.queryWritableDB(
"SELECT datname from pg_database WHERE datname = 'postgres_two'",
).then((res: { rows: any[] }) => {
if (res.rows.length === 0) {
H.queryWritableDB("CREATE DATABASE postgres_two IF NOT EXISTS;");
}
});
H.queryWritableDB(
"SELECT datname from pg_database WHERE datname = 'postgres_three'",
).then((res) => {
if (res.rows.length === 0) {
H.queryWritableDB("CREATE DATABASE postgres_three IF NOT EXISTS;");
}
});
// probably add a table or two here
H.restore("postgres-writable");
cy.signInAsAdmin();
H.addPostgresDatabase("Postgres Two", false, "postgres_two;");
H.addPostgresDatabase("Postgres Three", false, "postgres_three;");
H.snapshot("db-routing-3-dbs");
});
beforeEach(() => {
H.restore("db-routing-3-dbs" as any);
cy.signInAsAdmin();
});
it("should connect multiple DBs", () => {
cy.visit("/admin/databases");
cy.findByTestId("database-list").within(() => {
cy.findByText("Postgres Two");
cy.findByText("Postgres Three");
});
});
});