public Task<IEnumerable<MediaInfo>> Find(string userId = null, int take = 0, DateTime? lastDateTime = null, Boolean ignoreRetentionTime = false) { using (var ctx = new EfStorageDbContext()) { IQueryable<EfStorageDbContext.MediaInfoEntity> query = ctx.MediaInfo.OrderByDescending(x => x.CreatedAt); if (userId != null) { query = query.Where(x => x.UserId == userId); } if (lastDateTime.HasValue) { query = query.Where(x => x.CreatedAt < lastDateTime); } if (!ignoreRetentionTime) { query = query.Where(x => x.CreatedAt > _retentionTimeLimit); } return Task.FromResult<IEnumerable<MediaInfo>>( query .Take(take) .ToList() .Select(x => new MediaInfo() { UserId = x.UserId, ContentType = x.ContentType, CreatedAt = x.CreatedAt, MediaId = x.MediaId }) .ToList() ); } }
public Task<UserInfo> FindByAuthHash(string authHash) { using (var ctx = new EfStorageDbContext()) { return Task.FromResult( ctx.UserInfo .Where(x => x.AuthHash == authHash) .Select(x => new UserInfo() { UserId = x.UserId, AuthHash = x.AuthHash }) .FirstOrDefault() ); } }
public Task<MediaInfo> FindByMediaId(Guid mediaId, Boolean ignoreRetentionTime = false) { using (var ctx = new EfStorageDbContext()) { return Task.FromResult( ctx.MediaInfo .Where(x => x.MediaId == mediaId && (ignoreRetentionTime ? true : x.CreatedAt > _retentionTimeLimit)) .Select(x => new MediaInfo() { UserId = x.UserId, ContentType = x.ContentType, CreatedAt = x.CreatedAt, MediaId = x.MediaId }) .FirstOrDefault() ); } }
public async Task Create(MediaInfo mediaInfo) { using (var ctx = new EfStorageDbContext()) { var mediaInfoEntity = new EfStorageDbContext.MediaInfoEntity() { UserId = mediaInfo.UserId, MediaId = mediaInfo.MediaId, CreatedAt = mediaInfo.CreatedAt, ContentType = mediaInfo.ContentType, }; ctx.MediaInfo.Add(mediaInfoEntity); await ctx.SaveChangesAsync(); } }
public async Task<bool> InsertOrUpdate(UserInfo userInfo) { using (var ctx = new EfStorageDbContext()) { var userInfoEntity = ctx.UserInfo .Where(x => x.UserId == userInfo.UserId) .FirstOrDefault(); if (userInfoEntity == null) { userInfoEntity = new EfStorageDbContext.UserInfoEntity() { UserId = userInfo.UserId }; ctx.UserInfo.Add(userInfoEntity); } userInfoEntity.AuthHash = userInfo.AuthHash; return (await ctx.SaveChangesAsync() == 1); } }
public async Task Delete(MediaInfo mediaInfo) { using (var ctx = new EfStorageDbContext()) { var target = ctx.MediaInfo.FirstOrDefault(x => x.MediaId == mediaInfo.MediaId); if (target != null) { ctx.MediaInfo.Remove(target); } await ctx.SaveChangesAsync(); } }