Exemple #1
0
class Artist(PkModelMixin, db.Model):
    __tablename__ = "artists"

    name = db.Column(db.String)

    genres = db.relationship(Genres, secondary=genre_artist_assoc)

    seeking_venue = db.Column(db.Boolean, nullable=False, default=False)
    seeking_description = db.Column(db.String, nullable=True)

    # MANY artist has ONE city
    city_id = db.Column(db.Integer, db.ForeignKey("cities.id"), nullable=False)
    city = db.relationship(City, back_populates="artists")

    # ONE artist has ONE contact info
    contact_info_id = db.Column(db.Integer,
                                db.ForeignKey("contact_info.id"),
                                nullable=False,
                                unique=True)
    contact_info = db.relationship(ContactInfo,
                                   uselist=False,
                                   cascade="all, delete-orphan",
                                   single_parent=True)

    # ONE artist has MANY shows
    shows = db.relationship(Show,
                            back_populates="artist",
                            cascade="all, delete-orphan")

    def __repr__(self):
        return f"<Artist name:{self.name}>"
Exemple #2
0
class ContactInfo(PkModelMixin, db.Model):
    __tablename__ = "contact_info"

    phone = db.Column(db.String, nullable=False)
    image_link = db.Column(db.String, nullable=False)
    website = db.Column(db.String, nullable=True)
    facebook_link = db.Column(db.String, nullable=True)
Exemple #3
0
class City(PkModelMixin, db.Model):
    __tablename__ = "cities"
    name = db.Column(db.String)

    # MANY city have ONE state
    state_id = db.Column(db.Integer, db.ForeignKey("states.id"))
    state = db.relationship("State", back_populates="cities", lazy="joined")

    # ONE city has MANY venues
    venues = db.relationship("Venue")

    # ONE city has MANY artists
    artists = db.relationship("Artist")

    def __repr__(self):
        return f"<City name:{self.name} state:{self.state}>"
Exemple #4
0
class Show(PkModelMixin, db.Model):
    __tablename__ = "shows"

    start_time = db.Column(db.DateTime, nullable=False)

    artist_id = db.Column(db.Integer,
                          db.ForeignKey("artists.id"),
                          nullable=False)
    artist = db.relationship("Artist", back_populates="shows")

    venue_id = db.Column(db.Integer,
                         db.ForeignKey("venues.id"),
                         nullable=False)
    venue = db.relationship("Venue", back_populates="shows")

    def __repr__(self):
        return f"<Show id:{self.id} start_time:{self.start_time}>"
Exemple #5
0
class State(PkModelMixin, db.Model):
    __tablename__ = "states"
    name = db.Column(db.String)

    # ONE state has MANY cities
    cities = db.relationship("City")

    def __repr__(self):
        return f"<State name:{self.name}>"