dbcli / dbcli/litecli

FR: support environment variables in (favourite) queries

Open
#163 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
3.3k
Forks
95
PR merge metrics
No merged PRs in 30d

Description

I'd love to see support for using environment variables in favourite queries, or even in all queries.

The use case is that I have several very similar databases where favourite queries all need to take a parameter to indicate what 'variant' of the database I'm currently using, _or_ I have to copy configuration files for each database file and alter one value in each query filter.

Say, the different values are `'foo'` and `'bar'`, and I have to either do:

```ini
favquery1 = '''select ...
from some_table
where parameter='$1'
and other_paramater='$2'
'''
favquery2 = '''select ...
from some_other_table sot inner join a_third_table att on sot.id = att.sot_id
where sot.parameter='$1'
and att.column_name ='$2'
'''
```

and then run `\f favquery1 foo 42` and `\f favquery2 bar 45`, **or** I copy the configuration file multiple times and hardcode the parameter in each.

If, instead, I could use environment variables (syntax suggestion, feel free to come up with better syntax, this is based on bash):

```ini
favquery1 = '''select ...
from some_table
where parameter='${PARAMETER}'
and other_paramater='$1'
'''
favquery2 = '''select ...
from some_other_table sot inner join a_third_table att on sot.id = att.sot_id
where sot.parameter='${PARAMETER}'
and att.column_name ='$1'
'''
```

and then start each `litecli` instance with a different environment variable and use the exact same favourites for each database:

```sh
$ PARAMETER=foo litecli foo_database.sqlite
foo_database.sqlite> \f favquery1 42
```

and

```sh
$ PARAMETER=bar litecli bar_database.sqlite
bar_database.sqlite> \f favquery1 42
```

Contributor guide

Open the contributing guide

Research direction

Start by locating litecli's favourite-query handling and the entry point for \f commands; the issue names no source files or tests. Read how existing $1/$2 arguments are substituted, then clarify whether environment expansion applies only to favourites or to all queries. Done means the agreed syntax works across the illustrated database variants without breaking existing query parameters.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, sqlite
Domain
cli, database
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.