Initial commit carried over from private repo. This is V2.
This commit is contained in:
23
code/MessengerApi.Db/Repositories/MessageRepository.cs
Normal file
23
code/MessengerApi.Db/Repositories/MessageRepository.cs
Normal file
@ -0,0 +1,23 @@
|
||||
using MessengerApi.Db.Contracts.Repositories;
|
||||
using MessengerApi.Db.Entities;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace MessengerApi.Db.Repositories
|
||||
{
|
||||
public class MessageRepository : Repository<Message>, IMessageRepository
|
||||
{
|
||||
public MessageRepository(DbSet<Message> db) : base(db)
|
||||
{
|
||||
}
|
||||
|
||||
public IEnumerable<Message> GetPendingMessages(User user)
|
||||
{
|
||||
var timestamp = DateTime.UtcNow;
|
||||
|
||||
return this.db
|
||||
.Where(x => x.ToId == user.Id && x.IsDelivered == false)
|
||||
.Where(x => x.PayloadLifespanInSeconds == null || x.CreatedUtc.AddSeconds(x.PayloadLifespanInSeconds.Value) >= timestamp)
|
||||
.OrderBy(x => x.CreatedUtc);
|
||||
}
|
||||
}
|
||||
}
|
||||
26
code/MessengerApi.Db/Repositories/Repository.cs
Normal file
26
code/MessengerApi.Db/Repositories/Repository.cs
Normal file
@ -0,0 +1,26 @@
|
||||
using MessengerApi.Db.Contracts.Entities;
|
||||
using MessengerApi.Db.Contracts.Repositories;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace MessengerApi.Db.Repositories
|
||||
{
|
||||
public abstract class Repository<T> : IRepository<T> where T : class, IEntity<T>
|
||||
{
|
||||
protected readonly DbSet<T> db;
|
||||
|
||||
public Repository(DbSet<T> db)
|
||||
{
|
||||
this.db = db;
|
||||
}
|
||||
|
||||
public void Add(T entity)
|
||||
{
|
||||
this.db.Add(entity);
|
||||
}
|
||||
|
||||
public T GetById(Guid id)
|
||||
{
|
||||
return this.db.Single(x => x.Id == id);
|
||||
}
|
||||
}
|
||||
}
|
||||
18
code/MessengerApi.Db/Repositories/UserRepository.cs
Normal file
18
code/MessengerApi.Db/Repositories/UserRepository.cs
Normal file
@ -0,0 +1,18 @@
|
||||
using MessengerApi.Db.Contracts.Repositories;
|
||||
using MessengerApi.Db.Entities;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace MessengerApi.Db.Repositories
|
||||
{
|
||||
public class UserRepository : Repository<User>, IUserRepository
|
||||
{
|
||||
public UserRepository(DbSet<User> db) : base(db)
|
||||
{
|
||||
}
|
||||
|
||||
public User SingleByApiKeyAndEnabled(Guid id, bool enabled)
|
||||
{
|
||||
return this.db.Single(x => x.ApiKey == id && x.IsEnabled == enabled);
|
||||
}
|
||||
}
|
||||
}
|
||||
23
code/MessengerApi.Db/Repositories/UserRouteRepository.cs
Normal file
23
code/MessengerApi.Db/Repositories/UserRouteRepository.cs
Normal file
@ -0,0 +1,23 @@
|
||||
using MessengerApi.Db.Contracts.Repositories;
|
||||
using MessengerApi.Db.Entities;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace MessengerApi.Db.Repositories
|
||||
{
|
||||
public class UserRouteRepository : Repository<UserRoute>, IUserRouteRepository
|
||||
{
|
||||
public UserRouteRepository(DbSet<UserRoute> db) : base(db)
|
||||
{
|
||||
}
|
||||
|
||||
public IEnumerable<UserRoute> GetAllByUser(User sender)
|
||||
{
|
||||
return this.db.Include(x => x.From).Include(x => x.To).Where(x => x.From.Id == sender.Id || x.To.Id == sender.Id);
|
||||
}
|
||||
|
||||
public IEnumerable<UserRoute> GetByFrom(User user)
|
||||
{
|
||||
return this.db.Include(x => x.From).Include(x => x.To).Where(x => x.From.Id == user.Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user