Spaces:
Sleeping
Sleeping
File size: 8,346 Bytes
560d5c2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 | 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)
|