HR-Assistant / scripts /db /list_candidates.py
owenkaplinsky's picture
update from github stable code (#3)
3370983 verified
"""
List candidates in the database.
Run standalone:
>>> POSTGRES_HOST=localhost POSTGRES_PORT=5433 python scripts/db/list_candidates.py
"""
from sqlalchemy.exc import ProgrammingError
# Ensure project root is in path
import scripts.db # noqa: F401
from src.backend.database.candidates.client import SessionLocal
from src.backend.database.candidates.models import Candidate
def list_candidates(limit: int = 10) -> bool:
"""
Check and list existing candidates in the database.
Args:
limit: Maximum number of candidates to display.
Returns:
True if query successful, False otherwise.
"""
print("--- ๐Ÿงพ Checking Existing Candidates ---")
session = SessionLocal()
try:
count = session.query(Candidate).count()
print(f"๐Ÿ“Š Found {count} candidate(s) in the database.")
if count == 0:
print("โš ๏ธ No candidates found.")
else:
print(f"\n๐Ÿ‘€ Listing candidates (up to {limit}):")
candidates = (
session.query(Candidate)
.order_by(Candidate.full_name)
.limit(limit)
.all()
)
for c in candidates:
print(f" - ID: {c.id}")
print(f" Full Name: {c.full_name}")
print(f" Email: {c.email}")
print(f" Phone: {c.phone_number}")
print(f" CV Path: {c.cv_file_path}")
print(f" Parsed CV Path: {c.parsed_cv_file_path}")
print(f" Status: {c.status}")
print(f" Auth Code: {c.auth_code}")
print(f" Created At: {c.created_at}")
print(f" Updated At: {c.updated_at}")
print("-" * 40)
return True
except ProgrammingError as e:
print("โŒ Table 'candidates' does not exist or schema not initialized.")
print("โ„น๏ธ Try running your DB initialization script or migrations.")
print(f"Error: {e}")
return False
except Exception as e:
print("โŒ Error during candidate check.")
print(f"Error: {e}")
return False
finally:
session.close()
if __name__ == "__main__":
list_candidates()