mirror of
https://github.com/NoiTheCat/BirthdayBot.git
synced 2024-11-24 09:24:12 +00:00
Change data types from long to ulong
This commit is contained in:
parent
2c920e9794
commit
a3ac5d6ede
14 changed files with 404 additions and 68 deletions
|
@ -222,10 +222,10 @@ public class BirthdayModule : BotModuleBase {
|
|||
private static List<ListItem> GetSortedUserList(SocketGuild guild) {
|
||||
using var db = new BotDatabaseContext();
|
||||
var query = from row in db.UserEntries
|
||||
where row.GuildId == (long)guild.Id
|
||||
where row.GuildId == guild.Id
|
||||
orderby row.BirthMonth, row.BirthDay
|
||||
select new {
|
||||
UserId = (ulong)row.UserId,
|
||||
row.UserId,
|
||||
Month = row.BirthMonth,
|
||||
Day = row.BirthDay,
|
||||
Zone = row.TimeZone
|
||||
|
|
|
@ -56,7 +56,7 @@ public class ConfigModule : BotModuleBase {
|
|||
|
||||
[SlashCommand("set-channel", HelpPfxModOnly + HelpSubCmdChannel + HelpPofxBlankUnset)]
|
||||
public async Task CmdSetChannel([Summary(description: HelpOptChannel)] SocketTextChannel? channel = null) {
|
||||
await DoDatabaseUpdate(Context, s => s.AnnouncementChannel = (long?)channel?.Id);
|
||||
await DoDatabaseUpdate(Context, s => s.AnnouncementChannel = channel?.Id);
|
||||
await RespondAsync(":white_check_mark: The announcement channel has been " +
|
||||
(channel == null ? "unset." : $"set to **{channel.Name}**."));
|
||||
}
|
||||
|
@ -126,7 +126,7 @@ public class ConfigModule : BotModuleBase {
|
|||
await RespondAsync(":x: This role cannot be used for this setting.", ephemeral: true);
|
||||
return;
|
||||
}
|
||||
await DoDatabaseUpdate(Context, s => s.BirthdayRole = (long)role.Id);
|
||||
await DoDatabaseUpdate(Context, s => s.BirthdayRole = role.Id);
|
||||
await RespondAsync($":white_check_mark: The birthday role has been set to **{role.Name}**.").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
|
@ -136,7 +136,7 @@ public class ConfigModule : BotModuleBase {
|
|||
await RespondAsync(":x: This role cannot be used for this setting.", ephemeral: true);
|
||||
return;
|
||||
}
|
||||
await DoDatabaseUpdate(Context, s => s.ModeratorRole = (long?)role?.Id);
|
||||
await DoDatabaseUpdate(Context, s => s.ModeratorRole = role?.Id);
|
||||
await RespondAsync(":white_check_mark: The moderator role has been " +
|
||||
(role == null ? "unset." : $"set to **{role.Name}**."));
|
||||
}
|
||||
|
@ -154,7 +154,7 @@ public class ConfigModule : BotModuleBase {
|
|||
// setting: true to add (set), false to remove (unset)
|
||||
using var db = new BotDatabaseContext();
|
||||
var existing = db.BlocklistEntries
|
||||
.Where(bl => bl.GuildId == (long)user.Guild.Id && bl.UserId == (long)user.Id).FirstOrDefault();
|
||||
.Where(bl => bl.GuildId == user.Guild.Id && bl.UserId == user.Id).FirstOrDefault();
|
||||
|
||||
bool already = (existing != null) == setting;
|
||||
if (already) {
|
||||
|
@ -162,7 +162,7 @@ public class ConfigModule : BotModuleBase {
|
|||
return;
|
||||
}
|
||||
|
||||
if (setting) db.BlocklistEntries.Add(new BlocklistEntry() { GuildId = (long)user.Guild.Id, UserId = (long)user.Id });
|
||||
if (setting) db.BlocklistEntries.Add(new BlocklistEntry() { GuildId = user.Guild.Id, UserId = user.Id });
|
||||
else db.Remove(existing!);
|
||||
await db.SaveChangesAsync();
|
||||
|
||||
|
|
|
@ -24,8 +24,8 @@ class EnforceBlockingAttribute : PreconditionAttribute {
|
|||
|
||||
using var db = new BotDatabaseContext();
|
||||
var settings = (from row in db.GuildConfigurations
|
||||
where row.GuildId == (long)guild.Id
|
||||
select new { ModRole = (ulong?)row.ModeratorRole, ModMode = row.Moderated }).FirstOrDefault();
|
||||
where row.GuildId == guild.Id
|
||||
select new { ModRole = row.ModeratorRole, ModMode = row.Moderated }).FirstOrDefault();
|
||||
if (settings != null) {
|
||||
// Bot moderators override all blocking measures in place
|
||||
if (user.Roles.Any(r => r.Id == settings.ModRole)) return Task.FromResult(PreconditionResult.FromSuccess());
|
||||
|
@ -34,7 +34,7 @@ class EnforceBlockingAttribute : PreconditionAttribute {
|
|||
if (settings.ModMode) return Task.FromResult(PreconditionResult.FromError(FailModerated));
|
||||
|
||||
// Check if user exists in blocklist
|
||||
if (db.BlocklistEntries.Where(row => row.GuildId == (long)guild.Id && row.UserId == (long)user.Id).Any())
|
||||
if (db.BlocklistEntries.Where(row => row.GuildId == guild.Id && row.UserId == user.Id).Any())
|
||||
return Task.FromResult(PreconditionResult.FromError(FailBlocked));
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ class RequireBotModeratorAttribute : PreconditionAttribute {
|
|||
if (user.GuildPermissions.ManageGuild) return Task.FromResult(PreconditionResult.FromSuccess());
|
||||
using var db = new BotDatabaseContext();
|
||||
var checkRole = (ulong?)db.GuildConfigurations
|
||||
.Where(g => g.GuildId == (long)((SocketGuild)context.Guild).Id)
|
||||
.Where(g => g.GuildId == ((SocketGuild)context.Guild).Id)
|
||||
.Select(g => g.ModeratorRole).FirstOrDefault();
|
||||
if (checkRole.HasValue && user.Roles.Any(r => r.Id == checkRole.Value))
|
||||
return Task.FromResult(PreconditionResult.FromSuccess());
|
||||
|
|
|
@ -10,9 +10,9 @@ class AutoUserDownload : BackgroundService {
|
|||
|
||||
public override async Task OnTick(int tickCount, CancellationToken token) {
|
||||
// Take action if a guild's cache is incomplete...
|
||||
var incompleteCaches = ShardInstance.DiscordClient.Guilds.Where(g => !g.HasAllMembers).Select(g => (long)g.Id).ToHashSet();
|
||||
var incompleteCaches = ShardInstance.DiscordClient.Guilds.Where(g => !g.HasAllMembers).Select(g => g.Id).ToHashSet();
|
||||
// ...and if the guild contains any user data
|
||||
IEnumerable<long> mustFetch;
|
||||
IEnumerable<ulong> mustFetch;
|
||||
try {
|
||||
await DbConcurrentOperationsLock.WaitAsync(token);
|
||||
using var db = new BotDatabaseContext();
|
||||
|
|
|
@ -27,9 +27,9 @@ class BirthdayRoleUpdate : BackgroundService {
|
|||
private async Task ProcessBirthdaysAsync(CancellationToken token) {
|
||||
// For database efficiency, fetch all database information at once before proceeding
|
||||
using var db = new BotDatabaseContext();
|
||||
var shardGuilds = ShardInstance.DiscordClient.Guilds.Select(g => (long)g.Id).ToHashSet();
|
||||
var shardGuilds = ShardInstance.DiscordClient.Guilds.Select(g => g.Id).ToHashSet();
|
||||
var presentGuildSettings = db.GuildConfigurations.Where(s => shardGuilds.Contains(s.GuildId));
|
||||
var guildChecks = presentGuildSettings.ToList().Select(s => Tuple.Create((ulong)s.GuildId, s));
|
||||
var guildChecks = presentGuildSettings.ToList().Select(s => Tuple.Create(s.GuildId, s));
|
||||
|
||||
var exceptions = new List<Exception>();
|
||||
foreach (var (guildId, settings) in guildChecks) {
|
||||
|
|
|
@ -34,7 +34,7 @@ class DataRetention : BackgroundService {
|
|||
var now = DateTimeOffset.UtcNow;
|
||||
|
||||
// Update guilds
|
||||
var localGuilds = ShardInstance.DiscordClient.Guilds.Select(g => (long)g.Id).ToList();
|
||||
var localGuilds = ShardInstance.DiscordClient.Guilds.Select(g => g.Id).ToList();
|
||||
var updatedGuilds = await db.GuildConfigurations
|
||||
.Where(g => localGuilds.Contains(g.GuildId))
|
||||
.ExecuteUpdateAsync(upd => upd.SetProperty(p => p.LastSeen, now));
|
||||
|
@ -42,9 +42,9 @@ class DataRetention : BackgroundService {
|
|||
// Update guild users
|
||||
var updatedUsers = 0;
|
||||
foreach (var guild in ShardInstance.DiscordClient.Guilds) {
|
||||
var localUsers = guild.Users.Select(u => (long)u.Id).ToList();
|
||||
var localUsers = guild.Users.Select(u => u.Id).ToList();
|
||||
updatedUsers += await db.UserEntries
|
||||
.Where(gu => gu.GuildId == (long)guild.Id)
|
||||
.Where(gu => gu.GuildId == guild.Id)
|
||||
.Where(gu => localUsers.Contains(gu.UserId))
|
||||
.ExecuteUpdateAsync(upd => upd.SetProperty(p => p.LastSeen, now));
|
||||
}
|
||||
|
|
|
@ -6,11 +6,9 @@ namespace BirthdayBot.Data;
|
|||
[Table("banned_users")]
|
||||
public class BlocklistEntry {
|
||||
[Key]
|
||||
[Column("guild_id")]
|
||||
public long GuildId { get; set; }
|
||||
public ulong GuildId { get; set; }
|
||||
[Key]
|
||||
[Column("user_id")]
|
||||
public long UserId { get; set; }
|
||||
public ulong UserId { get; set; }
|
||||
|
||||
[ForeignKey(nameof(GuildConfig.GuildId))]
|
||||
[InverseProperty(nameof(GuildConfig.BlockedUsers))]
|
||||
|
|
|
@ -6,14 +6,14 @@ internal static class Extensions {
|
|||
/// If it doesn't exist in the database, <see cref="GuildConfig.IsNew"/> returns true.
|
||||
/// </summary>
|
||||
public static GuildConfig GetConfigOrNew(this SocketGuild guild, BotDatabaseContext db)
|
||||
=> db.GuildConfigurations.Where(g => g.GuildId == (long)guild.Id).FirstOrDefault()
|
||||
?? new GuildConfig() { IsNew = true, GuildId = (long)guild.Id };
|
||||
=> db.GuildConfigurations.Where(g => g.GuildId == guild.Id).FirstOrDefault()
|
||||
?? new GuildConfig() { IsNew = true, GuildId = guild.Id };
|
||||
|
||||
/// <summary>
|
||||
/// Gets the corresponding <see cref="UserEntry"/> for this user in this guild, or a new one if one does not exist.
|
||||
/// If it doesn't exist in the database, <see cref="UserEntry.IsNew"/> returns true.
|
||||
/// </summary>
|
||||
public static UserEntry GetUserEntryOrNew(this SocketGuildUser user, BotDatabaseContext db)
|
||||
=> db.UserEntries.Where(u => u.GuildId == (long)user.Guild.Id && u.UserId == (long)user.Id).FirstOrDefault()
|
||||
?? new UserEntry() { IsNew = true, GuildId = (long)user.Guild.Id, UserId = (long)user.Id };
|
||||
=> db.UserEntries.Where(u => u.GuildId == user.Guild.Id && u.UserId == user.Id).FirstOrDefault()
|
||||
?? new UserEntry() { IsNew = true, GuildId = user.Guild.Id, UserId = user.Id };
|
||||
}
|
|
@ -10,25 +10,27 @@ public class GuildConfig {
|
|||
}
|
||||
|
||||
[Key]
|
||||
[Column("guild_id")]
|
||||
public long GuildId { get; set; }
|
||||
public ulong GuildId { get; set; }
|
||||
|
||||
[Column("role_id")]
|
||||
public long? BirthdayRole { get; set; }
|
||||
public ulong? BirthdayRole { get; set; }
|
||||
|
||||
[Column("channel_announce_id")]
|
||||
public long? AnnouncementChannel { get; set; }
|
||||
public ulong? AnnouncementChannel { get; set; }
|
||||
|
||||
[Column("time_zone")]
|
||||
public string? GuildTimeZone { get; set; }
|
||||
[Column("moderated")]
|
||||
|
||||
public bool Moderated { get; set; }
|
||||
[Column("moderator_role")]
|
||||
public long? ModeratorRole { get; set; }
|
||||
[Column("announce_message")]
|
||||
|
||||
public ulong? ModeratorRole { get; set; }
|
||||
|
||||
public string? AnnounceMessage { get; set; }
|
||||
[Column("announce_message_pl")]
|
||||
|
||||
public string? AnnounceMessagePl { get; set; }
|
||||
[Column("announce_ping")]
|
||||
|
||||
public bool AnnouncePing { get; set; }
|
||||
[Column("last_seen")]
|
||||
|
||||
public DateTimeOffset LastSeen { get; set; }
|
||||
|
||||
[InverseProperty(nameof(BlocklistEntry.Guild))]
|
||||
|
|
161
Data/Migrations/20221123062847_LongToUlong.Designer.cs
generated
Normal file
161
Data/Migrations/20221123062847_LongToUlong.Designer.cs
generated
Normal file
|
@ -0,0 +1,161 @@
|
|||
// <auto-generated />
|
||||
using System;
|
||||
using BirthdayBot.Data;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace BirthdayBot.Data.Migrations
|
||||
{
|
||||
[DbContext(typeof(BotDatabaseContext))]
|
||||
[Migration("20221123062847_LongToUlong")]
|
||||
partial class LongToUlong
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "7.0.0")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
||||
|
||||
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
||||
|
||||
modelBuilder.Entity("BirthdayBot.Data.BlocklistEntry", b =>
|
||||
{
|
||||
b.Property<decimal>("GuildId")
|
||||
.HasColumnType("numeric(20,0)")
|
||||
.HasColumnName("guild_id");
|
||||
|
||||
b.Property<decimal>("UserId")
|
||||
.HasColumnType("numeric(20,0)")
|
||||
.HasColumnName("user_id");
|
||||
|
||||
b.HasKey("GuildId", "UserId")
|
||||
.HasName("banned_users_pkey");
|
||||
|
||||
b.ToTable("banned_users", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("BirthdayBot.Data.GuildConfig", b =>
|
||||
{
|
||||
b.Property<decimal>("GuildId")
|
||||
.HasColumnType("numeric(20,0)")
|
||||
.HasColumnName("guild_id");
|
||||
|
||||
b.Property<string>("AnnounceMessage")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("announce_message");
|
||||
|
||||
b.Property<string>("AnnounceMessagePl")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("announce_message_pl");
|
||||
|
||||
b.Property<bool>("AnnouncePing")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("announce_ping");
|
||||
|
||||
b.Property<decimal?>("AnnouncementChannel")
|
||||
.HasColumnType("numeric(20,0)")
|
||||
.HasColumnName("channel_announce_id");
|
||||
|
||||
b.Property<decimal?>("BirthdayRole")
|
||||
.HasColumnType("numeric(20,0)")
|
||||
.HasColumnName("role_id");
|
||||
|
||||
b.Property<string>("GuildTimeZone")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("time_zone");
|
||||
|
||||
b.Property<DateTimeOffset>("LastSeen")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("last_seen")
|
||||
.HasDefaultValueSql("now()");
|
||||
|
||||
b.Property<bool>("Moderated")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("moderated");
|
||||
|
||||
b.Property<decimal?>("ModeratorRole")
|
||||
.HasColumnType("numeric(20,0)")
|
||||
.HasColumnName("moderator_role");
|
||||
|
||||
b.HasKey("GuildId")
|
||||
.HasName("settings_pkey");
|
||||
|
||||
b.ToTable("settings", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("BirthdayBot.Data.UserEntry", b =>
|
||||
{
|
||||
b.Property<decimal>("GuildId")
|
||||
.HasColumnType("numeric(20,0)")
|
||||
.HasColumnName("guild_id");
|
||||
|
||||
b.Property<decimal>("UserId")
|
||||
.HasColumnType("numeric(20,0)")
|
||||
.HasColumnName("user_id");
|
||||
|
||||
b.Property<int>("BirthDay")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("birth_day");
|
||||
|
||||
b.Property<int>("BirthMonth")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("birth_month");
|
||||
|
||||
b.Property<DateTimeOffset>("LastSeen")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("last_seen")
|
||||
.HasDefaultValueSql("now()");
|
||||
|
||||
b.Property<string>("TimeZone")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("time_zone");
|
||||
|
||||
b.HasKey("GuildId", "UserId")
|
||||
.HasName("user_birthdays_pkey");
|
||||
|
||||
b.ToTable("user_birthdays", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("BirthdayBot.Data.BlocklistEntry", b =>
|
||||
{
|
||||
b.HasOne("BirthdayBot.Data.GuildConfig", "Guild")
|
||||
.WithMany("BlockedUsers")
|
||||
.HasForeignKey("GuildId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.HasConstraintName("banned_users_guild_id_fkey");
|
||||
|
||||
b.Navigation("Guild");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("BirthdayBot.Data.UserEntry", b =>
|
||||
{
|
||||
b.HasOne("BirthdayBot.Data.GuildConfig", "Guild")
|
||||
.WithMany("UserEntries")
|
||||
.HasForeignKey("GuildId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.HasConstraintName("user_birthdays_guild_id_fkey");
|
||||
|
||||
b.Navigation("Guild");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("BirthdayBot.Data.GuildConfig", b =>
|
||||
{
|
||||
b.Navigation("BlockedUsers");
|
||||
|
||||
b.Navigation("UserEntries");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
177
Data/Migrations/20221123062847_LongToUlong.cs
Normal file
177
Data/Migrations/20221123062847_LongToUlong.cs
Normal file
|
@ -0,0 +1,177 @@
|
|||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace BirthdayBot.Data.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class LongToUlong : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
// NOTE: manually edited - must drop and re-add foreign key due to altered types
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "user_birthdays_guild_id_fkey",
|
||||
table: "user_birthdays");
|
||||
|
||||
migrationBuilder.AlterColumn<decimal>(
|
||||
name: "user_id",
|
||||
table: "user_birthdays",
|
||||
type: "numeric(20,0)",
|
||||
nullable: false,
|
||||
oldClrType: typeof(long),
|
||||
oldType: "bigint");
|
||||
|
||||
migrationBuilder.AlterColumn<decimal>(
|
||||
name: "guild_id",
|
||||
table: "user_birthdays",
|
||||
type: "numeric(20,0)",
|
||||
nullable: false,
|
||||
oldClrType: typeof(long),
|
||||
oldType: "bigint");
|
||||
|
||||
migrationBuilder.AlterColumn<decimal>(
|
||||
name: "role_id",
|
||||
table: "settings",
|
||||
type: "numeric(20,0)",
|
||||
nullable: true,
|
||||
oldClrType: typeof(long),
|
||||
oldType: "bigint",
|
||||
oldNullable: true);
|
||||
|
||||
migrationBuilder.AlterColumn<decimal>(
|
||||
name: "moderator_role",
|
||||
table: "settings",
|
||||
type: "numeric(20,0)",
|
||||
nullable: true,
|
||||
oldClrType: typeof(long),
|
||||
oldType: "bigint",
|
||||
oldNullable: true);
|
||||
|
||||
migrationBuilder.AlterColumn<decimal>(
|
||||
name: "channel_announce_id",
|
||||
table: "settings",
|
||||
type: "numeric(20,0)",
|
||||
nullable: true,
|
||||
oldClrType: typeof(long),
|
||||
oldType: "bigint",
|
||||
oldNullable: true);
|
||||
|
||||
migrationBuilder.AlterColumn<decimal>(
|
||||
name: "guild_id",
|
||||
table: "settings",
|
||||
type: "numeric(20,0)",
|
||||
nullable: false,
|
||||
oldClrType: typeof(long),
|
||||
oldType: "bigint");
|
||||
|
||||
migrationBuilder.AlterColumn<decimal>(
|
||||
name: "user_id",
|
||||
table: "banned_users",
|
||||
type: "numeric(20,0)",
|
||||
nullable: false,
|
||||
oldClrType: typeof(long),
|
||||
oldType: "bigint");
|
||||
|
||||
migrationBuilder.AlterColumn<decimal>(
|
||||
name: "guild_id",
|
||||
table: "banned_users",
|
||||
type: "numeric(20,0)",
|
||||
nullable: false,
|
||||
oldClrType: typeof(long),
|
||||
oldType: "bigint");
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "user_birthdays_guild_id_fkey",
|
||||
table: "user_birthdays",
|
||||
column: "guild_id",
|
||||
principalTable: "settings",
|
||||
principalColumn: "guild_id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "user_birthdays_guild_id_fkey",
|
||||
table: "user_birthdays");
|
||||
|
||||
migrationBuilder.AlterColumn<long>(
|
||||
name: "user_id",
|
||||
table: "user_birthdays",
|
||||
type: "bigint",
|
||||
nullable: false,
|
||||
oldClrType: typeof(decimal),
|
||||
oldType: "numeric(20,0)");
|
||||
|
||||
migrationBuilder.AlterColumn<long>(
|
||||
name: "guild_id",
|
||||
table: "user_birthdays",
|
||||
type: "bigint",
|
||||
nullable: false,
|
||||
oldClrType: typeof(decimal),
|
||||
oldType: "numeric(20,0)");
|
||||
|
||||
migrationBuilder.AlterColumn<long>(
|
||||
name: "role_id",
|
||||
table: "settings",
|
||||
type: "bigint",
|
||||
nullable: true,
|
||||
oldClrType: typeof(decimal),
|
||||
oldType: "numeric(20,0)",
|
||||
oldNullable: true);
|
||||
|
||||
migrationBuilder.AlterColumn<long>(
|
||||
name: "moderator_role",
|
||||
table: "settings",
|
||||
type: "bigint",
|
||||
nullable: true,
|
||||
oldClrType: typeof(decimal),
|
||||
oldType: "numeric(20,0)",
|
||||
oldNullable: true);
|
||||
|
||||
migrationBuilder.AlterColumn<long>(
|
||||
name: "channel_announce_id",
|
||||
table: "settings",
|
||||
type: "bigint",
|
||||
nullable: true,
|
||||
oldClrType: typeof(decimal),
|
||||
oldType: "numeric(20,0)",
|
||||
oldNullable: true);
|
||||
|
||||
migrationBuilder.AlterColumn<long>(
|
||||
name: "guild_id",
|
||||
table: "settings",
|
||||
type: "bigint",
|
||||
nullable: false,
|
||||
oldClrType: typeof(decimal),
|
||||
oldType: "numeric(20,0)");
|
||||
|
||||
migrationBuilder.AlterColumn<long>(
|
||||
name: "user_id",
|
||||
table: "banned_users",
|
||||
type: "bigint",
|
||||
nullable: false,
|
||||
oldClrType: typeof(decimal),
|
||||
oldType: "numeric(20,0)");
|
||||
|
||||
migrationBuilder.AlterColumn<long>(
|
||||
name: "guild_id",
|
||||
table: "banned_users",
|
||||
type: "bigint",
|
||||
nullable: false,
|
||||
oldClrType: typeof(decimal),
|
||||
oldType: "numeric(20,0)");
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "user_birthdays_guild_id_fkey",
|
||||
table: "user_birthdays",
|
||||
column: "guild_id",
|
||||
principalTable: "settings",
|
||||
principalColumn: "guild_id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -17,19 +17,19 @@ namespace BirthdayBot.Data.Migrations
|
|||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "6.0.3")
|
||||
.HasAnnotation("ProductVersion", "7.0.0")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
||||
|
||||
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
||||
|
||||
modelBuilder.Entity("BirthdayBot.Data.BlocklistEntry", b =>
|
||||
{
|
||||
b.Property<long>("GuildId")
|
||||
.HasColumnType("bigint")
|
||||
b.Property<decimal>("GuildId")
|
||||
.HasColumnType("numeric(20,0)")
|
||||
.HasColumnName("guild_id");
|
||||
|
||||
b.Property<long>("UserId")
|
||||
.HasColumnType("bigint")
|
||||
b.Property<decimal>("UserId")
|
||||
.HasColumnType("numeric(20,0)")
|
||||
.HasColumnName("user_id");
|
||||
|
||||
b.HasKey("GuildId", "UserId")
|
||||
|
@ -40,8 +40,8 @@ namespace BirthdayBot.Data.Migrations
|
|||
|
||||
modelBuilder.Entity("BirthdayBot.Data.GuildConfig", b =>
|
||||
{
|
||||
b.Property<long>("GuildId")
|
||||
.HasColumnType("bigint")
|
||||
b.Property<decimal>("GuildId")
|
||||
.HasColumnType("numeric(20,0)")
|
||||
.HasColumnName("guild_id");
|
||||
|
||||
b.Property<string>("AnnounceMessage")
|
||||
|
@ -56,10 +56,18 @@ namespace BirthdayBot.Data.Migrations
|
|||
.HasColumnType("boolean")
|
||||
.HasColumnName("announce_ping");
|
||||
|
||||
b.Property<long?>("ChannelAnnounceId")
|
||||
.HasColumnType("bigint")
|
||||
b.Property<decimal?>("AnnouncementChannel")
|
||||
.HasColumnType("numeric(20,0)")
|
||||
.HasColumnName("channel_announce_id");
|
||||
|
||||
b.Property<decimal?>("BirthdayRole")
|
||||
.HasColumnType("numeric(20,0)")
|
||||
.HasColumnName("role_id");
|
||||
|
||||
b.Property<string>("GuildTimeZone")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("time_zone");
|
||||
|
||||
b.Property<DateTimeOffset>("LastSeen")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("timestamp with time zone")
|
||||
|
@ -70,18 +78,10 @@ namespace BirthdayBot.Data.Migrations
|
|||
.HasColumnType("boolean")
|
||||
.HasColumnName("moderated");
|
||||
|
||||
b.Property<long?>("ModeratorRole")
|
||||
.HasColumnType("bigint")
|
||||
b.Property<decimal?>("ModeratorRole")
|
||||
.HasColumnType("numeric(20,0)")
|
||||
.HasColumnName("moderator_role");
|
||||
|
||||
b.Property<long?>("RoleId")
|
||||
.HasColumnType("bigint")
|
||||
.HasColumnName("role_id");
|
||||
|
||||
b.Property<string>("TimeZone")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("time_zone");
|
||||
|
||||
b.HasKey("GuildId")
|
||||
.HasName("settings_pkey");
|
||||
|
||||
|
@ -90,12 +90,12 @@ namespace BirthdayBot.Data.Migrations
|
|||
|
||||
modelBuilder.Entity("BirthdayBot.Data.UserEntry", b =>
|
||||
{
|
||||
b.Property<long>("GuildId")
|
||||
.HasColumnType("bigint")
|
||||
b.Property<decimal>("GuildId")
|
||||
.HasColumnType("numeric(20,0)")
|
||||
.HasColumnName("guild_id");
|
||||
|
||||
b.Property<long>("UserId")
|
||||
.HasColumnType("bigint")
|
||||
b.Property<decimal>("UserId")
|
||||
.HasColumnType("numeric(20,0)")
|
||||
.HasColumnName("user_id");
|
||||
|
||||
b.Property<int>("BirthDay")
|
||||
|
|
|
@ -6,18 +6,16 @@ namespace BirthdayBot.Data;
|
|||
[Table("user_birthdays")]
|
||||
public class UserEntry {
|
||||
[Key]
|
||||
[Column("guild_id")]
|
||||
public long GuildId { get; set; }
|
||||
public ulong GuildId { get; set; }
|
||||
[Key]
|
||||
[Column("user_id")]
|
||||
public long UserId { get; set; }
|
||||
[Column("birth_month")]
|
||||
public ulong UserId { get; set; }
|
||||
|
||||
public int BirthMonth { get; set; }
|
||||
[Column("birth_day")]
|
||||
|
||||
public int BirthDay { get; set; }
|
||||
[Column("time_zone")]
|
||||
|
||||
public string? TimeZone { get; set; }
|
||||
[Column("last_seen")]
|
||||
|
||||
public DateTimeOffset LastSeen { get; set; }
|
||||
|
||||
[ForeignKey(nameof(GuildConfig.GuildId))]
|
||||
|
|
Loading…
Reference in a new issue