Fix incorrect foreign key reference
Replaces previously committed migration with a new one. If updating the database, run these first before the migration: ``` drop table modlogs; drop type mod_log_type; delete from "__EFMigrationsHistory" where "migration_id" = '20220824023321_AddModLogs'; ```
This commit is contained in:
parent
dfec87672f
commit
5f00e8b4b2
5 changed files with 53 additions and 17 deletions
|
@ -12,6 +12,9 @@ public class BotDatabaseContext : DbContext {
|
||||||
// Get our own config loaded just for the SQL stuff
|
// Get our own config loaded just for the SQL stuff
|
||||||
var conf = new InstanceConfig();
|
var conf = new InstanceConfig();
|
||||||
_connectionString = new NpgsqlConnectionStringBuilder() {
|
_connectionString = new NpgsqlConnectionStringBuilder() {
|
||||||
|
#if DEBUG
|
||||||
|
IncludeErrorDetail = true,
|
||||||
|
#endif
|
||||||
Host = conf.SqlHost ?? "localhost", // default to localhost
|
Host = conf.SqlHost ?? "localhost", // default to localhost
|
||||||
Database = conf.SqlDatabase,
|
Database = conf.SqlDatabase,
|
||||||
Username = conf.SqlUsername,
|
Username = conf.SqlUsername,
|
||||||
|
@ -49,7 +52,7 @@ public class BotDatabaseContext : DbContext {
|
||||||
protected override void OnModelCreating(ModelBuilder modelBuilder) {
|
protected override void OnModelCreating(ModelBuilder modelBuilder) {
|
||||||
modelBuilder.Entity<CachedUser>(entity => entity.Property(e => e.Discriminator).HasMaxLength(4).IsFixedLength());
|
modelBuilder.Entity<CachedUser>(entity => entity.Property(e => e.Discriminator).HasMaxLength(4).IsFixedLength());
|
||||||
modelBuilder.Entity<CachedGuildUser>(e => {
|
modelBuilder.Entity<CachedGuildUser>(e => {
|
||||||
e.HasKey(p => new { p.UserId, p.GuildId });
|
e.HasKey(p => new { p.GuildId, p.UserId });
|
||||||
e.Property(p => p.FirstSeenTime).HasDefaultValueSql("now()");
|
e.Property(p => p.FirstSeenTime).HasDefaultValueSql("now()");
|
||||||
});
|
});
|
||||||
modelBuilder.Entity<CachedGuildMessage>(e => e.Property(p => p.CreatedAt).HasDefaultValueSql("now()"));
|
modelBuilder.Entity<CachedGuildMessage>(e => e.Property(p => p.CreatedAt).HasDefaultValueSql("now()"));
|
||||||
|
@ -58,7 +61,7 @@ public class BotDatabaseContext : DbContext {
|
||||||
e.Property(p => p.Timestamp).HasDefaultValueSql("now()");
|
e.Property(p => p.Timestamp).HasDefaultValueSql("now()");
|
||||||
e.HasOne(entry => entry.User)
|
e.HasOne(entry => entry.User)
|
||||||
.WithMany(gu => gu.Logs)
|
.WithMany(gu => gu.Logs)
|
||||||
.HasForeignKey(entry => new {entry.GuildId, entry.UserId});
|
.HasForeignKey(entry => new { entry.GuildId, entry.UserId });
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,14 +6,14 @@ namespace RegexBot.Data;
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Table("cache_usersinguild")]
|
[Table("cache_usersinguild")]
|
||||||
public class CachedGuildUser {
|
public class CachedGuildUser {
|
||||||
/// <inheritdoc cref="CachedUser.UserId"/>
|
|
||||||
public long UserId { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the associated guild's snowflake ID.
|
/// Gets the associated guild's snowflake ID.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public long GuildId { get; set; }
|
public long GuildId { get; set; }
|
||||||
|
|
||||||
|
/// <inheritdoc cref="CachedUser.UserId"/>
|
||||||
|
public long UserId { get; set; }
|
||||||
|
|
||||||
/// <inheritdoc cref="CachedUser.ULastUpdateTime"/>
|
/// <inheritdoc cref="CachedUser.ULastUpdateTime"/>
|
||||||
public DateTimeOffset GULastUpdateTime { get; set; }
|
public DateTimeOffset GULastUpdateTime { get; set; }
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ using RegexBot.Data;
|
||||||
namespace RegexBot.Data.Migrations
|
namespace RegexBot.Data.Migrations
|
||||||
{
|
{
|
||||||
[DbContext(typeof(BotDatabaseContext))]
|
[DbContext(typeof(BotDatabaseContext))]
|
||||||
[Migration("20220824023321_AddModLogs")]
|
[Migration("20220827041853_AddModLogs")]
|
||||||
partial class AddModLogs
|
partial class AddModLogs
|
||||||
{
|
{
|
||||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||||
|
@ -74,14 +74,14 @@ namespace RegexBot.Data.Migrations
|
||||||
|
|
||||||
modelBuilder.Entity("RegexBot.Data.CachedGuildUser", b =>
|
modelBuilder.Entity("RegexBot.Data.CachedGuildUser", b =>
|
||||||
{
|
{
|
||||||
b.Property<long>("UserId")
|
|
||||||
.HasColumnType("bigint")
|
|
||||||
.HasColumnName("user_id");
|
|
||||||
|
|
||||||
b.Property<long>("GuildId")
|
b.Property<long>("GuildId")
|
||||||
.HasColumnType("bigint")
|
.HasColumnType("bigint")
|
||||||
.HasColumnName("guild_id");
|
.HasColumnName("guild_id");
|
||||||
|
|
||||||
|
b.Property<long>("UserId")
|
||||||
|
.HasColumnType("bigint")
|
||||||
|
.HasColumnName("user_id");
|
||||||
|
|
||||||
b.Property<DateTimeOffset>("FirstSeenTime")
|
b.Property<DateTimeOffset>("FirstSeenTime")
|
||||||
.ValueGeneratedOnAdd()
|
.ValueGeneratedOnAdd()
|
||||||
.HasColumnType("timestamp with time zone")
|
.HasColumnType("timestamp with time zone")
|
||||||
|
@ -96,9 +96,12 @@ namespace RegexBot.Data.Migrations
|
||||||
.HasColumnType("text")
|
.HasColumnType("text")
|
||||||
.HasColumnName("nickname");
|
.HasColumnName("nickname");
|
||||||
|
|
||||||
b.HasKey("UserId", "GuildId")
|
b.HasKey("GuildId", "UserId")
|
||||||
.HasName("pk_cache_usersinguild");
|
.HasName("pk_cache_usersinguild");
|
||||||
|
|
||||||
|
b.HasIndex("UserId")
|
||||||
|
.HasDatabaseName("ix_cache_usersinguild_user_id");
|
||||||
|
|
||||||
b.ToTable("cache_usersinguild", (string)null);
|
b.ToTable("cache_usersinguild", (string)null);
|
||||||
});
|
});
|
||||||
|
|
|
@ -10,9 +10,18 @@ namespace RegexBot.Data.Migrations
|
||||||
{
|
{
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
{
|
{
|
||||||
|
migrationBuilder.DropPrimaryKey(
|
||||||
|
name: "pk_cache_usersinguild",
|
||||||
|
table: "cache_usersinguild");
|
||||||
|
|
||||||
migrationBuilder.AlterDatabase()
|
migrationBuilder.AlterDatabase()
|
||||||
.Annotation("Npgsql:Enum:mod_log_type", "other,note,warn,timeout,kick,ban");
|
.Annotation("Npgsql:Enum:mod_log_type", "other,note,warn,timeout,kick,ban");
|
||||||
|
|
||||||
|
migrationBuilder.AddPrimaryKey(
|
||||||
|
name: "pk_cache_usersinguild",
|
||||||
|
table: "cache_usersinguild",
|
||||||
|
columns: new[] { "guild_id", "user_id" });
|
||||||
|
|
||||||
migrationBuilder.CreateTable(
|
migrationBuilder.CreateTable(
|
||||||
name: "modlogs",
|
name: "modlogs",
|
||||||
columns: table => new
|
columns: table => new
|
||||||
|
@ -33,10 +42,15 @@ namespace RegexBot.Data.Migrations
|
||||||
name: "fk_modlogs_cache_usersinguild_user_temp_id",
|
name: "fk_modlogs_cache_usersinguild_user_temp_id",
|
||||||
columns: x => new { x.guild_id, x.user_id },
|
columns: x => new { x.guild_id, x.user_id },
|
||||||
principalTable: "cache_usersinguild",
|
principalTable: "cache_usersinguild",
|
||||||
principalColumns: new[] { "user_id", "guild_id" },
|
principalColumns: new[] { "guild_id", "user_id" },
|
||||||
onDelete: ReferentialAction.Cascade);
|
onDelete: ReferentialAction.Cascade);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "ix_cache_usersinguild_user_id",
|
||||||
|
table: "cache_usersinguild",
|
||||||
|
column: "user_id");
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
migrationBuilder.CreateIndex(
|
||||||
name: "ix_modlogs_guild_id_user_id",
|
name: "ix_modlogs_guild_id_user_id",
|
||||||
table: "modlogs",
|
table: "modlogs",
|
||||||
|
@ -48,8 +62,21 @@ namespace RegexBot.Data.Migrations
|
||||||
migrationBuilder.DropTable(
|
migrationBuilder.DropTable(
|
||||||
name: "modlogs");
|
name: "modlogs");
|
||||||
|
|
||||||
|
migrationBuilder.DropPrimaryKey(
|
||||||
|
name: "pk_cache_usersinguild",
|
||||||
|
table: "cache_usersinguild");
|
||||||
|
|
||||||
|
migrationBuilder.DropIndex(
|
||||||
|
name: "ix_cache_usersinguild_user_id",
|
||||||
|
table: "cache_usersinguild");
|
||||||
|
|
||||||
migrationBuilder.AlterDatabase()
|
migrationBuilder.AlterDatabase()
|
||||||
.OldAnnotation("Npgsql:Enum:mod_log_type", "other,note,warn,timeout,kick,ban");
|
.OldAnnotation("Npgsql:Enum:mod_log_type", "other,note,warn,timeout,kick,ban");
|
||||||
|
|
||||||
|
migrationBuilder.AddPrimaryKey(
|
||||||
|
name: "pk_cache_usersinguild",
|
||||||
|
table: "cache_usersinguild",
|
||||||
|
columns: new[] { "user_id", "guild_id" });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -72,14 +72,14 @@ namespace RegexBot.Data.Migrations
|
||||||
|
|
||||||
modelBuilder.Entity("RegexBot.Data.CachedGuildUser", b =>
|
modelBuilder.Entity("RegexBot.Data.CachedGuildUser", b =>
|
||||||
{
|
{
|
||||||
b.Property<long>("UserId")
|
|
||||||
.HasColumnType("bigint")
|
|
||||||
.HasColumnName("user_id");
|
|
||||||
|
|
||||||
b.Property<long>("GuildId")
|
b.Property<long>("GuildId")
|
||||||
.HasColumnType("bigint")
|
.HasColumnType("bigint")
|
||||||
.HasColumnName("guild_id");
|
.HasColumnName("guild_id");
|
||||||
|
|
||||||
|
b.Property<long>("UserId")
|
||||||
|
.HasColumnType("bigint")
|
||||||
|
.HasColumnName("user_id");
|
||||||
|
|
||||||
b.Property<DateTimeOffset>("FirstSeenTime")
|
b.Property<DateTimeOffset>("FirstSeenTime")
|
||||||
.ValueGeneratedOnAdd()
|
.ValueGeneratedOnAdd()
|
||||||
.HasColumnType("timestamp with time zone")
|
.HasColumnType("timestamp with time zone")
|
||||||
|
@ -94,9 +94,12 @@ namespace RegexBot.Data.Migrations
|
||||||
.HasColumnType("text")
|
.HasColumnType("text")
|
||||||
.HasColumnName("nickname");
|
.HasColumnName("nickname");
|
||||||
|
|
||||||
b.HasKey("UserId", "GuildId")
|
b.HasKey("GuildId", "UserId")
|
||||||
.HasName("pk_cache_usersinguild");
|
.HasName("pk_cache_usersinguild");
|
||||||
|
|
||||||
|
b.HasIndex("UserId")
|
||||||
|
.HasDatabaseName("ix_cache_usersinguild_user_id");
|
||||||
|
|
||||||
b.ToTable("cache_usersinguild", (string)null);
|
b.ToTable("cache_usersinguild", (string)null);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue