from typing import List, Optional from sqlalchemy import Column, ForeignKey, Integer, LargeBinary, Table, Text from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship class Base(DeclarativeBase): pass class Genre(Base): __tablename__ = 'Genre' Genre: Mapped[str] = mapped_column(Text) ID: Mapped[Optional[int]] = mapped_column(Integer, primary_key=True) Text_: Mapped[List['Text_']] = relationship('Text_', secondary='Text_Genre', back_populates='Genre_') Werk: Mapped[List['Werk']] = relationship('Werk', secondary='Werk_Genre', back_populates='Genre_') class Herausgeber(Base): __tablename__ = 'Herausgeber' Name: Mapped[str] = mapped_column(Text) ID: Mapped[Optional[int]] = mapped_column(Integer, primary_key=True) Werk: Mapped[List['Werk']] = relationship('Werk', secondary='Werk_Herausgeber', back_populates='Herausgeber_') class Pseudonym(Base): __tablename__ = 'Pseudonym' Pseudonym: Mapped[str] = mapped_column(Text) ID: Mapped[Optional[int]] = mapped_column(Integer, primary_key=True) Veroeffentlichung: Mapped[List['Veroeffentlichung']] = relationship('Veroeffentlichung', back_populates='Pseudonym1') class Sprache(Base): __tablename__ = 'Sprache' Sprache: Mapped[str] = mapped_column(Text) ID: Mapped[Optional[int]] = mapped_column(Integer, primary_key=True) Text_: Mapped[List['Text_']] = relationship('Text_', back_populates='Sprache1') class Textform(Base): __tablename__ = 'Textform' Textform: Mapped[str] = mapped_column(Text) ID: Mapped[Optional[int]] = mapped_column(Integer, primary_key=True) Text_: Mapped[List['Text_']] = relationship('Text_', back_populates='Textform1') class Titelbild(Base): __tablename__ = 'Titelbild' Mimetype: Mapped[str] = mapped_column(Text) Dateiname: Mapped[str] = mapped_column(Text) Dateigroesse: Mapped[int] = mapped_column(Integer) Breite: Mapped[int] = mapped_column(Integer) Hoehe: Mapped[int] = mapped_column(Integer) Bild: Mapped[bytes] = mapped_column(LargeBinary) Thumbnail: Mapped[bytes] = mapped_column(LargeBinary) sha256: Mapped[str] = mapped_column(Text, unique=True) ID: Mapped[Optional[int]] = mapped_column(Integer, primary_key=True) Werk: Mapped[List['Werk']] = relationship('Werk', back_populates='Titelbild1') class Verlag(Base): __tablename__ = 'Verlag' Verlag: Mapped[str] = mapped_column(Text) ID: Mapped[Optional[int]] = mapped_column(Integer, primary_key=True) Reihe: Mapped[List['Reihe']] = relationship('Reihe', back_populates='Verlag1') Werk: Mapped[List['Werk']] = relationship('Werk', back_populates='Verlag1') class Werksform(Base): __tablename__ = 'Werksform' Werksform: Mapped[str] = mapped_column(Text) ID: Mapped[Optional[int]] = mapped_column(Integer, primary_key=True) Werk: Mapped[List['Werk']] = relationship('Werk', back_populates='Werksform1') class Reihe(Base): __tablename__ = 'Reihe' Titel: Mapped[str] = mapped_column(Text) ID: Mapped[Optional[int]] = mapped_column(Integer, primary_key=True) Verlag_: Mapped[Optional[str]] = mapped_column('Verlag', ForeignKey('Verlag.ID')) Verlag1: Mapped[Optional['Verlag']] = relationship('Verlag', back_populates='Reihe') Text_: Mapped[List['Text_']] = relationship('Text_', back_populates='Reihe1') Werk: Mapped[List['Werk']] = relationship('Werk', back_populates='Reihe1') class Text_(Base): __tablename__ = 'Text' Titel: Mapped[str] = mapped_column(Text) ID: Mapped[Optional[int]] = mapped_column(Integer, primary_key=True) Untertitel: Mapped[Optional[str]] = mapped_column(Text) Reihe_: Mapped[Optional[int]] = mapped_column('Reihe', ForeignKey('Reihe.ID')) Textform_: Mapped[Optional[int]] = mapped_column('Textform', ForeignKey('Textform.ID')) Sprache_: Mapped[Optional[int]] = mapped_column('Sprache', ForeignKey('Sprache.ID')) Genre_: Mapped[List['Genre']] = relationship('Genre', secondary='Text_Genre', back_populates='Text_') Reihe1: Mapped[Optional['Reihe']] = relationship('Reihe', back_populates='Text_') Sprache1: Mapped[Optional['Sprache']] = relationship('Sprache', back_populates='Text_') Textform1: Mapped[Optional['Textform']] = relationship('Textform', back_populates='Text_') Veroeffentlichung: Mapped[List['Veroeffentlichung']] = relationship('Veroeffentlichung', back_populates='Text2') class Werk(Base): __tablename__ = 'Werk' Titel: Mapped[str] = mapped_column(Text) ID: Mapped[Optional[int]] = mapped_column(Integer, primary_key=True) Untertitel: Mapped[Optional[str]] = mapped_column(Text) Werksform_: Mapped[Optional[int]] = mapped_column('Werksform', ForeignKey('Werksform.ID')) Verlag_: Mapped[Optional[int]] = mapped_column('Verlag', ForeignKey('Verlag.ID')) Reihe_: Mapped[Optional[int]] = mapped_column('Reihe', ForeignKey('Reihe.ID')) Reihennummer: Mapped[Optional[str]] = mapped_column(Text) Erscheinungsdatum: Mapped[Optional[str]] = mapped_column(Text) ISBN_13: Mapped[Optional[str]] = mapped_column(Text) ISBN_10: Mapped[Optional[str]] = mapped_column(Text) ISSN: Mapped[Optional[str]] = mapped_column(Text) Preis: Mapped[Optional[str]] = mapped_column(Text) Titelbild_: Mapped[Optional[int]] = mapped_column('Titelbild', ForeignKey('Titelbild.ID')) Klappentext: Mapped[Optional[str]] = mapped_column(Text) Anmerkungen: Mapped[Optional[str]] = mapped_column(Text) Genre_: Mapped[List['Genre']] = relationship('Genre', secondary='Werk_Genre', back_populates='Werk') Herausgeber_: Mapped[List['Herausgeber']] = relationship('Herausgeber', secondary='Werk_Herausgeber', back_populates='Werk') Reihe1: Mapped[Optional['Reihe']] = relationship('Reihe', back_populates='Werk') Titelbild1: Mapped[Optional['Titelbild']] = relationship('Titelbild', back_populates='Werk') Verlag1: Mapped[Optional['Verlag']] = relationship('Verlag', back_populates='Werk') Werksform1: Mapped[Optional['Werksform']] = relationship('Werksform', back_populates='Werk') Veroeffentlichung: Mapped[List['Veroeffentlichung']] = relationship('Veroeffentlichung', back_populates='Werk1') t_Text_Genre = Table( 'Text_Genre', Base.metadata, Column('Text', ForeignKey('Text.ID'), primary_key=True), Column('Genre', ForeignKey('Genre.ID'), primary_key=True) ) class Veroeffentlichung(Base): __tablename__ = 'Veroeffentlichung' Text1: Mapped[int] = mapped_column('Text', ForeignKey('Text.ID')) Werk_: Mapped[int] = mapped_column('Werk', ForeignKey('Werk.ID')) Pseudonym_: Mapped[int] = mapped_column('Pseudonym', ForeignKey('Pseudonym.ID')) ID: Mapped[Optional[int]] = mapped_column(Integer, primary_key=True) AltTitel: Mapped[Optional[str]] = mapped_column(Text) AltUntertitel: Mapped[Optional[str]] = mapped_column(Text) Pseudonym1: Mapped['Pseudonym'] = relationship('Pseudonym', back_populates='Veroeffentlichung') Text2: Mapped['Text_'] = relationship('Text_', back_populates='Veroeffentlichung') Werk1: Mapped['Werk'] = relationship('Werk', back_populates='Veroeffentlichung') t_Werk_Genre = Table( 'Werk_Genre', Base.metadata, Column('Werk', ForeignKey('Werk.ID'), primary_key=True), Column('Genre', ForeignKey('Genre.ID'), primary_key=True) ) t_Werk_Herausgeber = Table( 'Werk_Herausgeber', Base.metadata, Column('Herausgeber', ForeignKey('Herausgeber.ID'), primary_key=True), Column('Werk', ForeignKey('Werk.ID'), primary_key=True) )