from django.db import models

class UexistEntry(models.Model):
    entry_id = models.BigAutoField(primary_key=True)
    file_id = models.IntegerField()
    firstname = models.CharField(max_length=150, null=True, blank=True)
    lastname = models.CharField(max_length=65)
    email = models.CharField(max_length=120, null=True, blank=True)
    phone = models.CharField(max_length=25)
    street = models.CharField(max_length=175, null=True, blank=True)
    city = models.CharField(max_length=35, null=True, blank=True)
    state = models.CharField(max_length=35, null=True, blank=True)
    country = models.CharField(max_length=50, null=True, blank=True)
    ip = models.CharField(max_length=25, null=True, blank=True)
    website = models.CharField(max_length=150, null=True, blank=True)
    date = models.CharField(max_length=50, null=True, blank=True)
    notes = models.CharField(max_length=500, null=True, blank=True)
    description = models.CharField(max_length=500, null=True, blank=True)
    info = models.CharField(max_length=500, null=True, blank=True)
    lead_id = models.CharField(max_length=50, null=True, blank=True)
    status = models.CharField(max_length=65, null=True, blank=True)
    old_notes = models.TextField(null=True, blank=True)  # mediumtext -> TextField
    recycle = models.IntegerField(default=0)
    import_field = models.IntegerField(default=0, db_column='import')  # 'import' is a reserved word
    imported = models.IntegerField(default=0)
    matched_target = models.IntegerField(null=True, blank=True)
    updated_date = models.DateTimeField(null=True, blank=True)

    class Meta:
        db_table = 'uexist_entries'
        indexes = [
            models.Index(fields=['file_id', 'import_field', 'recycle', 'imported'], name='index_master_1'),
            models.Index(fields=['import_field', 'imported'], name='index_master_2'),
            models.Index(fields=['email'], name='index_master_3'),
            models.Index(fields=['matched_target', 'import_field', 'imported'], name='index_master_4'),
            models.Index(fields=['matched_target', 'import_field', 'imported', 'updated_date'], name='index_master_5'),
        ]


class UexistEntriesTargets(models.Model):
    record_id = models.BigAutoField(primary_key=True)
    file_id = models.IntegerField()
    entry_id = models.BigIntegerField()
    target_id = models.IntegerField()
    worker = models.IntegerField()
    processed = models.IntegerField(default=0)
    matched = models.IntegerField(default=0)
    failed = models.IntegerField(default=0)
    priority = models.IntegerField(default=0)

    class Meta:
        db_table = 'uexist_entries_targets'
        indexes = [
            models.Index(fields=['target_id', 'worker', 'priority', 'processed', 'failed'], name='idx_first_index'),
            models.Index(fields=['file_id', 'target_id', 'processed', 'failed'], name='idx_second_index'),
            models.Index(fields=['target_id'], name='idx_third_index'),
            models.Index(fields=['processed'], name='idx_forth_index'),
            models.Index(fields=['processed', 'target_id'], name='idx_fifth_index'),
        ]


class UexistFiles(models.Model):
    file_id = models.AutoField(primary_key=True)
    file = models.CharField(max_length=150)
    date = models.DateTimeField()
    ready = models.IntegerField(default=0)
    loaded = models.IntegerField(default=0)
    cleaned = models.IntegerField(default=0)
    total = models.IntegerField(default=0)
    processed = models.IntegerField(default=0)
    failed = models.IntegerField(null=True, blank=True)
    priority = models.IntegerField(default=0)
    user_id = models.IntegerField(null=True, blank=True)

    class Meta:
        db_table = 'uexist_files'


class UexistTargets(models.Model):
    target_id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=65)
    target_attribute = models.CharField(max_length=25)
    alias = models.CharField(max_length=65)
    active = models.IntegerField(default=1)
    downloadable = models.IntegerField(default=1)
    url = models.CharField(max_length=255)

    class Meta:
        db_table = 'uexist_targets'


class Users(models.Model):
    user_id = models.AutoField(primary_key=True)
    user = models.CharField(max_length=25)
    password = models.CharField(max_length=350)
    private_only = models.IntegerField(null=True, blank=True)

    class Meta:
        db_table = 'users'

class UexistFilesTargets(models.Model):
    linkd_id = models.AutoField(primary_key=True)
    file_id = models.IntegerField()
    target_id = models.IntegerField()
    processed = models.IntegerField(default=0)
    failed = models.IntegerField(default=0)
    priority = models.IntegerField(default=0)

    class Meta:
        db_table = 'uexist_files_targets'
        indexes = [
            models.Index(fields=['file_id', 'target_id'], name='file_id'),
            models.Index(fields=['target_id'], name='target_id'),
        ]

class UexistEntriesMatched(models.Model):
    entry_id = models.BigAutoField(primary_key=True)
    file_id = models.IntegerField()
    firstname = models.CharField(max_length=150, null=True, blank=True)
    lastname = models.CharField(max_length=65, null=True, blank=True)
    email = models.CharField(max_length=120, null=True, blank=True)
    phone = models.CharField(max_length=25, null=True, blank=True)
    import_field = models.IntegerField(default=0, db_column='import')
    matched_target = models.IntegerField(null=True, blank=True)
    updated_date = models.DateTimeField(null=True, blank=True)

    class Meta:
        db_table = 'uexist_entries_matched'
        indexes = [
            models.Index(fields=['file_id'], name='idx_file_id'),
            models.Index(fields=['file_id', 'matched_target'], name='idx_file_matched'),
            models.Index(fields=['email'], name='idx_email'),
            models.Index(fields=['phone'], name='idx_phone'),
            models.Index(fields=['matched_target', 'import_field'], name='idx_target_updated'),
        ]
