Esempio n. 1
0
class UserAttitude(db.Model):
    __tablename__ = 'users_attitude'

    user = db.relationship(User)
    user_id = db.Column(db.Integer,
                        db.ForeignKey('users.id',
                                      name='fk_users_id',
                                      ondelete='CASCADE'),
                        primary_key=True)
    repo = db.relationship(Repo, lazy=False)
    repo_id = db.Column(db.BigInteger,
                        db.ForeignKey('repos.id',
                                      name='fk_repos_id',
                                      ondelete='CASCADE'),
                        primary_key=True,
                        index=True)
    attitude = db.Column(db.Enum('like', 'dislike', 'neutral'), nullable=False)

    @classmethod
    def join_by_user_and_repo(cls, query, user_id: int, repo_id: int):
        return query.outerjoin(cls, (cls.user_id == user_id) &
                               (cls.repo_id == repo_id))

    @classmethod
    def list_liked_by_user(cls, user_id: int):
        """
        @type user_id: int
        @rtype: list
        """
        return cls.query.filter(cls.user_id == user_id).filter(
            cls.attitude == 'like').all()

    @staticmethod
    def like(user_id: int, repo_id: int):
        return UserAttitude(user_id=user_id, repo_id=repo_id, attitude='like')
Esempio n. 2
0
class RepoMean(db.Model):
    __tablename__ = 'repos_mean'

    repo = db.relationship(Repo)
    repo_id = db.Column(
        db.BigInteger, db.ForeignKey('repos.id', name='fk_repos_mean_repo_id', ondelete='CASCADE'),
        primary_key=True
    )
    created_at = db.Column(
        db.Date,
        default=datetime.today().strftime('%Y-%m-%d'), nullable=False, primary_key=True
    )
    value = db.Column(db.Float(), nullable=False)
Esempio n. 3
0
class RepoStars(db.Model):
    __tablename__ = 'repos_stars'

    repo_id = db.Column(db.BigInteger,
                        db.ForeignKey('repos.id',
                                      name='fk_repos_stars_repo_id',
                                      ondelete='CASCADE'),
                        primary_key=True)
    stars = db.Column(SMALLINT(display_width=4, unsigned=True), nullable=False)
    year = db.Column(SMALLINT(display_width=4, unsigned=True),
                     autoincrement=False,
                     nullable=False,
                     primary_key=True)
    day = db.Column(SMALLINT(display_width=3, unsigned=True),
                    autoincrement=False,
                    nullable=False,
                    primary_key=True)
Esempio n. 4
0
 def id(self):
     return db.Column(db.BigInteger,
                      db.ForeignKey('repos.id'),
                      primary_key=True)