|
@@ -0,0 +1,71 @@
|
|
|
|
+# Generated by Django 4.1.9 on 2023-06-08 17:33
|
|
|
|
+
|
|
|
|
+from django.db import migrations
|
|
|
|
+import pgtrigger.compiler
|
|
|
|
+import pgtrigger.migrations
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+class Migration(migrations.Migration):
|
|
|
|
+ dependencies = [
|
|
|
|
+ ("desecapi", "0031_alter_user_email"),
|
|
|
|
+ ]
|
|
|
|
+
|
|
|
|
+ operations = [
|
|
|
|
+ pgtrigger.migrations.AddTrigger(
|
|
|
|
+ model_name="tokendomainpolicy",
|
|
|
|
+ trigger=pgtrigger.compiler.Trigger(
|
|
|
|
+ name="token_user",
|
|
|
|
+ sql=pgtrigger.compiler.UpsertTriggerSql(
|
|
|
|
+ func="NEW.token_user_id = (SELECT user_id FROM desecapi_token WHERE id = NEW.token_id); RETURN NEW;",
|
|
|
|
+ hash="38e318cd25ddc9a7e0323d9a15b3c800acf476f8",
|
|
|
|
+ operation="UPDATE OR INSERT",
|
|
|
|
+ pgid="pgtrigger_token_user_643b3",
|
|
|
|
+ table="desecapi_tokendomainpolicy",
|
|
|
|
+ when="BEFORE",
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ pgtrigger.migrations.AddTrigger(
|
|
|
|
+ model_name="tokendomainpolicy",
|
|
|
|
+ trigger=pgtrigger.compiler.Trigger(
|
|
|
|
+ name="default_policy_on_insert",
|
|
|
|
+ sql=pgtrigger.compiler.UpsertTriggerSql(
|
|
|
|
+ func="IF (NEW.domain_id IS NOT NULL and NOT EXISTS(SELECT * FROM desecapi_tokendomainpolicy WHERE domain_id IS NULL AND token_id = NEW.token_id)) THEN RAISE EXCEPTION 'Cannot insert non-default policy into % table when default policy is not present', TG_TABLE_NAME; END IF; RETURN NEW;",
|
|
|
|
+ hash="ac850a5a2d01726a313f57369ad82ffaf7321261",
|
|
|
|
+ operation="INSERT",
|
|
|
|
+ pgid="pgtrigger_default_policy_on_insert_e01f6",
|
|
|
|
+ table="desecapi_tokendomainpolicy",
|
|
|
|
+ when="BEFORE",
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ pgtrigger.migrations.AddTrigger(
|
|
|
|
+ model_name="tokendomainpolicy",
|
|
|
|
+ trigger=pgtrigger.compiler.Trigger(
|
|
|
|
+ name="default_policy_on_update",
|
|
|
|
+ sql=pgtrigger.compiler.UpsertTriggerSql(
|
|
|
|
+ condition='WHEN (NEW."domain_id" IS NOT NULL AND OLD."domain_id" IS NULL)',
|
|
|
|
+ func="RAISE EXCEPTION 'pgtrigger: Cannot update rows from % table', TG_TABLE_NAME;",
|
|
|
|
+ hash="50b90c40a204f2165106f2212bc3a8fbb1397226",
|
|
|
|
+ operation="UPDATE",
|
|
|
|
+ pgid="pgtrigger_default_policy_on_update_6acd4",
|
|
|
|
+ table="desecapi_tokendomainpolicy",
|
|
|
|
+ when="BEFORE",
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ pgtrigger.migrations.AddTrigger(
|
|
|
|
+ model_name="tokendomainpolicy",
|
|
|
|
+ trigger=pgtrigger.compiler.Trigger(
|
|
|
|
+ name="default_policy_on_delete",
|
|
|
|
+ sql=pgtrigger.compiler.UpsertTriggerSql(
|
|
|
|
+ func="IF (OLD.domain_id IS NULL and EXISTS(SELECT * FROM desecapi_tokendomainpolicy WHERE domain_id IS NOT NULL AND token_id = OLD.token_id)) THEN RAISE EXCEPTION 'Cannot delete default policy from % table when non-default policy is present', TG_TABLE_NAME; END IF; RETURN OLD;",
|
|
|
|
+ hash="14e0ec9e218138c6a10b5da065a1ab1f253b9312",
|
|
|
|
+ operation="DELETE",
|
|
|
|
+ pgid="pgtrigger_default_policy_on_delete_a9116",
|
|
|
|
+ table="desecapi_tokendomainpolicy",
|
|
|
|
+ when="BEFORE",
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ ]
|