jm_homework.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import time
  2. from typing import List
  3. from app import models, schemas
  4. from sqlalchemy.orm import Session
  5. from app.crud.constant import find_and_update
  6. from app.crud.jm_homework_datasource_relation import create_jm_hd_relation, get_jm_relations
  7. def create_jm_homework(db: Session, item: schemas.JmHomeworkCreate):
  8. jm_homework_create = item.dict()
  9. db_item = db.query(models.JmHomework).filter(models.JmHomework.name == jm_homework_create['name']).first()
  10. if db_item:
  11. raise Exception('JmHomework name already exists')
  12. relation_list = jm_homework_create.pop('relation_list')
  13. if jm_homework_create['type'] != 'DAG':
  14. for relation in relation_list:
  15. create_jm_hd_relation(db, schemas.JmHomeworkDatasourceRelationCreate(**relation))
  16. tag = jm_homework_create['tag']
  17. find_and_update(db, '作业分类', tag)
  18. create_time: int = int(time.time())
  19. db_item = models.JmHomework(**jm_homework_create,**{
  20. 'create_time': create_time,
  21. 'update_time': create_time,
  22. 'status': 1
  23. })
  24. db.add(db_item)
  25. db.commit()
  26. db.refresh(db_item)
  27. return db_item
  28. def get_jm_homeworks(db: Session, project_id: str):
  29. res: List[models.JmHomework] = db.query(models.JmHomework)\
  30. .filter(models.JmHomework.project_id == project_id)\
  31. .filter(models.JmHomework.status == 1).all()
  32. return res
  33. def get_jm_homework_info(db: Session, homework_id: int):
  34. item = db.query(models.JmHomework)\
  35. .filter(models.JmHomework.id == homework_id).first()
  36. if item.type == 'DAG':
  37. relations = get_jm_relations(db,homework_id)
  38. item.__dict__.update({"hd_relation":relations})
  39. return item
  40. def update_jm_homework(db: Session, id: int, update_item: schemas.JmHomeworkUpdate):
  41. db_item = db.query(models.JmHomework).filter(models.JmHomework.id == id).first()
  42. if not db_item:
  43. raise Exception('JmHomework not found')
  44. db_name_item = db.query(models.JmHomework).filter(models.JmHomework.name == update_item.name).first()
  45. if db_name_item:
  46. raise Exception('JmHomework name already exists')
  47. update_dict = update_item.dict(exclude_unset=True)
  48. tag = update_dict.tag
  49. find_and_update(db, '作业分类', tag)
  50. for k, v in update_dict.items():
  51. setattr(db_item, k, v)
  52. db_item.update_time = int(time.time())
  53. db.commit()
  54. db.flush()
  55. db.refresh(db_item)
  56. return db_item
  57. def delete_jm_homework(db: Session, id: int):
  58. db_item = db.query(models.JmHomework).filter(models.JmHomework.id == id).first()
  59. if not db_item:
  60. raise Exception('JmHomework not found')
  61. db_item.status = 0
  62. db.commit()
  63. db.flush()
  64. db.refresh(db_item)
  65. return db_item