# Generated by Django 3.2.9 on 2022-12-20 16:03

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion


SQL = """
------------------
CREATE TYPE actions_types AS ENUM ('INSERT', 'UPDATE', 'DELETE'); --ENUM ACTIONS TRANS TYPES 
-----------------
CREATE OR REPLACE FUNCTION recent_activity_trigger_func()
RETURNS trigger AS $body$
BEGIN
    IF (TG_OP = 'INSERT') THEN
        INSERT INTO internal_activities_recentactivity
                (action, entity, entity_name, created_on, org_id, user_id)
            VALUES
                ('CREATE', 'CHANNEL', NEW.name, current_date, NEW.org_id, NEW.created_by_id);
            RETURN NEW;

    ELSIF (TG_OP = 'UPDATE') THEN
        INSERT INTO internal_activities_recentactivity
            (action, entity, entity_name, created_on, org, user_name)
        VALUES
            ('UPDATE', NEW.entity, NEW.entity_name, current_date, NEW.org, NEW.user_name);
        RETURN OLD;
    END IF;
END;
$body$
LANGUAGE plpgsql;

CREATE TRIGGER channel_activity_trigger
    AFTER INSERT OR UPDATE OR DELETE ON channels_channel
    FOR EACH ROW EXECUTE FUNCTION recent_activity_trigger_func();
"""


class Migration(migrations.Migration):

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
        ('orgs', '0090_auto_20211209_2120'),
        ('internal', '0001_initial'),
    ]

    operations = [
        migrations.CreateModel(
            name='RecentActivity',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('action', models.CharField(choices=[('CREATE', 'Create'), ('UPDATE', 'Update')], max_length=6)),
                ('entity', models.CharField(choices=[('FLOW', 'Flow'), ('CHANNEL', 'Channel'), ('TRIGGER', 'Trigger'), ('CAMPAIGN', 'Campaign')], max_length=8)),
                ('entity_name', models.CharField(max_length=255, null=True)),
                ('created_on', models.DateTimeField()),
                ('org', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='recent_activities', to='orgs.org')),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='recent_activities', to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'db_table': 'internal_activities_recentactivity',
            },
        ),
        # migrations.RunSQL(SQL)
    ]
