TracksQuery.cs 816 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. using LiteDB;
  2. using RunnersMeet.Server.Domain;
  3. namespace RunnersMeet.Server.Persistence;
  4. public class TracksQuery : ITracksQuery
  5. {
  6. private readonly IDatabase _database;
  7. private readonly ILiteQueryable<Track> _query;
  8. public TracksQuery(IDatabase database)
  9. {
  10. _database = database;
  11. _query = _database.Tracks.Query();
  12. }
  13. public TracksQuery ForOwner(string owner)
  14. {
  15. _query.Where(track => track.Owner == owner);
  16. return this;
  17. }
  18. public TracksQuery FilterByName(string value)
  19. {
  20. _query.Where(track => track.DisplayName.Contains(value));
  21. return this;
  22. }
  23. public TracksQuery Paging(int offset, int limit)
  24. {
  25. _query.OrderBy(track => track.DisplayName).Offset(offset).Limit(limit);
  26. return this;
  27. }
  28. public IList<Track> Get()
  29. {
  30. return _query.ToList();
  31. }
  32. }