users joining raids are now added to polls
added testsystem
This commit is contained in:
parent
ef1c301c05
commit
d9da5572a2
9 changed files with 1070 additions and 0 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -24,7 +24,9 @@ DiscordBot/token.txt
|
||||||
DiscordBot/debugtoken.txt
|
DiscordBot/debugtoken.txt
|
||||||
Lieb/discordAppSecret.txt
|
Lieb/discordAppSecret.txt
|
||||||
publish.sh
|
publish.sh
|
||||||
|
publishStaging.sh
|
||||||
getDatabase.sh
|
getDatabase.sh
|
||||||
|
copyDatabaseToStaging.sh
|
||||||
TODO.txt
|
TODO.txt
|
||||||
|
|
||||||
# Build results
|
# Build results
|
||||||
|
|
12
DiscordBot/appsettings.Staging.json
Normal file
12
DiscordBot/appsettings.Staging.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AllowedHosts": "*",
|
||||||
|
"HttpClients": {
|
||||||
|
"LiebWebsite": "https://lieb.games:4430"
|
||||||
|
}
|
||||||
|
}
|
|
@ -109,5 +109,37 @@ namespace Lieb.Data
|
||||||
PollAnswer answer = poll.Answers.First(a => a.UserId == userId);
|
PollAnswer answer = poll.Answers.First(a => a.UserId == userId);
|
||||||
answer.PollOptionId = pollOptionId;
|
answer.PollOptionId = pollOptionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task AddUser(int pollId, ulong userId)
|
||||||
|
{
|
||||||
|
using var context = _contextFactory.CreateDbContext();
|
||||||
|
Poll? poll = context.Polls
|
||||||
|
.Include(p => p.Answers)
|
||||||
|
.FirstOrDefault(p => p.PollId == pollId && p.Answers.Where(a => a.UserId == userId).Any());
|
||||||
|
|
||||||
|
if (poll == null) return;
|
||||||
|
|
||||||
|
poll.Answers.Add(new PollAnswer()
|
||||||
|
{
|
||||||
|
UserId = userId
|
||||||
|
});
|
||||||
|
await context.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task RemoveUser(int pollId, ulong userId)
|
||||||
|
{
|
||||||
|
using var context = _contextFactory.CreateDbContext();
|
||||||
|
Poll? poll = context.Polls
|
||||||
|
.Include(p => p.Answers)
|
||||||
|
.FirstOrDefault(p => p.PollId == pollId && p.Answers.Where(a => a.UserId == userId).Any());
|
||||||
|
|
||||||
|
if (poll == null) return;
|
||||||
|
|
||||||
|
PollAnswer answer = poll.Answers.First(a => a.UserId == userId);
|
||||||
|
context.Remove(answer);
|
||||||
|
await context.SaveChangesAsync();
|
||||||
|
poll.Answers.Remove(answer);
|
||||||
|
await context.SaveChangesAsync();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -166,6 +166,10 @@ namespace Lieb.Data
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
foreach(Poll poll in context.Polls.Where(p => p.RaidId == raidId && !p.Answers.Where(a => a.UserId == liebUserId).Any()))
|
||||||
|
{
|
||||||
|
await _pollService.AddUser(poll.PollId, liebUserId);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -202,6 +206,10 @@ namespace Lieb.Data
|
||||||
context.RaidSignUps.Add(signUp);
|
context.RaidSignUps.Add(signUp);
|
||||||
}
|
}
|
||||||
await context.SaveChangesAsync();
|
await context.SaveChangesAsync();
|
||||||
|
foreach(Poll poll in context.Polls.Where(p => p.RaidId == raidId && !p.Answers.Where(a => a.UserId == liebUserId).Any()))
|
||||||
|
{
|
||||||
|
await _pollService.AddUser(poll.PollId, liebUserId);
|
||||||
|
}
|
||||||
await LogSignUp(signUp, userName, signedUpByUserId);
|
await LogSignUp(signUp, userName, signedUpByUserId);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -240,6 +248,10 @@ namespace Lieb.Data
|
||||||
await LogSignUp(signUp, signUp.LiebUser.Name, signedOffByUserId);
|
await LogSignUp(signUp, signUp.LiebUser.Name, signedOffByUserId);
|
||||||
}
|
}
|
||||||
await context.SaveChangesAsync();
|
await context.SaveChangesAsync();
|
||||||
|
foreach(Poll poll in context.Polls.Where(p => p.RaidId == raidId && !p.Answers.Where(a => a.UserId == liebUserId).Any()))
|
||||||
|
{
|
||||||
|
await _pollService.RemoveUser(poll.PollId, liebUserId);
|
||||||
|
}
|
||||||
await _discordService.PostRaidMessage(raidId);
|
await _discordService.PostRaidMessage(raidId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
755
Lieb/Migrations/20230103181756_PollsAndMinUsers.Designer.cs
generated
Normal file
755
Lieb/Migrations/20230103181756_PollsAndMinUsers.Designer.cs
generated
Normal file
|
@ -0,0 +1,755 @@
|
||||||
|
// <auto-generated />
|
||||||
|
using System;
|
||||||
|
using Lieb.Data;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Lieb.Migrations
|
||||||
|
{
|
||||||
|
[DbContext(typeof(LiebContext))]
|
||||||
|
[Migration("20230103181756_PollsAndMinUsers")]
|
||||||
|
partial class PollsAndMinUsers
|
||||||
|
{
|
||||||
|
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
#pragma warning disable 612, 618
|
||||||
|
modelBuilder.HasAnnotation("ProductVersion", "6.0.10");
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.DiscordSettings", b =>
|
||||||
|
{
|
||||||
|
b.Property<ulong>("DiscordSettingsId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("ChangeUserNames")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<ulong>("DiscordLogChannel")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("DiscordSettingsId");
|
||||||
|
|
||||||
|
b.ToTable("DiscordSettings", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Equipped", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("EquippedId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("CanTank")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("GuildWars2AccountId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("GuildWars2BuildId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("EquippedId");
|
||||||
|
|
||||||
|
b.HasIndex("GuildWars2AccountId");
|
||||||
|
|
||||||
|
b.HasIndex("GuildWars2BuildId");
|
||||||
|
|
||||||
|
b.ToTable("Equipped", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.GuildWars2Account", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("GuildWars2AccountId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("AccountName")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("ApiKey")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<ulong?>("LiebUserId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("GuildWars2AccountId");
|
||||||
|
|
||||||
|
b.HasIndex("LiebUserId");
|
||||||
|
|
||||||
|
b.ToTable("GuildWars2Account", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.GuildWars2Build", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("GuildWars2BuildId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("Alacrity")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("BuildName")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(60)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int>("Class")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("DamageType")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("EliteSpecialization")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("Might")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("Quickness")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Source")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("SourceLink")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<bool>("UseInRandomRaid")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("GuildWars2BuildId");
|
||||||
|
|
||||||
|
b.ToTable("GuildWars2Build", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.DiscordRaidMessage", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("DiscordRaidMessageId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<ulong>("DiscordChannelId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<ulong>("DiscordGuildId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<ulong>("DiscordMessageId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int?>("RaidId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int?>("RaidTemplateId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("DiscordRaidMessageId");
|
||||||
|
|
||||||
|
b.HasIndex("RaidId");
|
||||||
|
|
||||||
|
b.HasIndex("RaidTemplateId");
|
||||||
|
|
||||||
|
b.ToTable("DiscordRaidMessage", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.Raid", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("RaidId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Description")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(1000)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<DateTimeOffset>("EndTimeUTC")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int>("EventType")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<DateTimeOffset>("FreeForAllTimeUTC")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("Guild")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(50)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<DateTimeOffset>("MinUserDeadLineUTC")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int?>("MinUserPollId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("MinUsers")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("MoveFlexUsers")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Organizer")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(50)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<ulong?>("RaidOwnerId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("RaidType")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("RequiredRole")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<DateTimeOffset>("StartTimeUTC")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("Title")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(100)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("VoiceChat")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(50)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.HasKey("RaidId");
|
||||||
|
|
||||||
|
b.ToTable("Raid", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.RaidReminder", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("RaidReminderId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<ulong>("DiscordChannelId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<ulong>("DiscordServerId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Message")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(1000)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int?>("RaidId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int?>("RaidTemplateId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<DateTimeOffset>("ReminderTimeUTC")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int>("RoleId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("RoleType")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("Sent")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("TimeType")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("Type")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("RaidReminderId");
|
||||||
|
|
||||||
|
b.HasIndex("RaidId");
|
||||||
|
|
||||||
|
b.HasIndex("RaidTemplateId");
|
||||||
|
|
||||||
|
b.ToTable("RaidReminder", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.RaidRole", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("RaidRoleId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Description")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(200)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<bool>("IsRandomSignUpRole")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(40)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int?>("RaidId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int?>("RaidTemplateId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("Spots")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("RaidRoleId");
|
||||||
|
|
||||||
|
b.HasIndex("RaidId");
|
||||||
|
|
||||||
|
b.HasIndex("RaidTemplateId");
|
||||||
|
|
||||||
|
b.ToTable("RaidRole", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.RaidSignUp", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("RaidSignUpId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("ExternalUserName")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int?>("GuildWars2AccountId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<ulong?>("LiebUserId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("RaidId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("RaidRoleId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("SignUpType")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("RaidSignUpId");
|
||||||
|
|
||||||
|
b.HasIndex("GuildWars2AccountId");
|
||||||
|
|
||||||
|
b.HasIndex("LiebUserId");
|
||||||
|
|
||||||
|
b.HasIndex("RaidId");
|
||||||
|
|
||||||
|
b.HasIndex("RaidRoleId");
|
||||||
|
|
||||||
|
b.ToTable("RaidSignUp", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.RaidTemplate", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("RaidTemplateId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("CreateDaysBefore")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Description")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(1000)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<DateTime>("EndTime")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int>("EventType")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<DateTime>("FreeForAllTime")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("Guild")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(50)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int>("Interval")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<DateTime>("MinUserDeadLine")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int>("MinUsers")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("MoveFlexUsers")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Organizer")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(50)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<ulong?>("RaidOwnerId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("RaidType")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("RequiredRole")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<DateTime>("StartTime")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("TimeZone")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("Title")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(100)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("VoiceChat")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(50)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.HasKey("RaidTemplateId");
|
||||||
|
|
||||||
|
b.ToTable("RaidTemplate", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.LiebRole", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("LiebRoleId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("Level")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("LevelToAssign")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("RoleName")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(40)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int>("Type")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("LiebRoleId");
|
||||||
|
|
||||||
|
b.ToTable("LiebRole", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.LiebUser", b =>
|
||||||
|
{
|
||||||
|
b.Property<ulong>("Id")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("AlwaysSignUpWithMainAccount")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<DateTime?>("BannedUntil")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<DateTime?>("Birthday")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<DateTime>("CreatedAt")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<DateTime?>("LastSignUpAt")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int>("MainGW2Account")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(40)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("Pronouns")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(60)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<bool>("ReminderSubscription")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("LiebUser", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.Poll.Poll", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("PollId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Question")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int?>("RaidId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("PollId");
|
||||||
|
|
||||||
|
b.ToTable("Poll", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.Poll.PollAnswer", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("PollAnswerId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int?>("PollId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int?>("PollOptionId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<ulong>("UserId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("PollAnswerId");
|
||||||
|
|
||||||
|
b.HasIndex("PollId");
|
||||||
|
|
||||||
|
b.ToTable("PollAnswer", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.Poll.PollOption", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("PollOptionId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int?>("PollId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("PollOptionId");
|
||||||
|
|
||||||
|
b.HasIndex("PollId");
|
||||||
|
|
||||||
|
b.ToTable("PollOption", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.RoleAssignment", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("RoleAssignmentId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("LiebRoleId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<ulong>("LiebUserId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("RoleAssignmentId");
|
||||||
|
|
||||||
|
b.HasIndex("LiebRoleId");
|
||||||
|
|
||||||
|
b.HasIndex("LiebUserId");
|
||||||
|
|
||||||
|
b.ToTable("RoleAssignment", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Equipped", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Lieb.Models.GuildWars2.GuildWars2Account", "GuildWars2Account")
|
||||||
|
.WithMany("EquippedBuilds")
|
||||||
|
.HasForeignKey("GuildWars2AccountId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("Lieb.Models.GuildWars2.GuildWars2Build", "GuildWars2Build")
|
||||||
|
.WithMany("EquippedRoles")
|
||||||
|
.HasForeignKey("GuildWars2BuildId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("GuildWars2Account");
|
||||||
|
|
||||||
|
b.Navigation("GuildWars2Build");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.GuildWars2Account", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Lieb.Models.LiebUser", null)
|
||||||
|
.WithMany("GuildWars2Accounts")
|
||||||
|
.HasForeignKey("LiebUserId");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.DiscordRaidMessage", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Lieb.Models.GuildWars2.Raid.Raid", null)
|
||||||
|
.WithMany("DiscordRaidMessages")
|
||||||
|
.HasForeignKey("RaidId");
|
||||||
|
|
||||||
|
b.HasOne("Lieb.Models.GuildWars2.Raid.RaidTemplate", null)
|
||||||
|
.WithMany("DiscordRaidMessages")
|
||||||
|
.HasForeignKey("RaidTemplateId");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.RaidReminder", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Lieb.Models.GuildWars2.Raid.Raid", null)
|
||||||
|
.WithMany("Reminders")
|
||||||
|
.HasForeignKey("RaidId");
|
||||||
|
|
||||||
|
b.HasOne("Lieb.Models.GuildWars2.Raid.RaidTemplate", null)
|
||||||
|
.WithMany("Reminders")
|
||||||
|
.HasForeignKey("RaidTemplateId");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.RaidRole", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Lieb.Models.GuildWars2.Raid.Raid", null)
|
||||||
|
.WithMany("Roles")
|
||||||
|
.HasForeignKey("RaidId");
|
||||||
|
|
||||||
|
b.HasOne("Lieb.Models.GuildWars2.Raid.RaidTemplate", null)
|
||||||
|
.WithMany("Roles")
|
||||||
|
.HasForeignKey("RaidTemplateId");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.RaidSignUp", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Lieb.Models.GuildWars2.GuildWars2Account", "GuildWars2Account")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("GuildWars2AccountId");
|
||||||
|
|
||||||
|
b.HasOne("Lieb.Models.LiebUser", "LiebUser")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("LiebUserId");
|
||||||
|
|
||||||
|
b.HasOne("Lieb.Models.GuildWars2.Raid.Raid", "Raid")
|
||||||
|
.WithMany("SignUps")
|
||||||
|
.HasForeignKey("RaidId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("Lieb.Models.GuildWars2.Raid.RaidRole", "RaidRole")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("RaidRoleId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("GuildWars2Account");
|
||||||
|
|
||||||
|
b.Navigation("LiebUser");
|
||||||
|
|
||||||
|
b.Navigation("Raid");
|
||||||
|
|
||||||
|
b.Navigation("RaidRole");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.Poll.PollAnswer", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Lieb.Models.Poll.Poll", null)
|
||||||
|
.WithMany("Answers")
|
||||||
|
.HasForeignKey("PollId");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.Poll.PollOption", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Lieb.Models.Poll.Poll", null)
|
||||||
|
.WithMany("Options")
|
||||||
|
.HasForeignKey("PollId");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.RoleAssignment", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Lieb.Models.LiebRole", "LiebRole")
|
||||||
|
.WithMany("RoleAssignments")
|
||||||
|
.HasForeignKey("LiebRoleId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("Lieb.Models.LiebUser", "LiebUser")
|
||||||
|
.WithMany("RoleAssignments")
|
||||||
|
.HasForeignKey("LiebUserId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("LiebRole");
|
||||||
|
|
||||||
|
b.Navigation("LiebUser");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.GuildWars2Account", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("EquippedBuilds");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.GuildWars2Build", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("EquippedRoles");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.Raid", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("DiscordRaidMessages");
|
||||||
|
|
||||||
|
b.Navigation("Reminders");
|
||||||
|
|
||||||
|
b.Navigation("Roles");
|
||||||
|
|
||||||
|
b.Navigation("SignUps");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.RaidTemplate", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("DiscordRaidMessages");
|
||||||
|
|
||||||
|
b.Navigation("Reminders");
|
||||||
|
|
||||||
|
b.Navigation("Roles");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.LiebRole", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("RoleAssignments");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.LiebUser", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("GuildWars2Accounts");
|
||||||
|
|
||||||
|
b.Navigation("RoleAssignments");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.Poll.Poll", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Answers");
|
||||||
|
|
||||||
|
b.Navigation("Options");
|
||||||
|
});
|
||||||
|
#pragma warning restore 612, 618
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
142
Lieb/Migrations/20230103181756_PollsAndMinUsers.cs
Normal file
142
Lieb/Migrations/20230103181756_PollsAndMinUsers.cs
Normal file
|
@ -0,0 +1,142 @@
|
||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Lieb.Migrations
|
||||||
|
{
|
||||||
|
public partial class PollsAndMinUsers : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<DateTime>(
|
||||||
|
name: "MinUserDeadLine",
|
||||||
|
table: "RaidTemplate",
|
||||||
|
type: "TEXT",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<int>(
|
||||||
|
name: "MinUsers",
|
||||||
|
table: "RaidTemplate",
|
||||||
|
type: "INTEGER",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: 0);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<DateTimeOffset>(
|
||||||
|
name: "MinUserDeadLineUTC",
|
||||||
|
table: "Raid",
|
||||||
|
type: "TEXT",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<int>(
|
||||||
|
name: "MinUserPollId",
|
||||||
|
table: "Raid",
|
||||||
|
type: "INTEGER",
|
||||||
|
nullable: true);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<int>(
|
||||||
|
name: "MinUsers",
|
||||||
|
table: "Raid",
|
||||||
|
type: "INTEGER",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: 0);
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "Poll",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
PollId = table.Column<int>(type: "INTEGER", nullable: false)
|
||||||
|
.Annotation("Sqlite:Autoincrement", true),
|
||||||
|
Question = table.Column<string>(type: "TEXT", nullable: false),
|
||||||
|
RaidId = table.Column<int>(type: "INTEGER", nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_Poll", x => x.PollId);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "PollAnswer",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
PollAnswerId = table.Column<int>(type: "INTEGER", nullable: false)
|
||||||
|
.Annotation("Sqlite:Autoincrement", true),
|
||||||
|
PollOptionId = table.Column<int>(type: "INTEGER", nullable: true),
|
||||||
|
UserId = table.Column<ulong>(type: "INTEGER", nullable: false),
|
||||||
|
PollId = table.Column<int>(type: "INTEGER", nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_PollAnswer", x => x.PollAnswerId);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_PollAnswer_Poll_PollId",
|
||||||
|
column: x => x.PollId,
|
||||||
|
principalTable: "Poll",
|
||||||
|
principalColumn: "PollId");
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "PollOption",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
PollOptionId = table.Column<int>(type: "INTEGER", nullable: false)
|
||||||
|
.Annotation("Sqlite:Autoincrement", true),
|
||||||
|
Name = table.Column<string>(type: "TEXT", nullable: false),
|
||||||
|
PollId = table.Column<int>(type: "INTEGER", nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_PollOption", x => x.PollOptionId);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_PollOption_Poll_PollId",
|
||||||
|
column: x => x.PollId,
|
||||||
|
principalTable: "Poll",
|
||||||
|
principalColumn: "PollId");
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_PollAnswer_PollId",
|
||||||
|
table: "PollAnswer",
|
||||||
|
column: "PollId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_PollOption_PollId",
|
||||||
|
table: "PollOption",
|
||||||
|
column: "PollId");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "PollAnswer");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "PollOption");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "Poll");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "MinUserDeadLine",
|
||||||
|
table: "RaidTemplate");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "MinUsers",
|
||||||
|
table: "RaidTemplate");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "MinUserDeadLineUTC",
|
||||||
|
table: "Raid");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "MinUserPollId",
|
||||||
|
table: "Raid");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "MinUsers",
|
||||||
|
table: "Raid");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -182,6 +182,15 @@ namespace Lieb.Migrations
|
||||||
.HasMaxLength(50)
|
.HasMaxLength(50)
|
||||||
.HasColumnType("TEXT");
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<DateTimeOffset>("MinUserDeadLineUTC")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int?>("MinUserPollId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("MinUsers")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<bool>("MoveFlexUsers")
|
b.Property<bool>("MoveFlexUsers")
|
||||||
.HasColumnType("INTEGER");
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
@ -374,6 +383,12 @@ namespace Lieb.Migrations
|
||||||
b.Property<int>("Interval")
|
b.Property<int>("Interval")
|
||||||
.HasColumnType("INTEGER");
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<DateTime>("MinUserDeadLine")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int>("MinUsers")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<bool>("MoveFlexUsers")
|
b.Property<bool>("MoveFlexUsers")
|
||||||
.HasColumnType("INTEGER");
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
@ -480,6 +495,66 @@ namespace Lieb.Migrations
|
||||||
b.ToTable("LiebUser", (string)null);
|
b.ToTable("LiebUser", (string)null);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.Poll.Poll", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("PollId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Question")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int?>("RaidId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("PollId");
|
||||||
|
|
||||||
|
b.ToTable("Poll", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.Poll.PollAnswer", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("PollAnswerId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int?>("PollId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int?>("PollOptionId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<ulong>("UserId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("PollAnswerId");
|
||||||
|
|
||||||
|
b.HasIndex("PollId");
|
||||||
|
|
||||||
|
b.ToTable("PollAnswer", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.Poll.PollOption", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("PollOptionId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int?>("PollId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("PollOptionId");
|
||||||
|
|
||||||
|
b.HasIndex("PollId");
|
||||||
|
|
||||||
|
b.ToTable("PollOption", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("Lieb.Models.RoleAssignment", b =>
|
modelBuilder.Entity("Lieb.Models.RoleAssignment", b =>
|
||||||
{
|
{
|
||||||
b.Property<int>("RoleAssignmentId")
|
b.Property<int>("RoleAssignmentId")
|
||||||
|
@ -591,6 +666,20 @@ namespace Lieb.Migrations
|
||||||
b.Navigation("RaidRole");
|
b.Navigation("RaidRole");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.Poll.PollAnswer", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Lieb.Models.Poll.Poll", null)
|
||||||
|
.WithMany("Answers")
|
||||||
|
.HasForeignKey("PollId");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.Poll.PollOption", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Lieb.Models.Poll.Poll", null)
|
||||||
|
.WithMany("Options")
|
||||||
|
.HasForeignKey("PollId");
|
||||||
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("Lieb.Models.RoleAssignment", b =>
|
modelBuilder.Entity("Lieb.Models.RoleAssignment", b =>
|
||||||
{
|
{
|
||||||
b.HasOne("Lieb.Models.LiebRole", "LiebRole")
|
b.HasOne("Lieb.Models.LiebRole", "LiebRole")
|
||||||
|
@ -651,6 +740,13 @@ namespace Lieb.Migrations
|
||||||
|
|
||||||
b.Navigation("RoleAssignments");
|
b.Navigation("RoleAssignments");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.Poll.Poll", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Answers");
|
||||||
|
|
||||||
|
b.Navigation("Options");
|
||||||
|
});
|
||||||
#pragma warning restore 612, 618
|
#pragma warning restore 612, 618
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ builder.Services.AddScoped<GuildWars2BuildService>();
|
||||||
builder.Services.AddScoped<RaidRandomizerService>();
|
builder.Services.AddScoped<RaidRandomizerService>();
|
||||||
builder.Services.AddScoped<TimeZoneService>();
|
builder.Services.AddScoped<TimeZoneService>();
|
||||||
builder.Services.AddScoped<DiscordService>();
|
builder.Services.AddScoped<DiscordService>();
|
||||||
|
builder.Services.AddScoped<PollService>();
|
||||||
builder.Services.AddHostedService<TimerService>();
|
builder.Services.AddHostedService<TimerService>();
|
||||||
|
|
||||||
builder.Services.AddAuthentication(opt =>
|
builder.Services.AddAuthentication(opt =>
|
||||||
|
|
18
Lieb/appsettings.Staging.json
Normal file
18
Lieb/appsettings.Staging.json
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Discord": {
|
||||||
|
"AppId": "942448872335220806"
|
||||||
|
},
|
||||||
|
"AllowedHosts": "*",
|
||||||
|
"ConnectionStrings": {
|
||||||
|
"LiebContext": "Data Source=/database/mydb.sqlite;"
|
||||||
|
},
|
||||||
|
"HttpClients": {
|
||||||
|
"DiscordBot": "http://lieb-bot-test"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue