Skip to content
Snippets Groups Projects
Commit 21fc89fb authored by Tim Repke's avatar Tim Repke
Browse files

add pagination to twitter items

parent 755a28e4
No related branches found
No related tags found
No related merge requests found
......@@ -7,9 +7,19 @@ from fastapi.security import OAuth2PasswordRequestForm
from nacsos_data.models.users import UserModel
from nacsos_data.models.items import ItemModel
from nacsos_data.models.items.twitter import TwitterItemModel
from nacsos_data.db.crud.items import read_all_items_for_project, create_item, create_items
from nacsos_data.db.crud.items.twitter import read_tweet_by_item_id, read_tweet_by_twitter_id, \
read_tweets_by_author_id, read_all_tweets_for_project, create_tweet, create_tweets
from nacsos_data.db.crud.items import \
read_all_items_for_project, \
create_item, \
create_items, \
read_item_count_for_project
from nacsos_data.db.crud.items.twitter import \
read_tweet_by_item_id, \
read_tweet_by_twitter_id, \
read_tweets_by_author_id, \
read_paged_tweets_for_project, \
read_all_tweets_for_project, \
create_tweet, \
create_tweets
from server.data import db_engine
from server.util.security import UserPermissionChecker
......@@ -27,6 +37,12 @@ async def list_project_items(project_id: str, permission=Depends(UserPermissionC
return items
@router.get('/count', response_model=int)
async def count_project_items(project_id: str, permission=Depends(UserPermissionChecker('dataset_read'))) -> int:
tweets = await read_item_count_for_project(project_id=project_id, engine=db_engine)
return tweets
@router.get('/detail/{item_id}', response_model=TwitterItemModel)
async def get_detail_for_item(item_id: str, permission=Depends(UserPermissionChecker('dataset_read'))):
# TODO first check what the correct data format for the project is via Project.type
......@@ -40,6 +56,18 @@ async def list_project_tweets(project_id: str, permission=Depends(UserPermission
return tweets
@router.get('/twitter/list/{page}/{page_size}', response_model=list[TwitterItemModel])
async def list_paged_project_tweets(project_id: str, page: int, page_size: int,
permission=Depends(UserPermissionChecker('dataset_read'))):
tweets = await read_paged_tweets_for_project(project_id=project_id,
page=page, page_size=page_size,
engine=db_engine)
return tweets
# page: count starts at 1
@router.post('/twitter/add')
async def add_tweet(project_id: str, tweet: TwitterItemModel,
permission=Depends(UserPermissionChecker('dataset_edit'))):
......
......@@ -14,7 +14,7 @@ router = APIRouter()
@router.get('/me', response_model=ProjectPermissionsModel)
async def get_project_permissions_current_user(permission=Depends(UserPermissionChecker())) \
-> ProjectPermissionsModel:
return permission
return permission.permissions
@router.get('/list', response_model=list[ProjectPermissionsModel])
......
......@@ -44,7 +44,6 @@ async def get_user_by_id(user_id: str,
async def get_users_by_ids(user_id: list[str] = Query(),
permissions: UserPermissions = Depends(UserPermissionChecker('annotations_edit'))) \
-> list[UserInDBModel]:
print(user_id)
result = await read_users_by_ids(user_ids=user_id, engine=db_engine)
return result
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment