class AnimeList(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) anime_id = db.Column(db.Integer, db.ForeignKey('anime.id'), nullable=False) current_season = db.Column(db.Integer, nullable=False) last_episode_watched = db.Column(db.Integer, nullable=False) status = db.Column(db.Enum(Status), nullable=False) score = db.Column(db.Float)
class MoviesList(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) movies_id = db.Column(db.Integer, db.ForeignKey('movies.id'), nullable=False) status = db.Column(db.Enum(Status), nullable=False) score = db.Column(db.Float)
class MoviesList(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) media_id = db.Column(db.Integer, db.ForeignKey('movies.id'), nullable=False) status = db.Column(db.Enum(Status), nullable=False) rewatched = db.Column(db.Integer, nullable=False, default=0) eps_watched = db.Column(db.Integer) favorite = db.Column(db.Boolean) score = db.Column(db.Float) comment = db.Column(db.Text)
class AnimeList(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) media_id = db.Column(db.Integer, db.ForeignKey('anime.id'), nullable=False) current_season = db.Column(db.Integer, nullable=False) last_episode_watched = db.Column(db.Integer, nullable=False) status = db.Column(db.Enum(Status), nullable=False) rewatched = db.Column(db.Integer, nullable=False, default=0) favorite = db.Column(db.Boolean) score = db.Column(db.Float) eps_watched = db.Column(db.Integer) comment = db.Column(db.Text)
class MoviesGenre(db.Model): id = db.Column(db.Integer, primary_key=True) movies_id = db.Column(db.Integer, db.ForeignKey('movies.id'), nullable=False) genre = db.Column(db.String(100), nullable=False) genre_id = db.Column(db.Integer, nullable=False)
class Notifications(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) media_type = db.Column(db.String(50)) media_id = db.Column(db.Integer) payload_json = db.Column(db.Text) timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)
class SeriesEpisodesPerSeason(db.Model): id = db.Column(db.Integer, primary_key=True) series_id = db.Column(db.Integer, db.ForeignKey('series.id'), nullable=False) season = db.Column(db.Integer, nullable=False) episodes = db.Column(db.Integer, nullable=False)
class UserLastUpdate(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) media_name = db.Column(db.String(50), nullable=False) media_type = db.Column(db.Enum(ListType), nullable=False) old_status = db.Column(db.Enum(Status)) new_status = db.Column(db.Enum(Status)) old_season = db.Column(db.Integer) new_season = db.Column(db.Integer) old_episode = db.Column(db.Integer) new_episode = db.Column(db.Integer) date = db.Column(db.DateTime, nullable=False)
class MoviesProd(db.Model): id = db.Column(db.Integer, primary_key=True) movies_id = db.Column(db.Integer, db.ForeignKey('movies.id'), nullable=False) production_company = db.Column(db.String(150), nullable=False)
class AnimeActors(db.Model): id = db.Column(db.Integer, primary_key=True) anime_id = db.Column(db.Integer, db.ForeignKey('anime.id'), nullable=False) name = db.Column(db.String(150))
class AnimeNetwork(db.Model): id = db.Column(db.Integer, primary_key=True) anime_id = db.Column(db.Integer, db.ForeignKey('anime.id'), nullable=False) network = db.Column(db.String(150), nullable=False)
class AnimeGenre(db.Model): id = db.Column(db.Integer, primary_key=True) anime_id = db.Column(db.Integer, db.ForeignKey('anime.id'), nullable=False) genre = db.Column(db.String(100), nullable=False) genre_id = db.Column(db.Integer, nullable=False)
class SeriesNetwork(db.Model): id = db.Column(db.Integer, primary_key=True) series_id = db.Column(db.Integer, db.ForeignKey('series.id'), nullable=False) network = db.Column(db.String(150), nullable=False)
class Follow(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) follow_id = db.Column(db.Integer, db.ForeignKey('user.id'))
class MoviesActors(db.Model): id = db.Column(db.Integer, primary_key=True) movies_id = db.Column(db.Integer, db.ForeignKey('movies.id'), nullable=False) name = db.Column(db.String(150))
class AnimeEpisodesPerSeason(db.Model): id = db.Column(db.Integer, primary_key=True) anime_id = db.Column(db.Integer, db.ForeignKey('anime.id'), nullable=False) season = db.Column(db.Integer, nullable=False) episodes = db.Column(db.Integer, nullable=False)
class HomePage(enum.Enum): ACCOUNT = "account" HALL_OF_FAME = "hall_of_fame" MYSERIESLIST = "serieslist" MYANIMELIST = "animelist" MYMOVIESLIST = "movieslist" class RoleType(enum.Enum): ADMIN = "admin" # Can access to the admin dashboard (/admin) MANAGER = "manager" # Can lock and edit media (/lock_media & /media_sheet_form) USER = "******" # Standard user followers = db.Table('followers', db.Column('follower_id', db.Integer, db.ForeignKey('user.id')), db.Column('followed_id', db.Integer, db.ForeignKey('user.id'))) class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(15), unique=True, nullable=False) oauth_id = db.Column(db.String(50), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) registered_on = db.Column(db.DateTime, nullable=False) password = db.Column(db.String(60), nullable=False) homepage = db.Column(db.Enum(HomePage), nullable=False, default=HomePage.ACCOUNT) image_file = db.Column(db.String(20), nullable=False, default='default.jpg') time_spent_series = db.Column(db.Integer, nullable=False, default=0) time_spent_movies = db.Column(db.Integer, nullable=False, default=0) time_spent_anime = db.Column(db.Integer, nullable=False, default=0)