Skip to content

Commit

Permalink
Merge pull request #44
Browse files Browse the repository at this point in the history
* Refactor schema to use `BaseResource`
* Remove unused imports
  • Loading branch information
bpepple authored Feb 5, 2024
1 parent 410ccc2 commit b927d0f
Show file tree
Hide file tree
Showing 10 changed files with 73 additions and 163 deletions.
22 changes: 2 additions & 20 deletions mokkari/schemas/arc.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,32 +4,14 @@
This module provides the following classes:
- Arc
- BaseArc
"""

from datetime import datetime

from pydantic import HttpUrl

from mokkari.schemas import BaseModel


class BaseArc(BaseModel):
"""
The :obj:`BaseArc` object contains a list of story arcs.
Attributes:
id (int): The Metron identification number for the story arc.
name (str): The name of the story arc.
modified (datetime): The date/time the story arc was last changed.
"""

id: int
name: str
modified: datetime
from mokkari.schemas.base import BaseResource


class Arc(BaseArc):
class Arc(BaseResource):
"""
The Arc object extends :obj:`BaseArc` providing all information for a story arc.
Expand Down
26 changes: 26 additions & 0 deletions mokkari/schemas/base.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
"""
Base module.
This module provides the following classes:
- BaseResource
"""

from datetime import datetime

from mokkari.schemas import BaseModel


class BaseResource(BaseModel):
"""
The :obj:`BaseResource` object contains a list of items for a resource.
Attributes:
id (int): The Metron identification number for the resource.
name (str): The name of the resource.
modified (datetime): The date/time the resource was last changed.
"""

id: int
name: str
modified: datetime
31 changes: 5 additions & 26 deletions mokkari/schemas/character.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,36 +3,15 @@
This module provides the following classes:
- BaseCharacter
- Character
"""

from datetime import datetime

from pydantic import HttpUrl

from mokkari.schemas import BaseModel
from mokkari.schemas.creator import BaseCreator
from mokkari.schemas.team import BaseTeam
from mokkari.schemas.universe import BaseUniverse


class BaseCharacter(BaseModel):
"""
The :obj:`BaseCharacter` object contains a list of characters.
Attributes:
id (int): The Metron identification number for the character.
name (str): The name of the character.
modified (datetime): The date/time the team was last changed.
"""

id: int
name: str
modified: datetime
from mokkari.schemas.base import BaseResource


class Character(BaseCharacter):
class Character(BaseResource):
"""
The Character object extends :obj:`BaseCharacter` providing all information for a character.
Expand All @@ -49,8 +28,8 @@ class Character(BaseCharacter):
alias: list[str] | None = None
desc: str | None = None
image: HttpUrl | None = None
creators: list[BaseCreator] = []
teams: list[BaseTeam] = []
universes: list[BaseUniverse] = []
creators: list[BaseResource] = []
teams: list[BaseResource] = []
universes: list[BaseResource] = []
cv_id: int | None = None
resource_url: HttpUrl
22 changes: 3 additions & 19 deletions mokkari/schemas/creator.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,33 +3,17 @@
This module provides the following classes:
- BaseCreator
- Creator
"""

from datetime import date, datetime
from datetime import date

from pydantic import HttpUrl, PastDate

from mokkari.schemas import BaseModel
from mokkari.schemas.base import BaseResource


class BaseCreator(BaseModel):
"""
The :obj:`BaseCreator` object contains a list of creators.
Attributes:
id (int): The Metron identification number for the creator.
name (str): The name of the creator.
modified (datetime): The date/time the team was last changed.
"""

id: int
name: str
modified: datetime


class Creator(BaseCreator):
class Creator(BaseResource):
"""
The Creator object extends :obj:`BaseCreator` providing all information for a creator.
Expand Down
13 changes: 5 additions & 8 deletions mokkari/schemas/issue.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,9 @@
from pydantic import Field, HttpUrl

from mokkari.schemas import BaseModel
from mokkari.schemas.arc import BaseArc
from mokkari.schemas.character import BaseCharacter
from mokkari.schemas.base import BaseResource
from mokkari.schemas.generic import GenericItem
from mokkari.schemas.reprint import Reprint
from mokkari.schemas.team import BaseTeam
from mokkari.schemas.universe import BaseUniverse
from mokkari.schemas.variant import Variant


Expand Down Expand Up @@ -152,11 +149,11 @@ class Issue(CommonIssue):
upc: str | None = None
page_count: int | None = Field(alias="page", default=None)
desc: str | None = None
arcs: list[BaseArc] = []
arcs: list[BaseResource] = []
credits: list[Credit] = []
characters: list[BaseCharacter] = []
teams: list[BaseTeam] = []
universes: list[BaseUniverse] = []
characters: list[BaseResource] = []
teams: list[BaseResource] = []
universes: list[BaseResource] = []
reprints: list[Reprint] = []
variants: list[Variant] = []
cv_id: int | None = None
Expand Down
22 changes: 2 additions & 20 deletions mokkari/schemas/publisher.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,33 +3,15 @@
This module provides the following classes:
- BasePublisher
- Publisher
"""

from datetime import datetime

from pydantic import HttpUrl

from mokkari.schemas import BaseModel


class BasePublisher(BaseModel):
"""
The :obj:`BasePublisher` object contains a list of publishers.
Attributes:
id (int): The Metron identification number for the publisher.
name (str): The name of the publisher.
modified (datetime): The date/time the team was last changed.
"""

id: int
name: str
modified: datetime
from mokkari.schemas.base import BaseResource


class Publisher(BasePublisher):
class Publisher(BaseResource):
"""
The Publisher object extends :obj:`BasePublisher` providing all information for a publisher.
Expand Down
31 changes: 4 additions & 27 deletions mokkari/schemas/team.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,38 +3,15 @@
This module provides the following classes:
- BaseTeam
- Team
"""

from datetime import datetime

from pydantic import HttpUrl

from mokkari.schemas import BaseModel
from mokkari.schemas.creator import BaseCreator
from mokkari.schemas.universe import BaseUniverse


class BaseTeam(BaseModel):
"""
The :obj:`BaseTeam` object contains a list of teams.
Attributes:
id (int): The Metron identification number for the team.
name (str): The name of the team.
modified (datetime): The date/time the team was last changed.
Returns:
A list of teams.
"""

id: int
name: str
modified: datetime
from mokkari.schemas.base import BaseResource


class Team(BaseTeam):
class Team(BaseResource):
"""
The Team object extends the :obj:`BaseTeam` by containing all information for a team.
Expand All @@ -48,7 +25,7 @@ class Team(BaseTeam):

desc: str | None = None
image: HttpUrl | None = None
creators: list[BaseCreator] = []
universes: list[BaseUniverse] = []
creators: list[BaseResource] = []
universes: list[BaseResource] = []
cv_id: int | None = None
resource_url: HttpUrl
28 changes: 4 additions & 24 deletions mokkari/schemas/universe.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,39 +3,18 @@
This module provides the following classes:
- BaseUniverse
- Universe
"""

from datetime import datetime

from pydantic import HttpUrl

from mokkari.schemas import BaseModel
from mokkari.schemas.base import BaseResource
from mokkari.schemas.generic import GenericItem


class BaseUniverse(BaseModel):
"""
The :obj:`BaseUniverse` object contains a list of universes.
Attributes:
id (int): The Metron identification number for the universe.
name (str): The name of the universe.
modified (datetime): The date/time the universe was last changed.
Returns:
A list of universes.
"""

id: int
name: str
modified: datetime


class Universe(BaseUniverse):
class Universe(BaseResource):
"""
The Universe object extends the :obj:`BaseUniverse` by containing all information for a universe.
The Universe object extends the :obj:`BaseUniverse` by containing information for a universe.
Attributes:
publisher (int): The Metron identification number for the publisher
Expand All @@ -44,6 +23,7 @@ class Universe(BaseUniverse):
image (url): The url for an image associated with the universe.
resource_url (url): The url for the resource.
"""

publisher: GenericItem
designation: str | None = None
desc: str | None = None
Expand Down
Loading

0 comments on commit b927d0f

Please sign in to comment.