feat: add portfolio snapshot read layer
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
"""trex-core CLI entrypoints (REQ-032).
|
||||
|
||||
Subcommands:
|
||||
pause <portfolio_id> — durably pause a portfolio (Postgres)
|
||||
resume <portfolio_id> — clear the pause
|
||||
paused — list paused portfolio_ids
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
|
||||
from trex_core.adapters.portfolio.pause_store import PostgreSQLPauseStore
|
||||
from trex_core.runtime.config import DaemonConfig
|
||||
|
||||
|
||||
def main(argv: list[str] | None = None) -> int:
|
||||
parser = argparse.ArgumentParser(prog="trex-core", description="trex-core admin CLI")
|
||||
sub = parser.add_subparsers(dest="cmd", required=True)
|
||||
|
||||
p_pause = sub.add_parser("pause", help="Pause a portfolio_id")
|
||||
p_pause.add_argument("portfolio_id")
|
||||
p_pause.add_argument("--actor", default="cli")
|
||||
|
||||
p_resume = sub.add_parser("resume", help="Resume a portfolio_id")
|
||||
p_resume.add_argument("portfolio_id")
|
||||
|
||||
sub.add_parser("paused", help="List paused portfolio_ids")
|
||||
|
||||
args = parser.parse_args(argv)
|
||||
cfg = DaemonConfig.from_env()
|
||||
store = PostgreSQLPauseStore(cfg.dsn)
|
||||
|
||||
if args.cmd == "pause":
|
||||
store.pause(args.portfolio_id, actor=args.actor)
|
||||
print(f"paused {args.portfolio_id}")
|
||||
elif args.cmd == "resume":
|
||||
store.resume(args.portfolio_id)
|
||||
print(f"resumed {args.portfolio_id}")
|
||||
elif args.cmd == "paused":
|
||||
for pid in sorted(store.list_paused()):
|
||||
print(pid)
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__": # pragma: no cover
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user