
    Ti                     >   d Z ddlZddlmZmZmZ ddlmZ  edg          Z	d Z
ded	efd
Zg dZe	                    d           edd          fdefd            Ze	                    d           edd           edd          fdedefd            ZdS )u   
BC資格試験問題 REST API ルーター
- GET /bc/categories?session_id=xxx       → カテゴリ一覧と問題数
- GET /bc/questions?category=xx&session_id=xxx → カテゴリ内の問題一覧
    N)	APIRouterHTTPExceptionQuery)C_DB_CONFIGzBC Quiz)tagsc                  8    t          j        j        di t          S )N )mysql	connectorconnectr   r	       /app/app/routers/bc_router.py_get_cdbr      s    ?"11[111r   
session_idreturnc                 H    t          | o|                                           S )N)boolstrip)r   s    r   _validate_sessionr      s!    
1z//11222r   )u   日本国憲法u   国際情勢u   国際経済u   市場経済u   景気u   企業u   金融z/categories.u   セッションID (認証用))descriptionc                   K   t          |           st          dd          	 t                      }|                    d          }|                    d           |                                }|                                 |                                 d |D             }g }t          D ]$}||v r|                    |||         d           %t          t                    }|D ]0}|d	         |vr$|                    |d	         |d
         d           1d|dS # t          $ r&}	t          ddt          |	                     d}	~	ww xY w)u   
    bc_quiz テーブルに存在するカテゴリ一覧と各問題数を返します。
    表示順は CATEGORY_ORDER に従います。
      Unauthorized: invalid sessionstatus_codedetailT
dictionaryzx
            SELECT category, COUNT(*) AS question_count
            FROM bc_quiz
            GROUP BY category
        c                 ,    i | ]}|d          |d         S categoryquestion_countr	   ).0rs     r   
<dictcomp>z%get_bc_categories.<locals>.<dictcomp>@   s$    DDD!1Z=!$4"5DDDr   r    r!   r"   success)status
categories  
DB error: N)r   r   r   cursorexecutefetchallcloseCATEGORY_ORDERappendset	Exceptionstr)
r   connr+   rowsrow_maporderedcatknownr$   es
             r   get_bc_categoriesr;   (   s      Z(( U4STTTTKzz--  	 	 	
   

 EDtDDD! 	R 	RCg~~C73<PPQQQN## 	c 	cA}E))AjMQO_M`aabbb#7;;; K K K4IQ4I4IJJJJKs   C:D 
E)!E

Ez
/questionsu&   カテゴリ名 (例: 日本国憲法)r!   c                 ~  K   t          |          st          dd          	 t                      }|                    d          }|                    d| f           |                                }|                                 |                                 g }|D ]X}|                    |d         |d         |d	         |d
         |d         |d         |d         g|d         |d         d           Yd| t          |          |dS # t          $ r&}t          ddt          |                     d}~ww xY w)u   
    指定カテゴリの問題一覧を q_number 昇順で返します。
    各問題に id / q_number / question / choices (4択配列) / answer / explanation を含みます。
    r   r   r   Tr   z
            SELECT id, q_number, question,
                   choice_1, choice_2, choice_3, choice_4,
                   answer, explanation
            FROM bc_quiz
            WHERE category = %s
            ORDER BY q_number ASC
        idq_numberquestionchoice_1choice_2choice_3choice_4answerexplanation)r=   r>   r?   choicesrD   rE   r&   )r'   r!   total	questionsr)   r*   N)r   r   r   r+   r,   r-   r.   r0   lenr2   r3   )r!   r   r4   r+   r5   rH   r$   r:   s           r   get_bc_questionsrJ   T   s      Z(( U4STTTT(Kzz--  [	 	 	   

 	 	 	A w } }jMjMjMjM	  !{ /      #!Y"	
 
 	
  K K K4IQ4I4IJJJJKs   C'D 
D<!D77D<)__doc__mysql.connectorr
   fastapir   r   r   app.core.configr   routerr   r3   r   r   r/   getr;   rJ   r	   r   r   <module>rQ      sr   
     3 3 3 3 3 3 3 3 3 3 ' ' ' ' ' '		$	$	$2 2 23# 3$ 3 3 3 3
   MeC-LMMM%K %K%K %K %K %KV LE#+STTTeC-LMMM3K 3K3K3K 3K 3K 3K 3K 3Kr   