init. project
This commit is contained in:
61
rag-web-ui/backend/app/services/api_key.py
Normal file
61
rag-web-ui/backend/app/services/api_key.py
Normal file
@@ -0,0 +1,61 @@
|
||||
from typing import List, Optional
|
||||
from datetime import datetime
|
||||
import secrets
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.models.api_key import APIKey
|
||||
from app.schemas.api_key import APIKeyCreate, APIKeyUpdate
|
||||
|
||||
class APIKeyService:
|
||||
@staticmethod
|
||||
def get_api_keys(db: Session, user_id: int, skip: int = 0, limit: int = 100) -> List[APIKey]:
|
||||
return (
|
||||
db.query(APIKey)
|
||||
.filter(APIKey.user_id == user_id)
|
||||
.offset(skip)
|
||||
.limit(limit)
|
||||
.all()
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def create_api_key(db: Session, user_id: int, name: str) -> APIKey:
|
||||
api_key = APIKey(
|
||||
key=f"sk-{secrets.token_hex(32)}",
|
||||
name=name,
|
||||
user_id=user_id,
|
||||
is_active=True
|
||||
)
|
||||
db.add(api_key)
|
||||
db.commit()
|
||||
db.refresh(api_key)
|
||||
return api_key
|
||||
|
||||
@staticmethod
|
||||
def get_api_key(db: Session, api_key_id: int) -> Optional[APIKey]:
|
||||
return db.query(APIKey).filter(APIKey.id == api_key_id).first()
|
||||
|
||||
@staticmethod
|
||||
def get_api_key_by_key(db: Session, key: str) -> Optional[APIKey]:
|
||||
return db.query(APIKey).filter(APIKey.key == key).first()
|
||||
|
||||
@staticmethod
|
||||
def update_api_key(db: Session, api_key: APIKey, update_data: APIKeyUpdate) -> APIKey:
|
||||
for field, value in update_data.model_dump(exclude_unset=True).items():
|
||||
setattr(api_key, field, value)
|
||||
db.add(api_key)
|
||||
db.commit()
|
||||
db.refresh(api_key)
|
||||
return api_key
|
||||
|
||||
@staticmethod
|
||||
def delete_api_key(db: Session, api_key: APIKey) -> None:
|
||||
db.delete(api_key)
|
||||
db.commit()
|
||||
|
||||
@staticmethod
|
||||
def update_last_used(db: Session, api_key: APIKey) -> APIKey:
|
||||
api_key.last_used_at = datetime.utcnow()
|
||||
db.add(api_key)
|
||||
db.commit()
|
||||
db.refresh(api_key)
|
||||
return api_key
|
||||
Reference in New Issue
Block a user