jm_homework.py 2.8 KB

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