class Availability(db.Model): __tablename__ = 'availability' id = db.Column(db.Integer, primary_key=True) artist_id = db.Column(db.Integer, db.ForeignKey('artists.id')) from_time = db.Column(db.DateTime, nullable=False) to_time = db.Column(db.DateTime, nullable=False)
class Show(db.Model): __tablename__ = 'shows' id = db.Column(db.Integer, primary_key=True) artist_id = db.Column(db.Integer, db.ForeignKey('artists.id'), nullable=False) venue_id = db.Column(db.Integer, db.ForeignKey('venues.id'), nullable=False) start_time = db.Column(db.DateTime, nullable=False) created_at = db.Column(db.DateTime, nullable=False, server_default=func.now()) def is_past(self): if self.start_time < datetime.today(): return True return False def artist_dict(self): return { 'artist_id': self.artist_id, 'artist_name': self.artist.name, 'artist_image_link': self.artist.image_link, 'start_time': self.start_time.strftime('%Y-%m-%d %H:%M:%S') } def venue_dict(self): return { "venue_id": self.venue_id, "venue_name": self.venue.name, "venue_image_link": self.venue.image_link, "start_time": self.start_time.strftime('%Y-%m-%d %H:%M:%S') }
class City(db.Model): __tablename__ = 'City' id = db.Column(db.Integer, primary_key=True) city = db.Column(db.String(120), nullable=False, unique=True) state_id = db.Column(db.Integer, db.ForeignKey('State.id'), nullable=False) venues = db.relationship('Venue', backref='city_', lazy=True) artists = db.relationship('Artist', backref='city_', lazy=True)
class Show(db.Model): __tablename__ = 'Show' id = db.Column(db.Integer, primary_key=True) start_time = db.Column(db.DateTime, nullable=False) end_time = db.Column(db.DateTime, nullable=False) venue_id = db.Column(db.Integer, db.ForeignKey('Venue.id'), nullable=False) artist_id = db.Column(db.Integer, db.ForeignKey('Artist.id'), nullable=False)
class Show(db.Model): __tablename__ = 'Show' id = db.Column(db.Integer, primary_key=True) start_time = db.Column(db.DateTime()) artist_id = db.Column(db.Integer, db.ForeignKey('Artist.id')) artist = db.relationship('Artist', backref=db.backref('shows', cascade="all,delete")) venue_id = db.Column(db.Integer, db.ForeignKey('Venue.id')) venue = db.relationship('Venue', backref=db.backref('shows', cascade="all,delete"))
class Show(db.Model): __tablename__ = 'Show' id = db.Column(db.Integer, primary_key=True) start_time = db.Column(db.DateTime(), nullable=False) venue_id = db.Column(db.Integer, db.ForeignKey('Venue.id'), nullable=False) artist_id = db.Column(db.Integer, db.ForeignKey('Artist.id'), nullable=False) def __repr__(self): return f'{self.id}: Show starts at {self.start_time}'
class Show(db.Model): __tablename__ = 'show' id = db.Column(db.Integer, primary_key=True) venue_id = db.Column(db.Integer, db.ForeignKey('venue.id'), nullable=False) artist_id = db.Column(db.Integer, db.ForeignKey('artist.id'), nullable=False) start_time = db.Column(db.TIMESTAMP(timezone=True)) venue = db.relationship('Venue', backref='show_venue') artist = db.relationship('Artist', backref='show_artist')
class Genre(db.Model): __tablename__ = 'genres' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String) created_at = db.Column( db.DateTime, nullable=True, ) updated_at = db.Column( db.DateTime, nullable=True, )
class Venue(db.Model): __tablename__ = 'Venue' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String) address = db.Column(db.String(120)) phone = db.Column(db.String(120)) website = db.Column(db.String(256)) image_link = db.Column(db.String(500)) facebook_link = db.Column(db.String(120)) seeking_talent = db.Column(db.Boolean, unique=False, default=True) seeking_description = db.Column(db.Text(), nullable=True) city_id = db.Column(db.Integer, db.ForeignKey('City.id'), nullable=False) shows = db.relationship('Show', backref='venue_', lazy=True) genres = db.relationship('Genre', secondary=venue_genres, lazy='subquery', backref=db.backref('venue_', lazy='dynamic'))
class Show(db.Model): __tablename__ = 'shows' id = db.Column(db.Integer, primary_key=True) artist_id = db.Column(db.Integer, db.ForeignKey('artists.id'), nullable=False) venue_id = db.Column(db.Integer, db.ForeignKey('venues.id'), nullable=False) start_time = db.Column(db.DateTime, nullable=True) created_at = db.Column( db.DateTime, nullable=True, ) updated_at = db.Column( db.DateTime, nullable=True, )
class Artist(db.Model): __tablename__ = 'artists' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, nullable=False) city = db.Column(db.String(120)) state = db.Column(db.String(120), nullable=False) phone = db.Column(db.String(120)) genres = db.Column(db.String(120)) image_link = db.Column(db.String(500)) facebook_link = db.Column(db.String(120)) website_link = db.Column(db.String) seeking_venue = db.Column(db.Boolean, default=False) seeking_description = db.Column(db.String) shows = db.relationship('Show', backref='artist', lazy=True) availability = db.relationship('Availability', backref='artist', lazy=True)
class Venue(db.Model): __tablename__ = 'Venue' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, nullable=False, unique=True) genres = db.Column(db.String(120)) city = db.Column(db.String(120), nullable=False) state = db.Column(db.String(120), nullable=False) address = db.Column(db.String(120)) phone = db.Column(db.String(120)) website = db.Column(db.String(120)) seeking_talent = db.Column(db.Boolean) seeking_description = db.Column(db.String(120)) image_link = db.Column(db.String(500)) facebook_link = db.Column(db.String(120)) # past_shows_count = db.Column(db.Integer, nullable=False) # upcoming_shows_count = db.Column(db.Integer, nullable=False) # Done: implement any missing fields, as a database migration using Flask-Migrate shows_venue = db.relationship('Show', backref='venue', lazy=True) def __repr__(self): return f"Venue ID: {self.id} Venue name: {self.name}"
venues = db.relationship('Venue', backref='city_', lazy=True) artists = db.relationship('Artist', backref='city_', lazy=True) class Genre(db.Model): __tablename__ = 'Genre' id = db.Column(db.Integer, primary_key=True) genre = db.Column(db.String(120), nullable=False, unique=True) # Many to Many association table for venue and genres venue_genres = db.Table( 'Venue_Genres', db.Column('venue_id', db.Integer, db.ForeignKey('Venue.id'), primary_key=True), db.Column('genre_id', db.Integer, db.ForeignKey('Genre.id'), primary_key=True)) class Venue(db.Model): __tablename__ = 'Venue' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String) address = db.Column(db.String(120)) phone = db.Column(db.String(120)) website = db.Column(db.String(256))
class Artist(db.Model): __tablename__ = 'artists' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String) city = db.Column(db.String(120)) state = db.Column(db.String(120)) phone = db.Column(db.String(120)) image_link = db.Column(db.String(500)) website = db.Column(db.String(120)) facebook_link = db.Column(db.String(120)) seeking_venue = db.Column(db.Boolean, nullable=False, default=False) seeking_description = db.Column(db.String(120)) created_at = db.Column(db.DateTime, nullable=False, server_default=func.now()) genres = db.relationship('Genre', secondary=artists_genres, backref=db.backref('artists', lazy=True)) shows = db.relationship('Show', backref='artist', lazy='dynamic') def past_shows(self): return self.shows.filter(Show.start_time < datetime.today()).all() def past_shows_count(self): return self.shows.filter(Show.start_time < datetime.today()).count() def upcoming_shows(self): return self.shows.filter(Show.start_time > datetime.today()).all() def upcoming_shows_count(self): return self.shows.filter(Show.start_time > datetime.today()).count() def to_dict(self): return { 'id': self.id, 'name': self.name, 'city': self.city, 'state': self.state, 'phone': self.phone, 'genres': [g.name for g in self.genres], 'image_link': self.image_link, 'facebook_link': self.facebook_link, 'website': self.website, 'seeking_venue': self.seeking_venue, 'seeking_description': self.seeking_description }
class Venue(db.Model): __tablename__ = 'venues' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, nullable=False) city = db.Column(db.String(120)) state = db.Column(db.String(120), nullable=False) address = db.Column(db.String(120)) phone = db.Column(db.String(120)) image_link = db.Column(db.String(500)) genres = db.Column(db.String, nullable=False) facebook_link = db.Column(db.String(120)) website = db.Column(db.String(120)) seeking_talent = db.Column(db.Boolean, default=False) seeking_description = db.Column(db.String) shows = db.relationship('Show', backref='venue') def __repr__(self): return f'<Venue {self.id}, {self.name}, {self.city}, {self.state}>'
class Artist(db.Model): __tablename__ = 'artist' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String) genres = db.Column(db.ARRAY(db.String)) city = db.Column(db.String(120)) state = db.Column(db.String(120)) # limit phone to 10 digits phone = db.Column(db.String(10)) website = db.Column(db.String(120)) facebook_link = db.Column(db.String(120)) image_link = db.Column(db.String(500)) seeking_venue = db.Column(db.Boolean) seeking_description = db.Column(db.String) # tell the DB to calculate the value itself # use server_default instead of default - should end up in CREATE TABLE time_created = db.Column(postgresql.TIMESTAMP(timezone=True), server_default=func.now()) # server_onupdate doesn't do anything serverside time_updated = db.Column(postgresql.TIMESTAMP(timezone=True), onupdate=func.now()) artist_shows = db.relationship('Show', backref='artist_shows', lazy=True)
class Artist(db.Model): __tablename__ = 'artists' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String) city = db.Column(db.String(120)) state = db.Column(db.String(120)) phone = db.Column(db.String(120), nullable=True) seeking_venue = db.Column(db.Boolean, default=True) website = db.Column(db.String(120)) facebook_link = db.Column(db.String(120)) image_link = db.Column( db.String(500), default= 'https://images.unsplash.com/photo-1549213783-8284d0336c4f?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=300&q=80' ) seeking_description = db.Column(db.Text, nullable=True) shows = db.relationship('Show', backref='Artist', lazy=True) genres = db.relationship('Genre', secondary=ArtistGenre, backref=db.backref('Artist', lazy=True)) created_at = db.Column( db.DateTime, nullable=True, ) updated_at = db.Column( db.DateTime, nullable=True, )
class Venue(db.Model): __tablename__ = 'venues' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String) address = db.Column(db.String(120)) city = db.Column(db.String(120)) state = db.Column(db.String(120)) phone = db.Column(db.String(120), nullable=True) seeking_talent = db.Column(db.Boolean, default=True) website = db.Column(db.String(120)) facebook_link = db.Column( db.String(120), default='https://www.facebook.com/theduelingpianos') image_link = db.Column( db.String(500), default= 'https://images.unsplash.com/photo-1543900694-133f37abaaa5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=400&q=60' ) seeking_description = db.Column(db.Text, nullable=True) genres = db.relationship('Genre', secondary=GenreVenue, backref=db.backref('Venue', lazy=True)) shows = db.relationship('Show', backref='Venue', lazy=True) created_at = db.Column( db.DateTime, nullable=True, ) updated_at = db.Column( db.DateTime, nullable=True, )
class Venue(db.Model): __tablename__ = 'Venue' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String) city = db.Column(db.String(120)) state = db.Column(db.String(120)) address = db.Column(db.String(120)) phone = db.Column(db.String(120)) image_link = db.Column(db.String(120), default='default.jpeg') facebook_link = db.Column(db.String(120), nullable=True) genres = db.Column(db.ARRAY(db.String)) website = db.Column(db.String(120), nullable=True) seeking_talent = db.Column(db.Boolean(), default=False) seeking_description = db.Column(db.String(500), nullable=True) def __repr__(self): return f'<Venue {self.name}>' def seperate_genres(self): genres = "".join(self.genres[1:-1]).split(",") return [genre if genre[0] != '"' else genre[1:-1] for genre in genres]
from fyyur import db #----------------------------------------------------------------------------# # Models. #----------------------------------------------------------------------------# GenreVenue = db.Table( 'genre_venue', db.Column('venue_id', db.Integer, db.ForeignKey('venues.id'), primary_key=True, nullable=False), db.Column('genre_id', db.Integer, db.ForeignKey('genres.id'), primary_key=True, nullable=False)) ArtistGenre = db.Table( 'artist_genre', db.Column('artist_id', db.Integer, db.ForeignKey('artists.id'), primary_key=True, nullable=False), db.Column('genre_id', db.Integer, db.ForeignKey('genres.id'), primary_key=True, nullable=False))
class Genre(db.Model): __tablename__ = 'genres' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String)
class State(db.Model): __tablename__ = 'State' id = db.Column(db.Integer, primary_key=True) state = db.Column(db.String(120), nullable=False, unique=True) cities = db.relationship('City', backref='state_', lazy=True)
class Genre(db.Model): __tablename__ = 'Genre' id = db.Column(db.Integer, primary_key=True) genre = db.Column(db.String(120), nullable=False, unique=True)