feat: rate limit emails to two per address per hour
This commit is contained in:
		
							parent
							
								
									5cb3faa92b
								
							
						
					
					
						commit
						ff8d53814d
					
				
					 6 changed files with 189 additions and 49 deletions
				
			
		|  | @ -0,0 +1,53 @@ | |||
| using Microsoft.EntityFrameworkCore.Infrastructure; | ||||
| using Microsoft.EntityFrameworkCore.Migrations; | ||||
| using NodaTime; | ||||
| using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; | ||||
| 
 | ||||
| #nullable disable | ||||
| 
 | ||||
| namespace Foxnouns.Backend.Database.Migrations | ||||
| { | ||||
|     /// <inheritdoc /> | ||||
|     [DbContext(typeof(DatabaseContext))] | ||||
|     [Migration("20241211193653_AddSentEmailCache")] | ||||
|     public partial class AddSentEmailCache : Migration | ||||
|     { | ||||
|         /// <inheritdoc /> | ||||
|         protected override void Up(MigrationBuilder migrationBuilder) | ||||
|         { | ||||
|             migrationBuilder.CreateTable( | ||||
|                 name: "sent_emails", | ||||
|                 columns: table => new | ||||
|                 { | ||||
|                     id = table | ||||
|                         .Column<int>(type: "integer", nullable: false) | ||||
|                         .Annotation( | ||||
|                             "Npgsql:ValueGenerationStrategy", | ||||
|                             NpgsqlValueGenerationStrategy.IdentityByDefaultColumn | ||||
|                         ), | ||||
|                     email = table.Column<string>(type: "text", nullable: false), | ||||
|                     sent_at = table.Column<Instant>( | ||||
|                         type: "timestamp with time zone", | ||||
|                         nullable: false | ||||
|                     ), | ||||
|                 }, | ||||
|                 constraints: table => | ||||
|                 { | ||||
|                     table.PrimaryKey("pk_sent_emails", x => x.id); | ||||
|                 } | ||||
|             ); | ||||
| 
 | ||||
|             migrationBuilder.CreateIndex( | ||||
|                 name: "ix_sent_emails_email_sent_at", | ||||
|                 table: "sent_emails", | ||||
|                 columns: new[] { "email", "sent_at" } | ||||
|             ); | ||||
|         } | ||||
| 
 | ||||
|         /// <inheritdoc /> | ||||
|         protected override void Down(MigrationBuilder migrationBuilder) | ||||
|         { | ||||
|             migrationBuilder.DropTable(name: "sent_emails"); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue