HEX
Server: LiteSpeed
System: Linux node612.namehero.net 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: dfwparty (1186)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //opt/imunify360/venv/lib64/python3.11/site-packages/imav/migrations/023_create_mrs_upload_queue.py
"""
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License,
or (at your option) any later version.


This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
See the GNU General Public License for more details.


You should have received a copy of the GNU General Public License
 along with this program.  If not, see <https://www.gnu.org/licenses/>.

Copyright © 2019 Cloud Linux Software Inc.

This software is also available under ImunifyAV commercial license,
see <https://www.imunify360.com/legal/eula>
"""
import peewee as pw


def migrate(migrator, database, fake=False, **kwargs):
    class MRSUploadItem(pw.Model):
        class Meta:
            db_table = "mrs_upload_queue"
            indexes = (
                (("hash", "upload_reason"), True),
                (("status", "upload_reason", "enqueued_at"), False),
                (("status", "last_attempt_at"), False),
            )

        id = pw.PrimaryKeyField()
        hash = pw.CharField(max_length=64, null=False)
        file_path = pw.TextField(null=False)
        upload_reason = pw.CharField(max_length=32, null=False)
        enqueued_at = pw.FloatField(null=False)
        status = pw.CharField(max_length=16, null=False, default="pending")
        attempts = pw.IntegerField(default=0)
        last_error = pw.TextField(null=True)
        last_attempt_at = pw.FloatField(null=True)

    migrator.create_model(MRSUploadItem)


def rollback(migrator, database, fake=False, **kwargs):
    MRSUploadItem = migrator.orm["mrs_upload_queue"]
    migrator.remove_model(MRSUploadItem)