50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
from kontor.extensions import db, ma
|
|
from sqlalchemy.sql import func
|
|
|
|
|
|
class Publisher(db.Model):
|
|
# __table__ = db.metadata.tables["publisher"]
|
|
__tablename__ = "publisher"
|
|
__table_args__ = {'extend_existing': True}
|
|
id = db.Column(db.String, primary_key=True)
|
|
created_date = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
|
last_modified_date = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
|
version = db.Column(db.Integer)
|
|
name = db.Column(db.String)
|
|
comics = db.relationship('Comic', back_populates='publisher', lazy='dynamic')
|
|
|
|
|
|
class PublisherSchema(ma.SQLAlchemySchema):
|
|
class Meta:
|
|
model = Publisher
|
|
|
|
comics = ma.List(ma.HyperlinkRelated("comics_api.index"))
|
|
|
|
|
|
publisher_schema = PublisherSchema()
|
|
publishers_schema = PublisherSchema(many=True)
|
|
|
|
|
|
class Comic(db.Model):
|
|
# __table__ = db.metadata.tables["comic"]
|
|
__tablename__ = "comic"
|
|
__table_args__ = {'extend_existing': True}
|
|
id = db.Column(db.String, primary_key=True)
|
|
created_date = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
|
last_modified_date = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
|
version = db.Column(db.Integer)
|
|
title = db.Column(db.String)
|
|
publisher_id = db.Column(db.String, db.ForeignKey("publisher.id"))
|
|
publisher = db.relationship("Publisher", back_populates="comics")
|
|
|
|
|
|
class ComicSchema(ma.SQLAlchemyAutoSchema):
|
|
class Meta:
|
|
model = Comic
|
|
include_fk = True
|
|
publisher = ma.HyperlinkRelated("comics_api.publisher_detail")
|
|
|
|
|
|
comic_schema = ComicSchema()
|
|
comics_schema = ComicSchema(many=True)
|