@@ -68,6 +68,7 @@ def verify_certificate(certificate_id: str, db: Session = Depends(get_db)):
6868 return {
6969 "status" : "valid" ,
7070 "certificate_id" : cert .certificate_id ,
71+ "student_id" : cert .student_id ,
7172 "student_name" : cert .student_name ,
7273 "course_title" : cert .course_title ,
7374 "course_link" : cert .course_link ,
@@ -95,20 +96,69 @@ def list_certificates(
9596 api_key : str = Depends (security .verify_api_key )
9697):
9798 certs = db .query (models .Certificate ).all ()
98- return certs
99+ return [
100+ {
101+ "certificate_id" : cert .certificate_id ,
102+ "student_id" : cert .student_id ,
103+ "student_name" : cert .student_name ,
104+ "course_title" : cert .course_title ,
105+ "course_link" : cert .course_link ,
106+ "completion_date" : cert .completion_date ,
107+ "duration_hours" : cert .duration_hours ,
108+ "attendance_percentage" : cert .attendance_percentage ,
109+ "assignment_completion_percentage" : cert .assignment_completion_percentage ,
110+ "course_level" : cert .course_level ,
111+ "course_format" : cert .course_format ,
112+ "instruction_language" : cert .instruction_language ,
113+ "issuer" : cert .issuer ,
114+ "instructor" : cert .instructor ,
115+ "created_at" : cert .created_at ,
116+ "updated_at" : cert .updated_at ,
117+ }
118+ for cert in certs
119+ ]
99120
100121
101- @app .delete ("/admin/certificates/{certificate_id }" , response_model = schemas .CertificateDeleteResponse )
102- def delete_certificate (
103- certificate_id : str ,
122+ @app .get ("/admin/students/{student_id }" , response_model = schemas .StudentLookupResponse )
123+ def get_student_by_student_id (
124+ student_id : str ,
104125 db : Session = Depends (get_db ),
105126 api_key : str = Depends (security .verify_api_key )
106127):
107- cert = crud .delete_certificate (db , certificate_id )
108- if not cert :
109- raise HTTPException (status_code = 404 , detail = "Certificate not found" )
128+ student = crud .get_student_by_id (db , student_id )
129+ if not student :
130+ raise HTTPException (status_code = 404 , detail = "Student not found" )
131+
132+ certificates = (
133+ db .query (models .Certificate )
134+ .filter (models .Certificate .student_id == student_id )
135+ .order_by (models .Certificate .created_at .desc ())
136+ .all ()
137+ )
138+
139+ return {
140+ "student" : {
141+ "student_id" : student .student_id ,
142+ "student_name" : student .student_name ,
143+ "created_at" : student .created_at ,
144+ "updated_at" : student .updated_at ,
145+ },
146+ "certificates" : certificates ,
147+ }
148+
149+
150+ @app .delete ("/admin/certificates/student/{student_id}" , response_model = schemas .CertificateDeleteResponse )
151+ def delete_certificates_for_student (
152+ student_id : str ,
153+ db : Session = Depends (get_db ),
154+ api_key : str = Depends (security .verify_api_key )
155+ ):
156+ deleted_count = crud .delete_certificates_by_student_id (db , student_id )
157+ if deleted_count == 0 :
158+ raise HTTPException (status_code = 404 , detail = "No certificates found for student" )
110159
111160 return {
112- "message" : "Certificate deleted" ,
113- "certificate_id" : certificate_id ,
161+ "message" : "Certificates deleted for student" ,
162+ "student_id" : student_id ,
163+ "deleted_count" : deleted_count ,
114164 }
0 commit comments