Corrections router (kiwi#73): - Wire make_corrections_router() from cf-core at /api/v1/corrections - Add get_db() dependency in session.py yielding store.conn (raw sqlite3.Connection as cf-core expects); cloud-aware via get_session - Migration 040: corrections table + indexes (copied from cf-core DDL) - Feeds Avocet SFT training pipeline via GET /corrections/export JSONL Magpie flywheel hook (kiwi#28): - app/services/magpie_hook.py: async fire_recipe_signal() that reads magpie_opt_in setting, checks external_id, POSTs anonymized payload to MAGPIE_INGEST_URL; stubs gracefully when URL unset or Magpie unreachable (DEBUG log, never raises) - Hooks into save_recipe and update_saved_recipe as background tasks - MAGPIE_INGEST_URL config key added to Settings - SettingsView: "Data Sharing" toggle for magpie_opt_in, cloud-only (v-if VITE_CLOUD_MODE), plain-language consent label
38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
"""
|
|
FastAPI dependency that provides a Store instance per request.
|
|
|
|
Local mode: opens a Store at settings.DB_PATH.
|
|
Cloud mode: opens a Store at the per-user DB path from the CloudUser session.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import sqlite3
|
|
from collections.abc import Iterator
|
|
from typing import Generator
|
|
|
|
from fastapi import Depends
|
|
|
|
from app.cloud_session import CloudUser, get_session
|
|
from app.db.store import Store
|
|
|
|
|
|
def get_store(session: CloudUser = Depends(get_session)) -> Generator[Store, None, None]:
|
|
"""FastAPI dependency — yields a Store for the current user, closes on completion."""
|
|
store = Store(session.db)
|
|
try:
|
|
yield store
|
|
finally:
|
|
store.close()
|
|
|
|
|
|
def get_db(session: CloudUser = Depends(get_session)) -> Iterator[sqlite3.Connection]:
|
|
"""FastAPI dependency — yields the raw sqlite3.Connection for the current user.
|
|
|
|
Used by make_corrections_router() from circuitforge-core, which expects a
|
|
dependency that yields a sqlite3.Connection directly.
|
|
"""
|
|
store = Store(session.db)
|
|
try:
|
|
yield store.conn
|
|
finally:
|
|
store.close()
|