More better joins, some minor MDM changes for paging

This commit is contained in:
Mark McDowall 2013-05-10 08:19:29 -07:00
parent 32431540c5
commit 3602822572
7 changed files with 20 additions and 9 deletions

View File

@ -365,7 +365,7 @@ namespace Marr.Data.QGen
public virtual SortBuilder<T> Where(Expression<Func<T, bool>> filterExpression) public virtual SortBuilder<T> Where(Expression<Func<T, bool>> filterExpression)
{ {
_whereBuilder = new WhereBuilder<T>(_db.Command, _dialect, filterExpression, _tables, false, true); _whereBuilder = new WhereBuilder<T>(_db.Command, _dialect, filterExpression, _tables, _useAltName, true);
return SortBuilder; return SortBuilder;
} }

View File

@ -217,7 +217,12 @@ namespace Marr.Data.QGen
} }
string columnName = DataHelper.GetColumnName(sort.DeclaringType, sort.PropertyName, useAltName); string columnName = DataHelper.GetColumnName(sort.DeclaringType, sort.PropertyName, useAltName);
sb.Append(_dialect.CreateToken(string.Format("{0}.{1}", table.Alias, columnName)));
if (!_useAltName)
sb.Append(_dialect.CreateToken(string.Format("{0}.{1}", table.Alias, columnName)));
else
sb.Append(_dialect.CreateToken(string.Format("{0}", columnName)));
if (sort.Direction == SortDirection.Desc) if (sort.Direction == SortDirection.Desc)
sb.Append(" DESC"); sb.Append(" DESC");

View File

@ -182,7 +182,12 @@ namespace Marr.Data.QGen
} }
string columnName = DataHelper.GetColumnName(declaringType, member.Name, _useAltName); string columnName = DataHelper.GetColumnName(declaringType, member.Name, _useAltName);
return _dialect.CreateToken(string.Format("{0}.{1}", table.Alias, columnName));
if (!_useAltName)
return _dialect.CreateToken(string.Format("{0}.{1}", table.Alias, columnName));
else
return _dialect.CreateToken(string.Format("{0}", columnName));
} }
else else
{ {

View File

@ -23,6 +23,7 @@ namespace NzbDrone.Core.Datastore
return mapBuilder.Table.MapTable(tableName) return mapBuilder.Table.MapTable(tableName)
.Columns .Columns
.AutoMapPropertiesWhere(IsMappableProperty) .AutoMapPropertiesWhere(IsMappableProperty)
.PrefixAltNames(String.Format("{0}_", typeof(T).Name))
.For(c => c.Id) .For(c => c.Id)
.SetPrimaryKey() .SetPrimaryKey()
.SetReturnValue() .SetReturnValue()

View File

@ -52,7 +52,8 @@ namespace NzbDrone.Core.Datastore
Mapper.Entity<Season>().RegisterModel("Seasons"); Mapper.Entity<Season>().RegisterModel("Seasons");
Mapper.Entity<Episode>().RegisterModel("Episodes") Mapper.Entity<Episode>().RegisterModel("Episodes")
.Ignore(e => e.SeriesTitle); .Ignore(e => e.SeriesTitle)
.Relationships.AutoMapICollectionOrComplexProperties();
Mapper.Entity<EpisodeFile>().RegisterModel("EpisodeFiles"); Mapper.Entity<EpisodeFile>().RegisterModel("EpisodeFiles");

View File

@ -75,14 +75,15 @@ namespace NzbDrone.Core.Tv
startingSeasonNumber = 0; startingSeasonNumber = 0;
} }
pagingSpec.Records = Query.Join<Episode, Series>(JoinType.Inner, e => e.Series, (e, s) => e.SeriesId == s.Id) var pagingQuery = Query.Join<Episode, Series>(JoinType.Inner, e => e.Series, (e, s) => e.SeriesId == s.Id)
.Where(e => e.EpisodeFileId == 0) .Where(e => e.EpisodeFileId == 0)
.AndWhere(e => e.SeasonNumber >= startingSeasonNumber) .AndWhere(e => e.SeasonNumber >= startingSeasonNumber)
.AndWhere(e => e.AirDate <= currentTime) .AndWhere(e => e.AirDate <= currentTime)
.OrderBy(pagingSpec.OrderByClause(), pagingSpec.ToSortDirection()) .OrderBy(pagingSpec.OrderByClause(), pagingSpec.ToSortDirection())
.Skip(pagingSpec.PagingOffset()) .Skip(pagingSpec.PagingOffset())
.Take(pagingSpec.PageSize) .Take(pagingSpec.PageSize);
.ToList();
pagingSpec.Records = pagingQuery.ToList();
//TODO: Use the same query for count and records //TODO: Use the same query for count and records
pagingSpec.TotalRecords = Query.Where(e => e.EpisodeFileId == 0 && e.SeasonNumber >= startingSeasonNumber && e.AirDate <= currentTime).Count(); pagingSpec.TotalRecords = Query.Where(e => e.EpisodeFileId == 0 && e.SeasonNumber >= startingSeasonNumber && e.AirDate <= currentTime).Count();

View File

@ -99,8 +99,6 @@ namespace NzbDrone.Core.Tv
{ {
var episodeResult = _episodeRepository.EpisodesWithoutFiles(pagingSpec, includeSpecials); var episodeResult = _episodeRepository.EpisodesWithoutFiles(pagingSpec, includeSpecials);
episodeResult.Records = LinkSeriesToEpisodes(episodeResult.Records);
return episodeResult; return episodeResult;
} }