U
    \jw                     @   s"  d Z ddlZddlmZ ddlmZmZmZm	Z	 ddl
mZ ddlmZ ddlmZ dd	lmZmZ dd
lmZmZmZ ddlmZ eddgdZejdedeeeefeeedddZejdee deeeefeedddZejdedeeeefeeedddZdS )u,   API Key 管理：生成 / 列表 / 吊销。    N)List)	APIRouterDependsHTTPExceptionstatus)Session   )get_db)get_current_user)UserApiKey)ApiKeyCreateInApiKeyCreatedOut	ApiKeyOut)generate_api_keyz	/api/keyszapi-keys)prefixtags )response_model)bodycurrent_userdbc                 C   sd   t  }t|jt||dd | jd}|| |  || t	|
 }tf |d|iS )uO   生成一个新的 API Key。明文 key 仅此一次返回，库内存哈希。N
   )user_idkey_hash
key_prefixnamekey)r   r   idhash_keyr   addcommitrefreshr   model_validate
model_dumpr   )r   r   r   rawapi_keydata r(   )/root/pica-gateway/app/routers/apikeys.py
create_key   s    


r*   )r   r   c                 C   s,   | ttj| jktj  }|S )N)	queryr   filterr   r   order_by
created_atdescall)r   r   keysr(   r(   r)   	list_keys&   s    

r2   z/{key_id}/revoke)key_idr   r   c                 C   sT   | ttj| ktj|jk }|d kr8ttjdd|_	|
  || |S )Nu   API Key 不存在T)r+   r   r,   r   r   firstr   r   HTTP_404_NOT_FOUNDrevokedr!   r"   )r3   r   r   r&   r(   r(   r)   
revoke_key4   s    
 

r7   ) __doc__datetimedttypingr   fastapir   r   r   r   sqlalchemy.ormr   databaser	   depsr
   modelsr   r   schemasr   r   r   securityr   routerpostr*   getr2   intr7   r(   r(   r(   r)   <module>   sB   