feat: 切换数据库至 PostgreSQL、支持环境变量

未来计划支持多种数据库,从 PostgreSQL 开始!
支持从环境变量读取启动设置,添加 nyahome env 命令用来持久化环境变量。

BREAKING CHANGE: 切换开发阶段的数据库,从 SQLite 到 PostgreSQL。
This commit is contained in:
2026-05-28 16:12:35 +08:00
parent 21cb4ee8c1
commit d62a9d9304
7 changed files with 155 additions and 13 deletions
+3
View File
@@ -0,0 +1,3 @@
from rich.console import Console
console = Console()
+61
View File
@@ -0,0 +1,61 @@
import os
from pathlib import Path
from typing import Annotated
import typer
from dotenv import load_dotenv, set_key, unset_key
from rich.table import Table
from .cli import console
env_app = typer.Typer()
ENV_PATH = Path.cwd() / ".nyahome" / ".env"
@env_app.command(name="list")
def list_all_envs() -> None:
"""
列出所有以 NYAHOME_ 开头的环境变量。
这些变量可能配置在 .nyahome 内的 .env 文件中,或者通过其他方式预先设置。
"""
if not load_dotenv(ENV_PATH):
console.print(
"[bright_black]未在 .nyahome 目录下读取到任何环境变量。如果这是有意为之,则请无需担心。[/bright_black]"
)
table = Table(title="NyaHome 应用的环境变量")
table.add_column("Key", style="cyan", no_wrap=True)
table.add_column("Value", style="white")
for env in os.environ.items():
if env[0].startswith("NYAHOME_"):
table.add_row(env[0], env[1])
console.print(table)
@env_app.command(name="set")
def set_env(
key: Annotated[str, typer.Argument(help="不包含 NYAHOME_ 的键名")],
value: Annotated[str, typer.Argument(help="环境变量值")],
) -> None:
"""
设置 NYAHOME_ 环境变量。请参考 NyaHome 文档以了解使用方法。
保存在 .nyahome 内的 .env 文件。
"""
set_key(ENV_PATH, f"NYAHOME_{key.upper()}", value)
console.print(f"[cyan]已设置环境变量 NYAHOME_{key}。[/cyan]")
@env_app.command(name="unset")
def unset_env(key: Annotated[str, typer.Argument(help="不包含 NYAHOME_ 的键名")]) -> None:
"""
删除 NYAHOME_ 环境变量。
操作在 .nyahome 内的 .env 文件。
"""
unset_key(ENV_PATH, f"NYAHOME_{key.upper()}")
console.print(f"[cyan]已删除环境变量 NYAHOME_{key}。[/cyan]")