redis: support readonly and database url

This commit is contained in:
Jan Prochazka
2022-03-27 18:34:22 +02:00
parent 11c82b1aac
commit 0e8166577f
4 changed files with 75 additions and 56 deletions

View File

@@ -80,16 +80,22 @@ function splitCommandLine(str) {
const driver = {
...driverBase,
analyserClass: Analyser,
async connect({ server, port, password, database }) {
async connect({ server, port, password, database, useDatabaseUrl, databaseUrl }) {
let db = 0;
if (_.isString(database) && database.startsWith('db')) db = parseInt(database.substring(2));
if (_.isNumber(database)) db = database;
const pool = new Redis({
host: server,
port,
password,
db,
});
let pool;
if (useDatabaseUrl) {
pool = new Redis(databaseUrl);
} else {
if (_.isString(database) && database.startsWith('db')) db = parseInt(database.substring(2));
if (_.isNumber(database)) db = database;
pool = new Redis({
host: server,
port,
password,
db,
});
}
return pool;
},
// @ts-ignore

View File

@@ -26,6 +26,7 @@ const driver = {
databaseEngineTypes: ['keyvalue'],
supportedCreateDatabase: false,
getQuerySplitterOptions: () => redisSplitterOptions,
databaseUrlPlaceholder: 'e.g. redis://:authpassword@127.0.0.1:6380/4',
supportedKeyTypes: [
{
name: 'string',
@@ -75,7 +76,11 @@ const driver = {
],
showConnectionField: (field, values) => {
return ['server', 'port', 'password'].includes(field);
if (field == 'useDatabaseUrl') return true;
if (values.useDatabaseUrl) {
return ['databaseUrl', 'isReadOnly'].includes(field);
}
return ['server', 'port', 'password', 'isReadOnly'].includes(field);
},
};