feat(data): rename *.Services projects, lift TrackEntity onto BlazorBlocks data layer, regenerate initial Postgres migration

DeepDrftWeb.Services → DeepDrftData; DeepDrftContent.Services → DeepDrftContent.Data.
TrackEntity:BaseEntity, TrackRepository:Repository<>, TrackManager:Manager<>+ITrackService.
Drops DeepDrftModels PagingParameters/PagedResult in favour of Models.Common.* from BlazorBlocks.
InitialCreate migration captures full schema including is_deleted index.
This commit is contained in:
Daniel Harvey
2026-05-18 22:22:09 -04:00
parent 130f1357ec
commit cd700dc758
82 changed files with 511 additions and 600 deletions
@@ -0,0 +1,51 @@
using DeepDrftContent.Data.FileDatabase.Models;
using IndexType = DeepDrftContent.Data.FileDatabase.Services.IndexType;
namespace DeepDrftContent.Data.FileDatabase.Abstractions;
/// <summary>
/// Interface for creating index instances
/// </summary>
public interface IIndexFactory
{
/// <summary>
/// Loads an existing index of the specified type
/// </summary>
Task<IIndex?> LoadIndexAsync(IndexType type, string rootPath);
/// <summary>
/// Creates a directory index
/// </summary>
Task<IDirectoryIndex?> CreateDirectoryIndexAsync(string rootPath);
/// <summary>
/// Loads existing directory index or creates new one if loading fails
/// </summary>
Task<IDirectoryIndex?> LoadOrCreateDirectoryIndexAsync(string rootPath);
/// <summary>
/// Creates a vault index with the specified vault type
/// </summary>
Task<IVaultIndex?> CreateVaultIndexAsync(string rootPath, MediaVaultType vaultType);
/// <summary>
/// Loads existing vault index or creates new one with the specified vault type if loading fails
/// </summary>
Task<IVaultIndex?> LoadOrCreateVaultIndexAsync(string rootPath, MediaVaultType vaultType);
}
/// <summary>
/// Interface for creating index data objects
/// </summary>
public interface IIndexDataFactory
{
/// <summary>
/// Creates index data for serialization
/// </summary>
object CreateIndexData(IndexType type, IIndex index);
/// <summary>
/// Creates index instance from data
/// </summary>
IIndex CreateIndexFromData(IndexType type, object indexData);
}
@@ -0,0 +1,79 @@
using DeepDrftContent.Data.FileDatabase.Models;
using DeepDrftContent.Data.FileDatabase.Services;
namespace DeepDrftContent.Data.FileDatabase.Abstractions;
/// <summary>
/// Interface for registering media type factories
/// </summary>
public interface IMediaTypeRegistry
{
/// <summary>
/// Register a factory for a specific media vault type
/// </summary>
void RegisterMediaType<TBinary, TParams, TDto, TMetaData, TVault>(MediaVaultType vaultType)
where TBinary : FileBinary
where TParams : FileBinaryParams
where TDto : FileBinaryDto
where TMetaData : MetaData;
/// <summary>
/// Create a binary object from parameters
/// </summary>
FileBinary CreateBinary(MediaVaultType vaultType, object parameters);
/// <summary>
/// Create a binary object from DTO
/// </summary>
FileBinary CreateBinaryFromDto(MediaVaultType vaultType, object dto);
/// <summary>
/// Create a DTO from binary object
/// </summary>
FileBinaryDto CreateDto(MediaVaultType vaultType, FileBinary binary);
/// <summary>
/// Create metadata from media object
/// </summary>
MetaData CreateMetaDataFromMedia(MediaVaultType vaultType, string entryKey, string extension, object media);
/// <summary>
/// Create parameters from binary and metadata
/// </summary>
object CreateParams(MediaVaultType vaultType, FileBinary fileBinary, MetaData metaData);
/// <summary>
/// Create media vault
/// </summary>
Task<MediaVault?> CreateVaultAsync(MediaVaultType vaultType, string rootPath);
/// <summary>
/// Get the binary type for a vault type
/// </summary>
Type GetBinaryType(MediaVaultType vaultType);
/// <summary>
/// Get the DTO type for a vault type
/// </summary>
Type GetDtoType(MediaVaultType vaultType);
/// <summary>
/// Get the parameters type for a vault type
/// </summary>
Type GetParamsType(MediaVaultType vaultType);
/// <summary>
/// Get the metadata type for a vault type
/// </summary>
Type GetMetaDataType(MediaVaultType vaultType);
/// <summary>
/// Get the vault type for a binary type (reverse mapping)
/// </summary>
MediaVaultType GetVaultType(Type binaryType);
/// <summary>
/// Get the vault type for a binary type using generics (reverse mapping)
/// </summary>
MediaVaultType GetVaultType<T>() where T : FileBinary;
}