crud_nft.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from typing import Any, Dict, List, Optional, Union
  2. from sqlalchemy.orm import Session
  3. from sqlalchemy import func
  4. from app.core.security import get_password_hash, verify_password
  5. from app.crud.base import CRUDBase
  6. from app.models.nft import Nft
  7. from app.schemas.nft import NftBase, NftCreate, NftUpdate
  8. class CRUDNft(CRUDBase[Nft, NftBase, NftCreate]):
  9. def get_multi_by_owner(
  10. self, db: Session, *, skip: int = 0, limit: int = 100, owner_id: str
  11. ) -> List[Nft]:
  12. return db.query(Nft).filter(Nft.userid==owner_id).offset(skip).limit(limit).all()
  13. def get_group_by_title(
  14. self, db: Session, *, skip: int = 0, limit: int = 100
  15. ) -> List[Nft]:
  16. return db.query(Nft, func.count(Nft.userid)).group_by(Nft.title)#.offset(skip).limit(limit).all()
  17. def create_with_owner(self, db: Session, *, obj_in: NftCreate, owner_id:str) -> Nft:
  18. db_obj = Nft(
  19. hash=obj_in.hash,
  20. imgurl=obj_in.imgurl,
  21. userid=owner_id,
  22. title=obj_in.title,
  23. context=obj_in.context,
  24. is_active=obj_in.is_active,
  25. category=obj_in.category
  26. )
  27. db.add(db_obj)
  28. db.commit()
  29. db.refresh(db_obj)
  30. return db_obj
  31. nft = CRUDNft(Nft)