sql.py 807 B

1234567891011121314151617181920212223242526272829
  1. __package__ = 'archivebox.legacy.storage'
  2. from typing import List, Iterator
  3. from ..schema import Link
  4. from ..util import enforce_types
  5. from ..config import setup_django, OUTPUT_DIR
  6. ### Main Links Index
  7. @enforce_types
  8. def parse_sql_main_index(out_dir: str=OUTPUT_DIR) -> Iterator[Link]:
  9. setup_django(out_dir, check_db=True)
  10. from core.models import Page
  11. return (
  12. Link.from_json(page.as_json(*Page.keys))
  13. for page in Page.objects.all()
  14. )
  15. @enforce_types
  16. def write_sql_main_index(links: List[Link], out_dir: str=OUTPUT_DIR) -> None:
  17. setup_django(out_dir, check_db=True)
  18. from core.models import Page
  19. for link in links:
  20. info = {k: v for k, v in link._asdict().items() if k in Page.keys}
  21. Page.objects.update_or_create(url=link.url, defaults=info)