多维表格
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

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 };