29 lines
950 B
C#
29 lines
950 B
C#
using Microsoft.EntityFrameworkCore;
|
|
using OnlyPrompt.Backend.Database.Core;
|
|
|
|
namespace OnlyPrompt.Backend.Utils
|
|
{
|
|
public static class EntityExtensions
|
|
{
|
|
public static Task<T?> FindBySlugAsync<T>(this IQueryable<T> queryable, string slug) where T : class, IHasSlug
|
|
{
|
|
return queryable.FirstOrDefaultAsync(e => e.Slug == slug);
|
|
}
|
|
|
|
public static Task<T?> FindByIdentifierAsync<T>(this IQueryable<T> queryable, Identifier identifier) where T : class, IHasSlug, IEntity
|
|
{
|
|
if (identifier.Id.HasValue)
|
|
return queryable.FirstOrDefaultAsync(e => e.Id == identifier.Id.Value);
|
|
|
|
return queryable.FindBySlugAsync(identifier.Slug);
|
|
}
|
|
|
|
public static IQueryable<T> OfIdentifer<T>(this IQueryable<T> queryable, Identifier identifier) where T : class, IHasSlug, IEntity
|
|
{
|
|
if (identifier.Id.HasValue)
|
|
return queryable.Where(e => e.Id == identifier.Id.Value);
|
|
return queryable.Where(e => e.Slug == identifier.Slug);
|
|
}
|
|
}
|
|
}
|