Skip to content

Commit 76aa2bf

Browse files
authored
Merge pull request #16 from amfoss/develop
Added a endpoint to check submissions
2 parents 45a9ae7 + c80871e commit 76aa2bf

File tree

4 files changed

+68
-3
lines changed

4 files changed

+68
-3
lines changed

Pipfile

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
[[source]]
2+
url = "https://pypi.org/simple"
3+
verify_ssl = true
4+
name = "pypi"
5+
6+
[packages]
7+
annotated-types = "==0.7.0"
8+
anyio = "==4.9.0"
9+
click = "==8.2.0"
10+
fastapi = "==0.115.12"
11+
filelock = "==3.18.0"
12+
h11 = "==0.16.0"
13+
httptools = "==0.6.4"
14+
idna = "==3.10"
15+
psycopg2-binary = "==2.9.10"
16+
pydantic-core = "==2.33.2"
17+
python-dotenv = "==1.1.0"
18+
pyyaml = "==6.0.2"
19+
sniffio = "==1.3.1"
20+
sqlalchemy = "==2.0.41"
21+
starlette = "==0.46.2"
22+
typing-inspection = "==0.4.0"
23+
typing-extensions = "==4.13.2"
24+
uvicorn = "==0.34.2"
25+
uvloop = "==0.21.0"
26+
watchfiles = "==1.0.5"
27+
websockets = "==15.0.1"
28+
pydantic = {extras = ["email"], version = "*"}
29+
alembic = "*"
30+
31+
[dev-packages]
32+
33+
[requires]
34+
python_version = "3.13"

app/db/crud.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from typing import Optional
12
from sqlalchemy.orm import Session
23
from app.db import models
34
from datetime import datetime
@@ -69,4 +70,15 @@ def create_or_update_otp(db, email, otp, expires_at):
6970
else:
7071
entry = models.OTP(email=email, otp=otp, expires_at=expires_at)
7172
db.add(entry)
72-
db.commit()
73+
db.commit()
74+
75+
76+
def get_submissions(db: Session, email: str, track_id: Optional[int] = None):
77+
user = db.query(models.User).filter(models.User.email == email).first()
78+
if not user:
79+
return []
80+
query = db.query(models.Submission).filter(models.Submission.mentee_id == user.id)
81+
if track_id is not None:
82+
query = query.join(models.Task, models.Submission.task_id == models.Task.id)
83+
query = query.filter(models.Task.track_id == track_id)
84+
return query.all()

app/main.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from fastapi import FastAPI
22
from app.db.db import Base, engine
3-
from app.routes import auth, progress, tracks, leaderboard, mentors
3+
from app.routes import auth, progress, tracks, leaderboard, mentors , submissions
44
from fastapi.middleware.cors import CORSMiddleware
55

66
app = FastAPI(title="amMentor API")
@@ -23,7 +23,7 @@ def on_startup():
2323
app.include_router(tracks.router, prefix="/tracks", tags=["Tracks"])
2424
app.include_router(leaderboard.router, prefix="/leaderboard", tags=["Leaderboard"])
2525
app.include_router(mentors.router, prefix="/mentors", tags=["Mentors"])
26-
26+
app.include_router(submissions.router, prefix="/submissions", tags=["Submissions"])
2727

2828
@app.get("/")
2929
def root():

app/routes/submissions.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from typing import Optional
2+
from fastapi import APIRouter, Depends, HTTPException , Query
3+
from sqlalchemy.orm import Session
4+
from app.db import crud
5+
from app.db.db import get_db
6+
from app.schemas.submission import SubmissionOut
7+
8+
router = APIRouter()
9+
10+
@router.get("/", response_model=list[SubmissionOut])
11+
def get_submissions(
12+
email: str = Query(...),
13+
track_id: Optional[int] = Query(None),
14+
db: Session = Depends(get_db)
15+
):
16+
submissions = crud.get_submissions(db, email, track_id)
17+
if not submissions:
18+
raise HTTPException(status_code=404, detail="No submissions found")
19+
return submissions

0 commit comments

Comments
 (0)