コード例 #1
0
class Setting(Alchemy.Model):
    NAME_CHOSE_PERIOD = 'choose-period'

    __tablename__ = 'setting'

    id = Alchemy.Column(
        Alchemy.Integer,
        nullable=False,
        primary_key=True,
    )
    name = Alchemy.Column(
        Alchemy.String,
        nullable=False,
        unique=True,
    )
    value = Alchemy.Column(
        Alchemy.String,
        nullable=False,
    )

    @staticmethod
    @lru_cache(maxsize=None)
    def get(name):
        value = Setting.query \
            .filter(Setting.name == name) \
            .one().value
        return {
            Setting.NAME_CHOSE_PERIOD: int,
        }[name](value)
コード例 #2
0
class Task(Alchemy.Model):
    __tablename__ = 'task'

    id = Alchemy.Column(
        Alchemy.Integer,
        nullable=False,
        primary_key=True,
    )
    label = Alchemy.Column(
        Alchemy.String,
        nullable=False,
        unique=True,
    )
    active = Alchemy.Column(
        Alchemy.Boolean,
        nullable=False,
        default=True,
        index=True,
    )
    time_stamp = Alchemy.Column(
        Alchemy.DateTime,
        nullable=False,
        default=datetime.utcnow,
        server_default=Alchemy.func.now(),
        index=True,
    )
    subject_id = Alchemy.Column(
        Alchemy.Integer,
        Alchemy.ForeignKey('subject.id', ondelete='cascade'),
        nullable=False,
        index=True,
    )

    options = Alchemy.relationship(
        'Option',
        secondary='task_option',
    )
    effects = Alchemy.relationship(
        'Effect',
        secondary='task_effect',
    )
    answers = Alchemy.relationship(
        'Answer',
        backref='task',
        passive_deletes=True,
    )
    marks = Alchemy.relationship(
        'Mark',
        backref='task',
        passive_deletes=True,
    )
コード例 #3
0
class Subject(Alchemy.Model):
    __tablename__ = 'subject'

    id = Alchemy.Column(
        Alchemy.Integer,
        nullable=False,
        primary_key=True,
    )
    link = Alchemy.Column(
        Alchemy.String,
        nullable=False,
        unique=True,
    )
    source = Alchemy.Column(
        Alchemy.String,
        nullable=False,
    )
    orientation = Alchemy.Column(
        Alchemy.Enum(Orientation),
        nullable=False,
        index=True,
    )
    option_id = Alchemy.Column(
        Alchemy.Integer,
        Alchemy.ForeignKey('option.id', ondelete='cascade'),
        nullable=False,
        index=True,
    )

    tasks = Alchemy.relationship(
        'Task',
        backref='subject',
        passive_deletes=True,
    )
コード例 #4
0
class Mark(Alchemy.Model):
    __tablename__ = 'mark'

    id = Alchemy.Column(
        Alchemy.Integer,
        nullable=False,
        primary_key=True,
    )
    type = Alchemy.Column(
        Alchemy.Enum(Type),
        nullable=False,
        index=True,
    )
    time_stamp = Alchemy.Column(
        Alchemy.DateTime,
        nullable=False,
        default=datetime.utcnow,
        server_default=Alchemy.func.now(),
    )
    task_id = Alchemy.Column(
        Alchemy.Integer,
        Alchemy.ForeignKey('task.id', ondelete='cascade'),
        nullable=False,
        index=True,
    )
    session_id = Alchemy.Column(
        Alchemy.Integer,
        Alchemy.ForeignKey('session.id', ondelete='cascade'),
        nullable=False,
        index=True,
    )
コード例 #5
0
class Share(Alchemy.Model):
    __tablename__ = 'share'

    id = Alchemy.Column(
        Alchemy.Integer,
        nullable=False,
        primary_key=True,
    )
    media = Alchemy.Column(
        Alchemy.Enum(Media),
        nullable=False,
        index=True,
    )
    session_id = Alchemy.Column(
        Alchemy.Integer,
        Alchemy.ForeignKey('session.id', ondelete='cascade'),
        nullable=False,
        index=True,
    )
コード例 #6
0
ファイル: effect.py プロジェクト: 1pkg/rere
class Effect(Alchemy.Model):
    __tablename__ = 'effect'

    id = Alchemy.Column(
        Alchemy.Integer,
        nullable=False,
        primary_key=True,
    )
    name = Alchemy.Column(
        Alchemy.String,
        nullable=False,
        unique=True,
    )
    shader = Alchemy.Column(
        Alchemy.String,
        nullable=False,
    )
    uniform = Alchemy.Column(
        Alchemy.String,
        nullable=False,
    )
コード例 #7
0
ファイル: account.py プロジェクト: 1pkg/rere
class Account(Alchemy.Model):
    __tablename__ = 'account'

    id = Alchemy.Column(
        Alchemy.Integer,
        nullable=False,
        primary_key=True,
    )
    uuid = Alchemy.Column(
        Alchemy.String,
        nullable=False,
        unique=True,
    )
    alias = Alchemy.Column(
        Alchemy.String,
        nullable=False,
        index=True,
    )
    score = Alchemy.Column(
        Alchemy.Integer,
        nullable=False,
        default=0,
        index=True,
    )
    freebie = Alchemy.Column(
        Alchemy.Integer,
        nullable=False,
        default=0,
    )
    factor = Alchemy.Column(
        Alchemy.Integer,
        nullable=False,
        default=1,
    )
    time_stamp = Alchemy.Column(
        Alchemy.DateTime,
        nullable=False,
        default=datetime.utcnow,
        server_default=Alchemy.func.now(),
    )

    sessions = Alchemy.relationship(
        'Session',
        backref='account',
        passive_deletes=True,
    )
コード例 #8
0
ファイル: answer.py プロジェクト: 1pkg/rere
class Answer(Alchemy.Model):
    __tablename__ = 'answer'

    id = Alchemy.Column(
        Alchemy.Integer,
        nullable=False,
        primary_key=True,
    )
    result = Alchemy.Column(
        Alchemy.Boolean,
        nullable=False,
        index=True,
    )
    time_stamp = Alchemy.Column(
        Alchemy.DateTime,
        nullable=False,
        default=datetime.utcnow,
        server_default=Alchemy.func.now(),
        index=True,
    )
    task_id = Alchemy.Column(
        Alchemy.Integer,
        Alchemy.ForeignKey('task.id', ondelete='cascade'),
        nullable=False,
        index=True,
    )
    option_id = Alchemy.Column(
        Alchemy.Integer,
        Alchemy.ForeignKey('option.id', ondelete='cascade'),
        index=True,
    )
    session_id = Alchemy.Column(
        Alchemy.Integer,
        Alchemy.ForeignKey('session.id', ondelete='cascade'),
        nullable=False,
        index=True,
    )
コード例 #9
0
ファイル: option.py プロジェクト: 1pkg/rere
class Option(Alchemy.Model):
    __tablename__ = 'option'

    id = Alchemy.Column(
        Alchemy.Integer,
        nullable=False,
        primary_key=True,
    )
    name = Alchemy.Column(
        Alchemy.String,
        nullable=False,
        unique=True,
    )
    description = Alchemy.Column(
        Alchemy.String,
        nullable=False,
    )
    link = Alchemy.Column(
        Alchemy.String,
        nullable=False,
        unique=True,
    )
    source = Alchemy.Column(
        Alchemy.String,
        nullable=False,
    )

    subjects = Alchemy.relationship(
        'Subject',
        backref='option',
        passive_deletes=True,
    )
    answers = Alchemy.relationship(
        'Answer',
        backref='option',
        passive_deletes=True,
    )
コード例 #10
0
ファイル: session.py プロジェクト: 1pkg/rere
class Session(Alchemy.Model):
    __tablename__ = 'session'

    id = Alchemy.Column(
        Alchemy.Integer,
        nullable=False,
        primary_key=True,
    )
    user_device = Alchemy.Column(
        Alchemy.Enum(Device),
        nullable=False,
    )
    user_digest = Alchemy.Column(
        Alchemy.String,
        nullable=False,
    )
    user_agent = Alchemy.Column(
        Alchemy.String,
        nullable=False,
    )
    user_ip = Alchemy.Column(
        Alchemy.String,
        nullable=False,
    )
    token = Alchemy.Column(
        Alchemy.String,
        nullable=False,
        unique=True,
    )
    time_stamp = Alchemy.Column(
        Alchemy.DateTime,
        nullable=False,
        default=datetime.utcnow,
        server_default=Alchemy.func.now(),
        index=True,
    )
    account_id = Alchemy.Column(
        Alchemy.Integer,
        Alchemy.ForeignKey('account.id', ondelete='cascade'),
        nullable=False,
        index=True,
    )

    answers = Alchemy.relationship(
        'Answer',
        backref='session',
        passive_deletes=True,
    )
    marks = Alchemy.relationship(
        'Mark',
        backref='session',
        passive_deletes=True,
    )
    shares = Alchemy.relationship(
        'Share',
        backref='session',
        passive_deletes=True,
    )
コード例 #11
0
    marks = Alchemy.relationship(
        'Mark',
        backref='task',
        passive_deletes=True,
    )


Alchemy.Table(
    'task_option',
    Alchemy.Column(
        'task_id',
        Alchemy.Integer,
        Alchemy.ForeignKey('task.id', ondelete='cascade'),
        nullable=False,
        primary_key=True,
    ),
    Alchemy.Column(
        'option_id',
        Alchemy.Integer,
        Alchemy.ForeignKey('option.id', ondelete='cascade'),
        nullable=False,
        primary_key=True,
    ),
)

Alchemy.Table(
    'task_effect',
    Alchemy.Column(
        'task_id',
        Alchemy.Integer,
        Alchemy.ForeignKey('task.id', ondelete='cascade'),