Jakub Miazek 7ce760fa04 lint
2022-04-23 20:17:06 +02:00

119 lines
4.7 KiB
Python

from sqlalchemy import (Column, ForeignKeyConstraint, Integer,
PrimaryKeyConstraint, String, Table, Text,
UniqueConstraint)
from sqlalchemy.orm import declarative_base, relationship
Base = declarative_base()
metadata = Base.metadata
class Character(Base):
__tablename__ = 'character'
__table_args__ = (
PrimaryKeyConstraint('id', name='character_pkey'),
{'schema': 'shakespeare'}
)
id = Column(String(32))
name = Column(String(64), nullable=False)
speech_count = Column(Integer, nullable=False)
abbrev = Column(String(32))
description = Column(String(2056))
work = relationship('Work', secondary='shakespeare.character_work', back_populates='character')
paragraph = relationship('Paragraph', back_populates='character')
class Wordform(Base):
__tablename__ = 'wordform'
__table_args__ = (
PrimaryKeyConstraint('id', name='wordform_pkey'),
{'schema': 'shakespeare'}
)
id = Column(Integer)
plain_text = Column(String(64), nullable=False)
phonetic_text = Column(String(64), nullable=False)
stem_text = Column(String(64), nullable=False)
occurences = Column(Integer, nullable=False)
class Work(Base):
__tablename__ = 'work'
__table_args__ = (
PrimaryKeyConstraint('id', name='work_pkey'),
{'schema': 'shakespeare'}
)
id = Column(String(32))
title = Column(String(32), nullable=False)
long_title = Column(String(64), nullable=False)
year = Column(Integer, nullable=False)
genre_type = Column(String(1), nullable=False)
source = Column(String(16), nullable=False)
total_words = Column(Integer, nullable=False)
total_paragraphs = Column(Integer, nullable=False)
notes = Column(Text)
character = relationship('Character', secondary='shakespeare.character_work', back_populates='work')
chapter = relationship('Chapter', back_populates='work')
paragraph = relationship('Paragraph', back_populates='work')
class Chapter(Base):
__tablename__ = 'chapter'
__table_args__ = (
ForeignKeyConstraint(['work_id'], ['shakespeare.work.id'], name='chapter_work_id_fkey'),
PrimaryKeyConstraint('id', name='chapter_pkey'),
UniqueConstraint('work_id', 'section_number', 'chapter_number', name='chapter_work_id_section_number_chapter_number_key'),
{'schema': 'shakespeare'}
)
id = Column(Integer)
work_id = Column(ForeignKey('shakespeare.work.id'), nullable=False)
section_number = Column(Integer, nullable=False)
chapter_number = Column(Integer, nullable=False)
description = Column(String(256), nullable=False)
work = relationship('Work', back_populates='chapter')
paragraph = relationship('Paragraph', back_populates='chapter')
t_character_work = Table(
'character_work', metadata,
Column('character_id', ForeignKey('shakespeare.character.id'), nullable=False),
Column('work_id', ForeignKey('shakespeare.work.id'), nullable=False),
ForeignKeyConstraint(['character_id'], ['shakespeare.character.id'], name='character_work_character_id_fkey'),
ForeignKeyConstraint(['work_id'], ['shakespeare.work.id'], name='character_work_work_id_fkey'),
PrimaryKeyConstraint('character_id', 'work_id', name='character_work_pkey'),
schema='shakespeare'
)
class Paragraph(Base):
__tablename__ = 'paragraph'
__table_args__ = (
ForeignKeyConstraint(['character_id'], ['shakespeare.character.id'], name='paragraph_character_id_fkey'),
ForeignKeyConstraint(['work_id', 'section_number', 'chapter_number'], ['shakespeare.chapter.work_id', 'shakespeare.chapter.section_number', 'shakespeare.chapter.chapter_number'], name='paragraph_chapter_fkey'),
ForeignKeyConstraint(['work_id'], ['shakespeare.work.id'], name='paragraph_work_id_fkey'),
PrimaryKeyConstraint('id', name='paragraph_pkey'),
{'schema': 'shakespeare'}
)
id = Column(Integer)
work_id = Column(ForeignKey('shakespeare.work.id'), nullable=False)
paragraph_num = Column(Integer, nullable=False)
character_id = Column(ForeignKey('shakespeare.character.id'), nullable=False)
plain_text = Column(Text, nullable=False)
phonetic_text = Column(Text, nullable=False)
stem_text = Column(Text, nullable=False)
paragraph_type = Column(String(1), nullable=False)
section_number = Column(Integer, nullable=False)
chapter_number = Column(Integer, nullable=False)
char_count = Column(Integer, nullable=False)
word_count = Column(Integer, nullable=False)
character = relationship('Character', back_populates='paragraph')
chapter = relationship('Chapter', back_populates='paragraph')
work = relationship('Work', back_populates='paragraph')