20240606121555_ban_notify_trigger.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using Microsoft.EntityFrameworkCore.Migrations;
  2. #nullable disable
  3. namespace Content.Server.Database.Migrations.Postgres
  4. {
  5. /// <inheritdoc />
  6. public partial class ban_notify_trigger : Migration
  7. {
  8. /// <inheritdoc />
  9. protected override void Up(MigrationBuilder migrationBuilder)
  10. {
  11. migrationBuilder.Sql("""
  12. create or replace function send_server_ban_notification()
  13. returns trigger as $$
  14. declare
  15. x_server_id integer;
  16. begin
  17. select round.server_id into x_server_id from round where round.round_id = NEW.round_id;
  18. perform pg_notify('ban_notification', json_build_object('ban_id', NEW.server_ban_id, 'server_id', x_server_id)::text);
  19. return NEW;
  20. end;
  21. $$ LANGUAGE plpgsql;
  22. """);
  23. migrationBuilder.Sql("""
  24. create or replace trigger notify_on_server_ban_insert
  25. after insert on server_ban
  26. for each row
  27. execute function send_server_ban_notification();
  28. """);
  29. }
  30. /// <inheritdoc />
  31. protected override void Down(MigrationBuilder migrationBuilder)
  32. {
  33. migrationBuilder.Sql("""
  34. drop trigger notify_on_server_ban_insert on server_ban;
  35. drop function send_server_ban_notification;
  36. """);
  37. }
  38. }
  39. }