Spaces:
Sleeping
Sleeping
| from sqlalchemy import ( | |
| Boolean, | |
| Column, | |
| DateTime, | |
| ForeignKey, | |
| Integer, | |
| Numeric, | |
| SmallInteger, | |
| String, | |
| Text, | |
| ) | |
| from sqlalchemy.orm import relationship | |
| from .database import Base | |
| class Actor(Base): | |
| __tablename__ = "actor" | |
| actor_id = Column(Integer, primary_key=True) | |
| first_name = Column(String(45), nullable=False) | |
| last_name = Column(String(45), nullable=False) | |
| last_update = Column(DateTime, nullable=False) | |
| films = relationship("Film", secondary="film_actor", back_populates="actors") | |
| class Category(Base): | |
| __tablename__ = "category" | |
| category_id = Column(SmallInteger, primary_key=True) | |
| name = Column(String(25), nullable=False) | |
| last_update = Column(DateTime, nullable=False) | |
| films = relationship("Film", secondary="film_category", back_populates="categories") | |
| class Film(Base): | |
| __tablename__ = "film" | |
| film_id = Column(Integer, primary_key=True) | |
| title = Column(String(255), nullable=False) | |
| description = Column(Text) | |
| release_year = Column(String(4)) | |
| language_id = Column(SmallInteger, ForeignKey("language.language_id"), nullable=False) | |
| original_language_id = Column(SmallInteger, ForeignKey("language.language_id")) | |
| rental_duration = Column(SmallInteger, nullable=False, default=3) | |
| rental_rate = Column(Numeric(4, 2), nullable=False, default=4.99) | |
| length = Column(SmallInteger) | |
| replacement_cost = Column(Numeric(5, 2), nullable=False, default=19.99) | |
| rating = Column(String(10), default="G") | |
| special_features = Column(String(100)) | |
| last_update = Column(DateTime, nullable=False) | |
| language = relationship("Language", foreign_keys=[language_id]) | |
| original_language = relationship("Language", foreign_keys=[original_language_id]) | |
| inventory = relationship("Inventory", back_populates="film") | |
| actors = relationship("Actor", secondary="film_actor", back_populates="films") | |
| categories = relationship("Category", secondary="film_category", back_populates="films") | |
| class Customer(Base): | |
| __tablename__ = "customer" | |
| customer_id = Column(Integer, primary_key=True) | |
| store_id = Column(Integer, ForeignKey("store.store_id"), nullable=False) | |
| first_name = Column(String(45), nullable=False) | |
| last_name = Column(String(45), nullable=False) | |
| email = Column(String(50)) | |
| address_id = Column(Integer, ForeignKey("address.address_id"), nullable=False) | |
| active = Column(Boolean, nullable=False, default=True) | |
| create_date = Column(DateTime, nullable=False) | |
| last_update = Column(DateTime, nullable=False) | |
| store = relationship("Store", back_populates="customers") | |
| address = relationship("Address", back_populates="customers") | |
| rentals = relationship("Rental", back_populates="customer") | |
| payments = relationship("Payment", back_populates="customer") | |
| class Store(Base): | |
| __tablename__ = "store" | |
| store_id = Column(Integer, primary_key=True) | |
| manager_staff_id = Column(SmallInteger, ForeignKey("staff.staff_id"), nullable=False) | |
| address_id = Column(Integer, ForeignKey("address.address_id"), nullable=False) | |
| last_update = Column(DateTime, nullable=False) | |
| address = relationship("Address", back_populates="stores") | |
| manager = relationship("Staff", foreign_keys=[manager_staff_id]) | |
| inventory = relationship("Inventory", back_populates="store") | |
| customers = relationship("Customer", back_populates="store") | |
| class Rental(Base): | |
| __tablename__ = "rental" | |
| rental_id = Column(Integer, primary_key=True) | |
| rental_date = Column(DateTime, nullable=False) | |
| inventory_id = Column(Integer, ForeignKey("inventory.inventory_id"), nullable=False) | |
| customer_id = Column(Integer, ForeignKey("customer.customer_id"), nullable=False) | |
| return_date = Column(DateTime) | |
| staff_id = Column(SmallInteger, ForeignKey("staff.staff_id"), nullable=False) | |
| last_update = Column(DateTime, nullable=False) | |
| inventory = relationship("Inventory", back_populates="rentals") | |
| customer = relationship("Customer", back_populates="rentals") | |
| staff = relationship("Staff", back_populates="rentals") | |
| payments = relationship("Payment", back_populates="rental") | |
| class Payment(Base): | |
| __tablename__ = "payment" | |
| payment_id = Column(Integer, primary_key=True) | |
| customer_id = Column(Integer, ForeignKey("customer.customer_id"), nullable=False) | |
| staff_id = Column(SmallInteger, ForeignKey("staff.staff_id"), nullable=False) | |
| rental_id = Column(Integer, ForeignKey("rental.rental_id")) | |
| amount = Column(Numeric(5, 2), nullable=False) | |
| payment_date = Column(DateTime, nullable=False) | |
| last_update = Column(DateTime, nullable=False) | |
| customer = relationship("Customer", back_populates="payments") | |
| staff = relationship("Staff", back_populates="payments") | |
| rental = relationship("Rental", back_populates="payments") | |
| class Country(Base): | |
| __tablename__ = "country" | |
| country_id = Column(SmallInteger, primary_key=True) | |
| country = Column(String(50), nullable=False) | |
| last_update = Column(DateTime) | |
| cities = relationship("City", back_populates="country") | |
| class City(Base): | |
| __tablename__ = "city" | |
| city_id = Column(Integer, primary_key=True) | |
| city = Column(String(50), nullable=False) | |
| country_id = Column(SmallInteger, ForeignKey("country.country_id"), nullable=False) | |
| last_update = Column(DateTime, nullable=False) | |
| country = relationship("Country", back_populates="cities") | |
| addresses = relationship("Address", back_populates="city") | |
| class Address(Base): | |
| __tablename__ = "address" | |
| address_id = Column(Integer, primary_key=True) | |
| address = Column(String(50), nullable=False) | |
| address2 = Column(String(50)) | |
| district = Column(String(20), nullable=False) | |
| city_id = Column(Integer, ForeignKey("city.city_id"), nullable=False) | |
| postal_code = Column(String(10)) | |
| phone = Column(String(20), nullable=False) | |
| last_update = Column(DateTime, nullable=False) | |
| city = relationship("City", back_populates="addresses") | |
| stores = relationship("Store", back_populates="address") | |
| customers = relationship("Customer", back_populates="address") | |
| staff = relationship("Staff", back_populates="address") | |
| class Staff(Base): | |
| __tablename__ = "staff" | |
| staff_id = Column(SmallInteger, primary_key=True) | |
| first_name = Column(String(45), nullable=False) | |
| last_name = Column(String(45), nullable=False) | |
| address_id = Column(Integer, ForeignKey("address.address_id"), nullable=False) | |
| picture = Column(Text) | |
| email = Column(String(50)) | |
| store_id = Column(Integer, ForeignKey("store.store_id"), nullable=False) | |
| active = Column(SmallInteger, nullable=False, default=1) | |
| username = Column(String(16), nullable=False) | |
| password = Column(String(40)) | |
| last_update = Column(DateTime, nullable=False) | |
| address = relationship("Address", back_populates="staff") | |
| store = relationship("Store", foreign_keys=[store_id]) | |
| rentals = relationship("Rental", back_populates="staff") | |
| payments = relationship("Payment", back_populates="staff") | |
| class Language(Base): | |
| __tablename__ = "language" | |
| language_id = Column(SmallInteger, primary_key=True) | |
| name = Column(String(20), nullable=False) | |
| last_update = Column(DateTime, nullable=False) | |
| class Inventory(Base): | |
| __tablename__ = "inventory" | |
| inventory_id = Column(Integer, primary_key=True) | |
| film_id = Column(Integer, ForeignKey("film.film_id"), nullable=False) | |
| store_id = Column(Integer, ForeignKey("store.store_id"), nullable=False) | |
| last_update = Column(DateTime, nullable=False) | |
| film = relationship("Film", back_populates="inventory") | |
| store = relationship("Store", back_populates="inventory") | |
| rentals = relationship("Rental", back_populates="inventory") | |
| class FilmActor(Base): | |
| __tablename__ = "film_actor" | |
| actor_id = Column(Integer, ForeignKey("actor.actor_id"), primary_key=True) | |
| film_id = Column(Integer, ForeignKey("film.film_id"), primary_key=True) | |
| last_update = Column(DateTime, nullable=False) | |
| class FilmCategory(Base): | |
| __tablename__ = "film_category" | |
| film_id = Column(Integer, ForeignKey("film.film_id"), primary_key=True) | |
| category_id = Column(SmallInteger, ForeignKey("category.category_id"), primary_key=True) | |
| last_update = Column(DateTime, nullable=False) | |