Spaces:
Sleeping
Sleeping
| from sqlalchemy.orm import Session | |
| from models import Project, User | |
| def create_project(db: Session, filename: str, file_id: str, upload_path: str, user_id: int) -> Project: | |
| project = Project( | |
| filename = filename, | |
| file_id = file_id, | |
| upload_path = upload_path, | |
| status = "uploaded", | |
| user_id = user_id, | |
| ) | |
| db.add(project) | |
| db.commit() | |
| db.refresh(project) | |
| return project | |
| def update_project_ready(db: Session, file_id: str, layer_count: int, processing_ms: int) -> Project: | |
| project = db.query(Project).filter(Project.file_id == file_id).first() | |
| if project: | |
| project.status = "ready" | |
| project.layer_count = layer_count | |
| project.processing_ms = processing_ms | |
| db.commit() | |
| db.refresh(project) | |
| return project | |
| def update_project_error(db: Session, file_id: str) -> Project: | |
| project = db.query(Project).filter(Project.file_id == file_id).first() | |
| if project: | |
| project.status = "error" | |
| db.commit() | |
| return project | |
| def get_all_projects(db: Session, user_id: int) -> list: | |
| return ( | |
| db.query(Project) | |
| .filter(Project.user_id == user_id) | |
| .order_by(Project.created_at.desc()) | |
| .all() | |
| ) | |
| def get_project_by_file_id(db: Session, file_id: str, user_id: int) -> Project: | |
| return ( | |
| db.query(Project) | |
| .filter(Project.file_id == file_id, Project.user_id == user_id) | |
| .first() | |
| ) | |
| def save_project_state(db: Session, file_id: str, saved_state: str, thumbnail_b64: str, layer_count: int, user_id: int): | |
| project = db.query(Project).filter( | |
| Project.file_id == file_id, | |
| Project.user_id == user_id, | |
| ).first() | |
| if not project: | |
| return None | |
| project.saved_state = saved_state | |
| project.thumbnail_b64 = thumbnail_b64 | |
| project.layer_count = layer_count | |
| db.commit() | |
| db.refresh(project) | |
| return project | |
| def get_saved_state(db: Session, file_id: str, user_id: int): | |
| project = db.query(Project).filter( | |
| Project.file_id == file_id, | |
| Project.user_id == user_id, | |
| ).first() | |
| if not project: | |
| return None | |
| return { | |
| "has_saved_state": project.saved_state is not None, | |
| "saved_state": project.saved_state, | |
| "thumbnail_b64": project.thumbnail_b64, | |
| "filename": project.filename, | |
| "file_id": project.file_id, | |
| "layer_count": project.layer_count, | |
| } | |
| def delete_project(db: Session, file_id: str, user_id: int): | |
| project = db.query(Project).filter( | |
| Project.file_id == file_id, | |
| Project.user_id == user_id, | |
| ).first() | |
| if not project: | |
| return None | |
| db.delete(project) | |
| db.commit() | |
| return project |