chore: add csharpier to husky, format backend with csharpier
This commit is contained in:
parent
5fab66444f
commit
7f971e8549
73 changed files with 2098 additions and 1048 deletions
|
@ -6,20 +6,30 @@ using Foxnouns.Backend.Services;
|
|||
|
||||
namespace Foxnouns.Backend.Jobs;
|
||||
|
||||
public class CreateFlagInvocable(DatabaseContext db, ObjectStorageService objectStorageService, ILogger logger)
|
||||
: IInvocable, IInvocableWithPayload<CreateFlagPayload>
|
||||
public class CreateFlagInvocable(
|
||||
DatabaseContext db,
|
||||
ObjectStorageService objectStorageService,
|
||||
ILogger logger
|
||||
) : IInvocable, IInvocableWithPayload<CreateFlagPayload>
|
||||
{
|
||||
private readonly ILogger _logger = logger.ForContext<CreateFlagInvocable>();
|
||||
public required CreateFlagPayload Payload { get; set; }
|
||||
|
||||
public async Task Invoke()
|
||||
{
|
||||
_logger.Information("Creating flag {FlagId} for user {UserId} with image data length {DataLength}", Payload.Id,
|
||||
Payload.UserId, Payload.ImageData.Length);
|
||||
_logger.Information(
|
||||
"Creating flag {FlagId} for user {UserId} with image data length {DataLength}",
|
||||
Payload.Id,
|
||||
Payload.UserId,
|
||||
Payload.ImageData.Length
|
||||
);
|
||||
|
||||
try
|
||||
{
|
||||
var (hash, image) = await Payload.ImageData.ConvertBase64UriToImage(size: 256, crop: false);
|
||||
var (hash, image) = await Payload.ImageData.ConvertBase64UriToImage(
|
||||
size: 256,
|
||||
crop: false
|
||||
);
|
||||
await objectStorageService.PutObjectAsync(Path(hash), image, "image/webp");
|
||||
|
||||
var flag = new PrideFlag
|
||||
|
@ -28,7 +38,7 @@ public class CreateFlagInvocable(DatabaseContext db, ObjectStorageService object
|
|||
UserId = Payload.UserId,
|
||||
Hash = hash,
|
||||
Name = Payload.Name,
|
||||
Description = Payload.Description
|
||||
Description = Payload.Description,
|
||||
};
|
||||
db.Add(flag);
|
||||
|
||||
|
@ -45,4 +55,4 @@ public class CreateFlagInvocable(DatabaseContext db, ObjectStorageService object
|
|||
}
|
||||
|
||||
public static string Path(string hash) => $"flags/{hash}.webp";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,16 +6,21 @@ using Foxnouns.Backend.Services;
|
|||
|
||||
namespace Foxnouns.Backend.Jobs;
|
||||
|
||||
public class MemberAvatarUpdateInvocable(DatabaseContext db, ObjectStorageService objectStorageService, ILogger logger)
|
||||
: IInvocable, IInvocableWithPayload<AvatarUpdatePayload>
|
||||
public class MemberAvatarUpdateInvocable(
|
||||
DatabaseContext db,
|
||||
ObjectStorageService objectStorageService,
|
||||
ILogger logger
|
||||
) : IInvocable, IInvocableWithPayload<AvatarUpdatePayload>
|
||||
{
|
||||
private readonly ILogger _logger = logger.ForContext<UserAvatarUpdateInvocable>();
|
||||
public required AvatarUpdatePayload Payload { get; set; }
|
||||
|
||||
public async Task Invoke()
|
||||
{
|
||||
if (Payload.NewAvatar != null) await UpdateMemberAvatarAsync(Payload.Id, Payload.NewAvatar);
|
||||
else await ClearMemberAvatarAsync(Payload.Id);
|
||||
if (Payload.NewAvatar != null)
|
||||
await UpdateMemberAvatarAsync(Payload.Id, Payload.NewAvatar);
|
||||
else
|
||||
await ClearMemberAvatarAsync(Payload.Id);
|
||||
}
|
||||
|
||||
private async Task UpdateMemberAvatarAsync(Snowflake id, string newAvatar)
|
||||
|
@ -25,7 +30,10 @@ public class MemberAvatarUpdateInvocable(DatabaseContext db, ObjectStorageServic
|
|||
var member = await db.Members.FindAsync(id);
|
||||
if (member == null)
|
||||
{
|
||||
_logger.Warning("Update avatar job queued for {MemberId} but no member with that ID exists", id);
|
||||
_logger.Warning(
|
||||
"Update avatar job queued for {MemberId} but no member with that ID exists",
|
||||
id
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -46,7 +54,11 @@ public class MemberAvatarUpdateInvocable(DatabaseContext db, ObjectStorageServic
|
|||
}
|
||||
catch (ArgumentException ae)
|
||||
{
|
||||
_logger.Warning("Invalid data URI for new avatar for member {MemberId}: {Reason}", id, ae.Message);
|
||||
_logger.Warning(
|
||||
"Invalid data URI for new avatar for member {MemberId}: {Reason}",
|
||||
id,
|
||||
ae.Message
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -57,7 +69,10 @@ public class MemberAvatarUpdateInvocable(DatabaseContext db, ObjectStorageServic
|
|||
var member = await db.Members.FindAsync(id);
|
||||
if (member == null)
|
||||
{
|
||||
_logger.Warning("Clear avatar job queued for {MemberId} but no member with that ID exists", id);
|
||||
_logger.Warning(
|
||||
"Clear avatar job queued for {MemberId} but no member with that ID exists",
|
||||
id
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -74,4 +89,4 @@ public class MemberAvatarUpdateInvocable(DatabaseContext db, ObjectStorageServic
|
|||
}
|
||||
|
||||
public static string Path(Snowflake id, string hash) => $"members/{id}/avatars/{hash}.webp";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,4 +4,10 @@ namespace Foxnouns.Backend.Jobs;
|
|||
|
||||
public record AvatarUpdatePayload(Snowflake Id, string? NewAvatar);
|
||||
|
||||
public record CreateFlagPayload(Snowflake Id, Snowflake UserId, string Name, string ImageData, string? Description);
|
||||
public record CreateFlagPayload(
|
||||
Snowflake Id,
|
||||
Snowflake UserId,
|
||||
string Name,
|
||||
string ImageData,
|
||||
string? Description
|
||||
);
|
||||
|
|
|
@ -6,16 +6,21 @@ using Foxnouns.Backend.Services;
|
|||
|
||||
namespace Foxnouns.Backend.Jobs;
|
||||
|
||||
public class UserAvatarUpdateInvocable(DatabaseContext db, ObjectStorageService objectStorageService, ILogger logger)
|
||||
: IInvocable, IInvocableWithPayload<AvatarUpdatePayload>
|
||||
public class UserAvatarUpdateInvocable(
|
||||
DatabaseContext db,
|
||||
ObjectStorageService objectStorageService,
|
||||
ILogger logger
|
||||
) : IInvocable, IInvocableWithPayload<AvatarUpdatePayload>
|
||||
{
|
||||
private readonly ILogger _logger = logger.ForContext<UserAvatarUpdateInvocable>();
|
||||
public required AvatarUpdatePayload Payload { get; set; }
|
||||
|
||||
public async Task Invoke()
|
||||
{
|
||||
if (Payload.NewAvatar != null) await UpdateUserAvatarAsync(Payload.Id, Payload.NewAvatar);
|
||||
else await ClearUserAvatarAsync(Payload.Id);
|
||||
if (Payload.NewAvatar != null)
|
||||
await UpdateUserAvatarAsync(Payload.Id, Payload.NewAvatar);
|
||||
else
|
||||
await ClearUserAvatarAsync(Payload.Id);
|
||||
}
|
||||
|
||||
private async Task UpdateUserAvatarAsync(Snowflake id, string newAvatar)
|
||||
|
@ -25,7 +30,10 @@ public class UserAvatarUpdateInvocable(DatabaseContext db, ObjectStorageService
|
|||
var user = await db.Users.FindAsync(id);
|
||||
if (user == null)
|
||||
{
|
||||
_logger.Warning("Update avatar job queued for {UserId} but no user with that ID exists", id);
|
||||
_logger.Warning(
|
||||
"Update avatar job queued for {UserId} but no user with that ID exists",
|
||||
id
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -47,7 +55,11 @@ public class UserAvatarUpdateInvocable(DatabaseContext db, ObjectStorageService
|
|||
}
|
||||
catch (ArgumentException ae)
|
||||
{
|
||||
_logger.Warning("Invalid data URI for new avatar for user {UserId}: {Reason}", id, ae.Message);
|
||||
_logger.Warning(
|
||||
"Invalid data URI for new avatar for user {UserId}: {Reason}",
|
||||
id,
|
||||
ae.Message
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -58,7 +70,10 @@ public class UserAvatarUpdateInvocable(DatabaseContext db, ObjectStorageService
|
|||
var user = await db.Users.FindAsync(id);
|
||||
if (user == null)
|
||||
{
|
||||
_logger.Warning("Clear avatar job queued for {UserId} but no user with that ID exists", id);
|
||||
_logger.Warning(
|
||||
"Clear avatar job queued for {UserId} but no user with that ID exists",
|
||||
id
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -75,4 +90,4 @@ public class UserAvatarUpdateInvocable(DatabaseContext db, ObjectStorageService
|
|||
}
|
||||
|
||||
public static string Path(Snowflake id, string hash) => $"users/{id}/avatars/{hash}.webp";
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue