First Commit

This commit is contained in:
2026-03-18 01:14:49 +01:00
commit 306248b11c
39 changed files with 1361 additions and 0 deletions
@@ -0,0 +1,18 @@
using Microsoft.EntityFrameworkCore;
using Musify.Domain.Entities;
namespace Musify.Application.Contracts.Infrastructure
{
public interface IDatabase
{
DbSet<User> Users { get; }
DbSet<PlayList> PlayLists { get; }
DbSet<Track> Tracks { get; }
DbSet<PlayListHasTrack> PlayListHasTracks { get; }
Task<int> SaveChangesAsync(CancellationToken cancellationToken);
}
}
@@ -0,0 +1,22 @@
using Ardalis.Result;
using Musify.Application.Users.Contracts;
namespace Musify.Application.Contracts.Infrastructure
{
public interface IKeycloakUserClient
{
Task<Result<KeycloakUserResponse>> GetUserByIdAsync(string keycloakId, CancellationToken cancellationToken);
Task<IReadOnlyCollection<KeycloakUserResponse>> GetUsersAsync(
CancellationToken cancellationToken,
string search = "",
int first = 0,
int max = 20,
string username = "");
Task<int> GetUsersCountAsync(
CancellationToken cancellationToken,
string search = "",
string username = "");
}
}
@@ -0,0 +1,17 @@
using Ardalis.Result;
namespace Musify.Application.Contracts.Infrastructure
{
public interface IStorageHandler
{
Task<Result<Stream>> GetFile(string bucketName, string keyName, CancellationToken cancellationToken);
Task<string> GetUrl(string bucketName, string keyName, TimeSpan ExpirationTime, CancellationToken cancellationToken);
Task<Result<string>> UploadFile(Stream sourceStream, string contentType, string bucketName, string keyName, CancellationToken cancellationToken);
Task<Result> TransferFiles(string sourceDirectory, string bucketName, string route, CancellationToken cancellationToken);
Task<Result> RemoveFile(string bucketName, string keyName, CancellationToken cancellationToken);
}
}