add method for import data

This commit is contained in:
Thomas Peetz
2025-05-19 14:16:30 +02:00
parent 3197288eee
commit 20ed0b2f40
8 changed files with 387 additions and 8 deletions
+84 -1
View File
@@ -1,6 +1,6 @@
import uuid
from datetime import datetime
from typing import List, Optional
from typing import AnyStr, Dict, List, Optional, Any
from sqlalchemy import Column, ForeignKey, Integer, String, Boolean, func
from sqlalchemy.orm import relationship, Mapped, mapped_column
@@ -25,6 +25,14 @@ class Publisher(Base):
def __str__(self):
return self.__repr__()
def import_dict(self, import_data: Dict[AnyStr, Any]):
self.id = import_data['id']
self.created_date = import_data['created_date']
self.last_modified_date = import_data['last_modified_date']
self.version = import_data['version']
self.name = import_data['name']
self.parent_publisher_id = import_data['parent_publisher_id']
class Comic(Base, BaseMixin):
__tablename__ = 'comic'
@@ -46,6 +54,18 @@ class Comic(Base, BaseMixin):
def __str__(self):
return f'{self.title}({self.id})'
def import_dict(self, import_data: Dict[AnyStr, Any]):
self.id = import_data['id']
self.created_date = import_data['created_date']
self.last_modified_date = import_data['last_modified_date']
self.version = import_data['version']
self.title = import_data['title']
self.publisher_id = import_data['publisher_id']
self.current_order = import_data['current_order']
self.completed = import_data['completed']
if 'weblink' in import_data:
self.weblink = import_data['weblink']
class Volume(Base, BaseMixin):
__tablename__ = "volume"
@@ -55,6 +75,14 @@ class Volume(Base, BaseMixin):
story_arcs = relationship("StoryArc")
issues = relationship("Issue")
def import_dict(self, import_data: Dict[AnyStr, Any]):
self.id = import_data['id']
self.created_date = import_data['created_date']
self.last_modified_date = import_data['last_modified_date']
self.version = import_data['version']
self.name = import_data['name']
self.comic_id = import_data['comic_id']
class TradePaperback(Base, BaseMixin):
__tablename__ = "trade_paperback"
@@ -64,6 +92,16 @@ class TradePaperback(Base, BaseMixin):
comic_id = Column(String, ForeignKey("comic.id"), nullable=False)
comic = relationship("Comic", back_populates="trade_paperbacks")
def import_dict(self, import_data: Dict[AnyStr, Any]):
self.id = import_data['id']
self.created_date = import_data['created_date']
self.last_modified_date = import_data['last_modified_date']
self.version = import_data['version']
self.name = import_data['name']
self.issue_start = import_data['issue_start']
self.issue_end = import_data['issue_end']
self.comic_id = import_data['comic_id']
class StoryArc(Base, BaseMixin):
__tablename__ = "story_arc"
@@ -74,6 +112,15 @@ class StoryArc(Base, BaseMixin):
volume = relationship("Volume", back_populates="story_arcs")
issues = relationship("Issue")
def import_dict(self, import_data: Dict[AnyStr, Any]):
self.id = import_data['id']
self.created_date = import_data['created_date']
self.last_modified_date = import_data['last_modified_date']
self.version = import_data['version']
self.name = import_data['name']
self.comic_id = import_data['comic_id']
self.volume_id = import_data['volume_id']
class Issue(Base, BaseMixin):
__tablename__ = "issue"
@@ -87,6 +134,18 @@ class Issue(Base, BaseMixin):
story_arc_id = Column(String, ForeignKey("story_arc.id"), nullable=True)
story_arc = relationship("StoryArc", back_populates="issues")
def import_dict(self, import_data: Dict[AnyStr, Any]):
self.id = import_data['id']
self.created_date = import_data['created_date']
self.last_modified_date = import_data['last_modified_date']
self.version = import_data['version']
self.issue_number = import_data['issue_number']
self.in_stock = import_data['in_stock']
self.is_read = import_data['is_read']
self.comic_id = import_data['comic_id']
self.volume_id = import_data['volume_id']
self.story_arc_id = import_data['story_arc_id']
class Artist(Base, BaseMixin):
__tablename__ = "artist"
@@ -94,6 +153,15 @@ class Artist(Base, BaseMixin):
weblink = Column(String, nullable=True)
comic_works = relationship("ComicWork")
def import_dict(self, import_data: Dict[AnyStr, Any]):
self.id = import_data['id']
self.created_date = import_data['created_date']
self.last_modified_date = import_data['last_modified_date']
self.version = import_data['version']
self.name = import_data['name']
if 'weblink' in import_data:
self.weblink = import_data['weblink']
class WorkType(Base, BaseMixin):
__tablename__ = "worktype"
@@ -106,6 +174,13 @@ class WorkType(Base, BaseMixin):
def __str__(self):
return f'{self.name}({self.id})'
def import_dict(self, import_data: Dict[AnyStr, Any]):
self.id = import_data['id']
self.created_date = import_data['created_date']
self.last_modified_date = import_data['last_modified_date']
self.version = import_data['version']
self.name = import_data['name']
class ComicWork(Base, BaseMixin):
__tablename__ = "comic_work"
@@ -116,3 +191,11 @@ class ComicWork(Base, BaseMixin):
work_type_id = Column(String, ForeignKey("worktype.id"), nullable=False)
work_type = relationship("WorkType", back_populates="comic_works")
def import_dict(self, import_data: Dict[AnyStr, Any]):
self.id = import_data['id']
self.created_date = import_data['created_date']
self.last_modified_date = import_data['last_modified_date']
self.version = import_data['version']
self.comic_id = import_data['comic_id']
self.artist_id = import_data['artist_id']
self.work_type_id = import_data['work_type_id']