mirror of https://github.com/nocodb/nocodb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.1 KiB
72 lines
2.1 KiB
import { NcContext } from '.'; |
|
const mysql = require('mysql2'); |
|
const { Client } = require('pg'); |
|
|
|
import { AsyncDatabase } from 'promised-sqlite3'; |
|
|
|
const isMysql = (context: NcContext) => context.dbType === 'mysql'; |
|
|
|
const isSqlite = (context: NcContext) => context.dbType === 'sqlite'; |
|
|
|
const isPg = (context: NcContext) => context.dbType === 'pg'; |
|
|
|
const isEE = () => process.env.EE === 'true'; |
|
|
|
// run all the tests for PG; disable some tests for mysql, sqlite to reduce CI time |
|
// |
|
const enableQuickRun = () => (process.env.CI ? process.env.E2E_DB_TYPE : process.env.E2E_DEV_DB_TYPE) !== 'pg'; |
|
|
|
const pg_credentials = (context: NcContext) => ({ |
|
user: 'postgres', |
|
host: 'localhost', |
|
// todo: Hack to resolve issue with pg resetting |
|
database: `sakila${context.workerId}`, |
|
password: 'password', |
|
port: 5432, |
|
}); |
|
|
|
const pgExec = async (query: string, context: NcContext) => { |
|
// open pg client connection |
|
const client = new Client(pg_credentials(context)); |
|
await client.connect(); |
|
|
|
await client.query(query); |
|
await client.end(); |
|
}; |
|
|
|
const mysqlExec = async query => { |
|
// creates a new mysql connection |
|
const connection = mysql.createConnection({ |
|
host: 'localhost', |
|
user: 'root', |
|
password: 'password', |
|
database: `test_sakila_${process.env.TEST_PARALLEL_INDEX}`, |
|
}); |
|
// start connection to db |
|
connection.connect(); |
|
// exec query + disconnect to db as a Promise |
|
return new Promise((resolve, reject) => { |
|
connection.query(query, (error, results) => { |
|
if (error) reject(error); |
|
else { |
|
connection.end(); |
|
// console.log(results) |
|
return resolve(results); |
|
} |
|
}); |
|
}); |
|
}; |
|
|
|
async function sqliteExec(query) { |
|
try { |
|
const parallelIndex = process.env.TEST_PARALLEL_INDEX; |
|
const rootProjectDir = __dirname.replace('/tests/playwright/setup', ''); |
|
const sqliteDb = await AsyncDatabase.open(`${rootProjectDir}/packages/nocodb/test_sakila_${parallelIndex}.db`); |
|
await sqliteDb.run(query); |
|
await sqliteDb.close(); |
|
} catch (err) { |
|
console.error(err); |
|
} |
|
} |
|
|
|
export { sqliteExec, mysqlExec, isMysql, isSqlite, isPg, pgExec, isEE, enableQuickRun };
|
|
|