import sqlalchemy as sa
from szurubooru.model.base import Base


class Snapshot(Base):
    __tablename__ = 'snapshot'

    OPERATION_CREATED = 'created'
    OPERATION_MODIFIED = 'modified'
    OPERATION_DELETED = 'deleted'
    OPERATION_MERGED = 'merged'

    snapshot_id = sa.Column('id', sa.Integer, primary_key=True)
    creation_time = sa.Column('creation_time', sa.DateTime, nullable=False)
    operation = sa.Column('operation', sa.Unicode(16), nullable=False)
    resource_type = sa.Column(
        'resource_type', sa.Unicode(32), nullable=False, index=True)
    resource_pkey = sa.Column(
        'resource_pkey', sa.Integer, nullable=False, index=True)
    resource_name = sa.Column(
        'resource_name', sa.Unicode(64), nullable=False)
    user_id = sa.Column(
        'user_id',
        sa.Integer,
        sa.ForeignKey('user.id', ondelete='set null'),
        nullable=True)
    data = sa.Column('data', sa.PickleType)

    user = sa.orm.relationship('User')