Add bindings and reformat

This commit is contained in:
Luke Murphy 2020-02-27 19:46:25 +00:00
parent dd4919dd30
commit 6473216fcb
No known key found for this signature in database
GPG Key ID: 5E2EF5A63E3718CC
2 changed files with 248 additions and 1 deletions

248
calibrestekje/bindings.py Normal file
View File

@ -0,0 +1,248 @@
"""SQLAlchemy generated Calibre database bindings."""
from sqlalchemy import (
TIMESTAMP,
Boolean,
CheckConstraint,
Column,
Float,
ForeignKey,
Integer,
LargeBinary,
Table,
Text,
UniqueConstraint,
text,
)
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
Base = declarative_base()
metadata = Base.metadata
books_authors_link = Table(
"books_authors_link",
Base.metadata,
Column("book", Integer, ForeignKey("books.id"), primary_key=True),
Column("author", Integer, ForeignKey("authors.id"), primary_key=True),
)
books_tags_link = Table(
"books_tags_link",
Base.metadata,
Column("book", Integer, ForeignKey("books.id"), primary_key=True),
Column("tag", Integer, ForeignKey("tags.id"), primary_key=True),
)
books_series_link = Table(
"books_series_link",
Base.metadata,
Column("book", Integer, ForeignKey("books.id"), primary_key=True),
Column("series", Integer, ForeignKey("series.id"), primary_key=True),
)
books_ratings_link = Table(
"books_ratings_link",
Base.metadata,
Column("book", Integer, ForeignKey("books.id"), primary_key=True),
Column("rating", Integer, ForeignKey("ratings.id"), primary_key=True),
)
books_languages_link = Table(
"books_languages_link",
Base.metadata,
Column("book", Integer, ForeignKey("books.id"), primary_key=True),
Column("lang_code", Integer, ForeignKey("languages.id"), primary_key=True),
)
books_publishers_link = Table(
"books_publishers_link",
Base.metadata,
Column("book", Integer, ForeignKey("books.id"), primary_key=True),
Column("publisher", Integer, ForeignKey("publishers.id"), primary_key=True),
)
class Author(Base):
__tablename__ = "authors"
id = Column(Integer, primary_key=True)
name = Column(Text, nullable=False, unique=True)
sort = Column(Text)
link = Column(Text, nullable=False, server_default=text('""'))
class Book(Base):
__tablename__ = "books"
id = Column(Integer, primary_key=True)
title = Column(Text, nullable=False, server_default=text("'Unknown'"))
sort = Column(Text, index=True)
timestamp = Column(TIMESTAMP, server_default=text("CURRENT_TIMESTAMP"))
pubdate = Column(TIMESTAMP, server_default=text("CURRENT_TIMESTAMP"))
series_index = Column(Float, nullable=False, server_default=text("1.0"))
author_sort = Column(Text, index=True)
isbn = Column(Text, server_default=text('""'))
lccn = Column(Text, server_default=text('""'))
path = Column(Text, nullable=False, server_default=text('""'))
flags = Column(Integer, nullable=False, server_default=text("1"))
uuid = Column(Text)
has_cover = Column(Boolean, server_default=text("0"))
last_modified = Column(
TIMESTAMP,
nullable=False,
server_default=text('"2000-01-01 00:00:00+00:00"'),
)
authors = relationship(
"Author", secondary=books_authors_link, backref="books"
)
tags = relationship(
"Tag", secondary=books_tags_link, backref="books", order_by="Tag.name"
)
comments = relationship("Comment", backref="books")
data = relationship("Datum", backref="books")
series = relationship(
"Series", secondary=books_series_link, backref="books"
)
ratings = relationship(
"Rating", secondary=books_ratings_link, backref="books"
)
languages = relationship(
"Language", secondary=books_languages_link, backref="books"
)
publishers = relationship(
"Publisher", secondary=books_publishers_link, backref="books"
)
identifiers = relationship("Identifier", backref="books")
class BooksPluginDatum(Base):
__tablename__ = "books_plugin_data"
__table_args__ = (UniqueConstraint("book", "name"),)
id = Column(Integer, primary_key=True)
book = Column(Integer, ForeignKey("books.id"), nullable=False)
name = Column(Text, nullable=False)
val = Column(Text, nullable=False)
class Comment(Base):
__tablename__ = "comments"
id = Column(Integer, primary_key=True)
book = Column(Integer, ForeignKey("books.id"))
text = Column(Text, nullable=False)
class ConversionOption(Base):
__tablename__ = "conversion_options"
__table_args__ = (UniqueConstraint("format", "book"),)
id = Column(Integer, primary_key=True)
format = Column(Text, nullable=False, index=True)
book = Column(Integer, ForeignKey("books.id"), index=True)
data = Column(LargeBinary, ForeignKey("data.id"), nullable=False)
class CustomColumn(Base):
__tablename__ = "custom_columns"
id = Column(Integer, primary_key=True)
label = Column(Text, nullable=False, unique=True)
name = Column(Text, nullable=False)
datatype = Column(Text, nullable=False)
mark_for_delete = Column(Boolean, nullable=False, server_default=text("0"))
editable = Column(Boolean, nullable=False, server_default=text("1"))
display = Column(Text, nullable=False, server_default=text('"{}"'))
is_multiple = Column(Boolean, nullable=False, server_default=text("0"))
normalized = Column(Boolean, nullable=False)
class Datum(Base):
__tablename__ = "data"
__table_args__ = (UniqueConstraint("book", "format"),)
id = Column(Integer, primary_key=True)
book = Column(Integer, ForeignKey("books.id"), nullable=False, index=True)
format = Column(Text, nullable=False, index=True)
uncompressed_size = Column(Integer, nullable=False)
name = Column(Text, nullable=False)
class Feed(Base):
__tablename__ = "feeds"
id = Column(Integer, primary_key=True)
title = Column(Text, nullable=False, unique=True)
script = Column(Text, nullable=False)
class Identifier(Base):
__tablename__ = "identifiers"
__table_args__ = (UniqueConstraint("book", "type"),)
id = Column(Integer, primary_key=True)
book = Column(Integer, ForeignKey("books.id"))
type = Column(Text, nullable=False, server_default=text('"isbn"'))
val = Column(Text, nullable=False)
class Language(Base):
__tablename__ = "languages"
id = Column(Integer, primary_key=True)
lang_code = Column(Text, nullable=False, unique=True)
class LibraryId(Base):
__tablename__ = "library_id"
id = Column(Integer, primary_key=True)
uuid = Column(Text, nullable=False, unique=True)
class MetadataDirtied(Base):
__tablename__ = "metadata_dirtied"
id = Column(Integer, primary_key=True)
book = Column(Integer, ForeignKey("books.id"), nullable=False, unique=True)
class Preference(Base):
__tablename__ = "preferences"
id = Column(Integer, primary_key=True)
key = Column(Text, nullable=False, unique=True)
val = Column(Text, nullable=False)
class Publisher(Base):
__tablename__ = "publishers"
id = Column(Integer, primary_key=True)
name = Column(Text, nullable=False, unique=True)
sort = Column(Text)
class Rating(Base):
__tablename__ = "ratings"
__table_args__ = (CheckConstraint("rating > -1 AND rating < 11"),)
id = Column(Integer, primary_key=True)
rating = Column(Integer, unique=True)
class Series(Base):
__tablename__ = "series"
id = Column(Integer, primary_key=True)
name = Column(Text, nullable=False, unique=True)
sort = Column(Text)
class Tag(Base):
__tablename__ = "tags"
id = Column(Integer, primary_key=True)
name = Column(Text, nullable=False, unique=True)

View File

@ -1 +0,0 @@
"""Calibre database bindings for library prototyping."""