| 60 | |
| 61 | |
| 62 | class LawDatabase(object): |
| 63 | |
| 64 | def __init__(self) -> None: |
| 65 | self.db = db |
| 66 | |
| 67 | def get_or_create_category(self, folder: str) -> Category: |
| 68 | try: |
| 69 | return Category.get(folder=folder) |
| 70 | except Category.DoesNotExist: |
| 71 | pass |
| 72 | return Category.create(**{ |
| 73 | "name": folder.split("/")[-1], |
| 74 | "folder": folder |
| 75 | }) |
| 76 | |
| 77 | def get_laws(self, name: str = None, publish_at: datetime | str = None) -> List[Law]: |
| 78 | if publish_at and isinstance(publish_at, datetime): |
| 79 | publish_at = publish_at.strftime('%Y-%m-%d') |
| 80 | expr = None |
| 81 | if name: |
| 82 | expr = Law.name == name |
| 83 | if publish_at: |
| 84 | expr = expr & (Law.publish == publish_at) |
| 85 | if expr: |
| 86 | return Law.select().where(expr) |
| 87 | return Law.select().where(1 == 1) |
| 88 | |
| 89 | def delete_law(self, id): |
| 90 | Law.delete_by_id(id) |
| 91 | |
| 92 | def create_law(self, name: str, category: Category, level: str, publish_at: str = None, id=None) -> Law: |
| 93 | try: |
| 94 | params = { |
| 95 | "name": name, |
| 96 | } |
| 97 | if publish_at: |
| 98 | params["publish"] = publish_at |
| 99 | return Law.get(**params) |
| 100 | except Law.DoesNotExist: |
| 101 | pass |
| 102 | params = { |
| 103 | "name": name, |
| 104 | "category_id": category.id, |
| 105 | "level": level, |
| 106 | } |
| 107 | if publish_at: |
| 108 | params["publish"] = publish_at |
| 109 | if id: |
| 110 | params["id"] = id |
| 111 | return Law.create(**params) |
| 112 | |
| 113 | |
| 114 | def get_laws(): |