FR: support environment variables in (favourite) queries
- 主要语言
- Python
- 星标
- 3.3k
- 派生
- 95
- PR 合并指标
- 30 天内没有已合并 PR
描述
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
```
贡献指南
调研方向
首先定位 litecli 对收藏查询的处理方式以及 \f 命令的入口点;该 issue 未指定源文件或测试。阅读现有 $1/$2 参数是如何替换的,然后明确环境展开仅适用于收藏查询,还是适用于所有查询。只要约定的语法能够在所示的数据库变体中正常工作,且不破坏现有查询参数,就算完成。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- python, sqlite
- 领域
- cli, database
- Issue 类型
- 功能
- 难度
- 5/5
- 预计耗时
- 一周以上
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 30/100