feat: make repository reads alias-aware
Assistant: codex Assistant-Model: gpt-5.6-sol Assistant-Session: 01a049a4-ee9f-78e1-9d66-2cb0f9bea3e3
This commit is contained in:
parent
639b9aed08
commit
2e2ae1e5d0
19 changed files with 982 additions and 94 deletions
|
|
@ -13,6 +13,7 @@ from api.models.task import Task
|
|||
from api.models.token_event import TokenEvent
|
||||
from api.models.workplan import Workplan
|
||||
from api.services.legacy_compat import meter_legacy_query_param
|
||||
from api.services.repository_aliases import resolve_repository_slug
|
||||
from api.schemas.token_event import (
|
||||
RepoTokenSummary,
|
||||
TokenAggregateRow,
|
||||
|
|
@ -288,6 +289,7 @@ async def get_token_summary(
|
|||
|
||||
@router.get("/by-repo/", response_model=list[RepoTokenSummary])
|
||||
async def get_tokens_by_repo(
|
||||
repo_slug: str | None = None,
|
||||
measurement_kind: str | None = None,
|
||||
source_provider: str | None = None,
|
||||
since: datetime | None = None,
|
||||
|
|
@ -304,6 +306,12 @@ async def get_tokens_by_repo(
|
|||
|
||||
Only events that resolve to a repo are included.
|
||||
"""
|
||||
requested_repo_id = None
|
||||
if repo_slug:
|
||||
requested_repo_id = (
|
||||
await resolve_repository_slug(session, repo_slug)
|
||||
).repo.id
|
||||
|
||||
# Fetch all events, workstreams, repos in three queries (avoids N+1)
|
||||
events_result = await session.execute(
|
||||
_filter_query(
|
||||
|
|
@ -341,6 +349,8 @@ async def get_tokens_by_repo(
|
|||
rid = resolve_repo_id(e)
|
||||
if not rid or rid not in repo_map:
|
||||
continue
|
||||
if requested_repo_id is not None and rid != requested_repo_id:
|
||||
continue
|
||||
if rid not in groups:
|
||||
groups[rid] = {
|
||||
"repo_id": rid,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue