Skip to content

Instantly share code, notes, and snippets.

@hagbarddenstore
Created June 3, 2014 11:46
Show Gist options
  • Save hagbarddenstore/7f86d3bef32b73b765e0 to your computer and use it in GitHub Desktop.
Save hagbarddenstore/7f86d3bef32b73b765e0 to your computer and use it in GitHub Desktop.
// Domain
interface IUsersRepository
{
IEnumerable<User> FindAll(int pageIndex, int pageSize);
}
class User
{
public int Id { get; private set; }
public string Username { get; private set; }
}
// Web
class UsersController : System.Web.Mvc.Controller
{
private readonly IUsersRepository _usersRepository;
public UsersController(IUsersRepository usersRepository)
{
_usersRepository = usersRepository;
}
public ActionResult Index(int pageIndex)
{
var users = _usersRepository.FindAll(pageIndex, 100);
}
}
// Infrastructure
class MongoDbUsersRepository : IUsersRepository
{
private readonly MongoDatabase _database;
public MongoDbUsersRepository(string connectionString)
{
var url = new MongoUrl(connectionString);
var client = new MongoClient(url);
var server = client.GetServer();
var database = server.GetDatabase(url.DatabaseName);
_database = database;
}
public IEnumerable<User> FindAll(int pageIndex, int pageSize)
{
var collection = _database.GetCollection<User>("Users");
var users = collection.FindAll().SetSortOrder("Username").SetSkip((pageIndex - 1) * pageSize).SetLimit(pageSize).ToList();
return users;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment