mirror of
https://github.com/space-wizards/space-station-14.git
synced 2026-02-14 19:29:53 +01:00
Ban database refactor (#42495) * Ban DB refactor seems to work at a basic level for PostgreSQL * New ban creation API Supports all the new functionality (multiple players/addresses/hwids/roles/rounds per ban). * Make the migration irreversible * Re-implement ban notifications The server ID check is no longer done as admins may want to place bans spanning multiple rounds irrelevant of the source server. * Fix some split query warnings * Implement migration on SQLite * More comments * Remove required from ban reason SS14.Admin changes would like this * More missing AsSplitQuery() calls * Fix missing ban type filter * Fix old CreateServerBan API with permanent time * Fix department and role ban commands with permanent time * Re-add banhits navigation property Dropped this on accident, SS14.Admin needs it. * More ban API fixes. * Don't fetch ban exemption info for role bans Not relevant, reduces query performance * Regenerate migrations * Fix adminnotes command for players that never connected Would blow up handling null player records. Not a new bug introduced by the refactor, but I ran into it. * Great shame... I accidentally committed submodule update... * Update GDPR scripts * Fix sandbox violation * Fix bans with duplicate info causing DB exceptions Most notably happened with role bans, as multiple departments may include the same role.
29 lines
1.5 KiB
C#
29 lines
1.5 KiB
C#
using System.Collections.Immutable;
|
|
using Content.Shared.Database;
|
|
using Robust.Shared.Network;
|
|
using Robust.Shared.Serialization;
|
|
|
|
namespace Content.Shared.Administration.Notes;
|
|
|
|
[Serializable, NetSerializable]
|
|
public sealed record SharedAdminNote(
|
|
int Id, // Id of note, message, watchlist, ban or role ban. Should be paired with NoteType to uniquely identify a shared admin note.
|
|
ImmutableArray<NetUserId> Players, // Notes player
|
|
ImmutableArray<int> Rounds, // Which round was it added in?
|
|
string? ServerName, // Which server was this added on?
|
|
TimeSpan PlaytimeAtNote, // Playtime at the time of getting the note
|
|
NoteType NoteType, // Type of note
|
|
string Message, // Attached message
|
|
NoteSeverity? NoteSeverity, // Severity of the note, ban or role ban. Otherwise null.
|
|
bool Secret, // Is it visible to the player (only relevant if players can see their own notes)
|
|
string CreatedByName, // Who created it?
|
|
string EditedByName, // Who edited it last?
|
|
DateTime CreatedAt, // When was it created?
|
|
DateTime? LastEditedAt, // When was it last edited?
|
|
DateTime? ExpiryTime, // Does it expire?
|
|
ImmutableArray<BanRoleDef>? BannedRoles, // Only valid for role bans. List of banned roles
|
|
DateTime? UnbannedTime, // Only valid for bans. Set if unbanned
|
|
string? UnbannedByName, // Only valid for bans. Set if unbanned
|
|
bool? Seen // Only valid for messages, otherwise should be null. Has the user seen this message?
|
|
);
|