public static EntityApiBuildContext <TKey, TEntity> SetupFilePipes <TKey, TEntity, TDbContext>( this EntityApiBuildContext <TKey, TEntity> apiBuildContext, Expression <Func <TEntity, string> > property) where TEntity : class where TDbContext : DbContext { var compiled = property.Compile(); return(apiBuildContext.SetupFilePipes <TKey, TEntity>( (sp, x) => Task.FromResult((new string[] { compiled(x) }).AsEnumerable()), async(sp, db, key) => { var info = sp.GetRequiredService <IModelInfo <TDbContext, TEntity, TKey> >(); var exp = CreateWhereExpression <TKey, TEntity, TDbContext>(info, key); return await db.Set <TEntity>().Where(exp).Select(property).ToArrayAsync(); }, async(sp, db, model) => { var info = sp.GetRequiredService <IModelInfo <TDbContext, TEntity, TKey> >(); var exp = CreateWhereExpression <TKey, TEntity, TDbContext>(info, info.PrimaryKeyAccessor.Getter(model), true); return await db.Set <TEntity>().Where(exp).Select(property).ToArrayAsync(); } )); }
public static EntityApiBuildContext <TKey, TEntity> SetupFilePipes <TKey, TEntity>( this EntityApiBuildContext <TKey, TEntity> apiBuildContext, Func <TEntity, Task <IEnumerable <string> > > findFilesFromModel, Func <DbContext, TKey, Task <IEnumerable <string> > > findFilesFromDb, Func <DbContext, TEntity, Task <IEnumerable <string> > > findReferencedFilesFromDb) where TEntity : class => apiBuildContext.SetupFilePipes((sp, model) => findFilesFromModel(model), (sp, db, key) => findFilesFromDb(db, key), (sp, db, model) => findReferencedFilesFromDb(db, model));
public static EntityApiBuildContext <TKey, TEntity> SetupFilePipes <TKey, TEntity>(this EntityApiBuildContext <TKey, TEntity> apiBuildContext, Expression <Func <TEntity, string> > property) where TEntity : class => apiBuildContext.SetupFilePipes <TKey, TEntity, PlatformDbContext>(property);