chore: group .NET into backend/ and drop non-.NET test artifacts

- Move all .NET (6 projects, solution, Directory.*.props, nuget.config)
  into backend/ so the monorepo root can host non-.NET projects later
- Remove throwaway test artifacts: player.html, pl.json
- Trim dead Flutter rules from .gitignore

Build from backend/Musify.slnx: 0 warnings, 0 errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-05 03:43:52 +02:00
co-authored by Claude Opus 4.8
parent d9c8c17b21
commit 8f34ed4874
247 changed files with 0 additions and 229 deletions
@@ -0,0 +1,20 @@
using FluentValidation;
using Musify.Api.DataTransferObjects.Tracks;
namespace Musify.Api.Validators.Tracks;
public sealed class CreateTrackRequestValidator : AbstractValidator<CreateTrackRequest>
{
public CreateTrackRequestValidator()
{
RuleFor(x => x.Title)
.NotEmpty()
.MaximumLength(50);
RuleFor(x => x.PictureIntentId)
.NotEmpty();
RuleFor(x => x.AudioIntentId)
.NotEmpty();
}
}
@@ -0,0 +1,30 @@
using FluentValidation;
using Musify.Api.DataTransferObjects.Tracks;
namespace Musify.Api.Validators.Tracks;
public sealed class RequestTrackUploadUrlsRequestValidator : AbstractValidator<RequestTrackUploadUrlsRequest>
{
public RequestTrackUploadUrlsRequestValidator()
{
RuleFor(x => x.PictureFileType)
.NotEmpty();
RuleFor(x => x.PictureContentType)
.NotEmpty();
RuleFor(x => x.AudioFileType)
.NotEmpty();
RuleFor(x => x.AudioContentType)
.NotEmpty();
RuleFor(x => x.ExpectedPictureSizeBytes)
.GreaterThan(0)
.When(x => x.ExpectedPictureSizeBytes.HasValue);
RuleFor(x => x.ExpectedAudioSizeBytes)
.GreaterThan(0)
.When(x => x.ExpectedAudioSizeBytes.HasValue);
}
}