using Microsoft.EntityFrameworkCore; using OnlyPrompt.Backend.Database.Core; namespace OnlyPrompt.Backend.Utils { public static class EntityExtensions { public static Task FindBySlugAsync(this IQueryable queryable, string slug) where T : class, IHasSlug { return queryable.FirstOrDefaultAsync(e => e.Slug == slug); } public static Task FindByIdentifierAsync(this IQueryable 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 OfIdentifer(this IQueryable 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); } } }