init. project

This commit is contained in:
2026-04-13 11:34:23 +08:00
commit c7c0659a85
202 changed files with 31196 additions and 0 deletions

View 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