Initial commit carried over from private repo. This is V2.
This commit is contained in:
11
code/MessengerApi.Db.Contracts/Entities/IEntity.cs
Normal file
11
code/MessengerApi.Db.Contracts/Entities/IEntity.cs
Normal file
@ -0,0 +1,11 @@
|
||||
namespace MessengerApi.Db.Contracts.Entities
|
||||
{
|
||||
public interface IEntity
|
||||
{
|
||||
Guid Id { get; }
|
||||
}
|
||||
|
||||
public interface IEntity<T> : IEntity where T : class, IEntity
|
||||
{
|
||||
}
|
||||
}
|
||||
25
code/MessengerApi.Db.Contracts/Entities/Message.cs
Normal file
25
code/MessengerApi.Db.Contracts/Entities/Message.cs
Normal file
@ -0,0 +1,25 @@
|
||||
using MessengerApi.Db.Contracts.Entities;
|
||||
|
||||
namespace MessengerApi.Db.Entities
|
||||
{
|
||||
public class Message : IEntity<Message>
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
|
||||
public DateTime CreatedUtc { get; set; }
|
||||
|
||||
public Guid FromId { get; set; }
|
||||
|
||||
public Guid ToId { get; set; }
|
||||
|
||||
public bool IsDelivered { get; set; }
|
||||
|
||||
public bool IsAcknowledged { get; set; }
|
||||
|
||||
public string PayloadType { get; set; }
|
||||
|
||||
public string Payload { get; set; }
|
||||
|
||||
public int? PayloadLifespanInSeconds { get; set; }
|
||||
}
|
||||
}
|
||||
15
code/MessengerApi.Db.Contracts/Entities/User.cs
Normal file
15
code/MessengerApi.Db.Contracts/Entities/User.cs
Normal file
@ -0,0 +1,15 @@
|
||||
using MessengerApi.Db.Contracts.Entities;
|
||||
|
||||
namespace MessengerApi.Db.Entities
|
||||
{
|
||||
public class User : IEntity<User>
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
|
||||
public Guid ApiKey { get; set; }
|
||||
|
||||
public string Name { get; set; }
|
||||
|
||||
public bool IsEnabled { get; set; }
|
||||
}
|
||||
}
|
||||
16
code/MessengerApi.Db.Contracts/Entities/UserRoute.cs
Normal file
16
code/MessengerApi.Db.Contracts/Entities/UserRoute.cs
Normal file
@ -0,0 +1,16 @@
|
||||
using MessengerApi.Db.Contracts.Entities;
|
||||
|
||||
namespace MessengerApi.Db.Entities
|
||||
{
|
||||
/// <summary>
|
||||
/// Describes allowed message route (who can message whom).
|
||||
/// </summary>
|
||||
public class UserRoute : IEntity<UserRoute>
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
|
||||
public User From { get; set; }
|
||||
|
||||
public User To { get; set; }
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>disable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
@ -0,0 +1,9 @@
|
||||
using MessengerApi.Db.Entities;
|
||||
|
||||
namespace MessengerApi.Db.Contracts.Repositories
|
||||
{
|
||||
public interface IMessageRepository : IRepository<Message>
|
||||
{
|
||||
IEnumerable<Message> GetPendingMessages(User user);
|
||||
}
|
||||
}
|
||||
15
code/MessengerApi.Db.Contracts/Repositories/IRepository.cs
Normal file
15
code/MessengerApi.Db.Contracts/Repositories/IRepository.cs
Normal file
@ -0,0 +1,15 @@
|
||||
using MessengerApi.Db.Contracts.Entities;
|
||||
|
||||
namespace MessengerApi.Db.Contracts.Repositories
|
||||
{
|
||||
public interface IRepository
|
||||
{
|
||||
}
|
||||
|
||||
public interface IRepository<T> : IRepository where T : class, IEntity<T>
|
||||
{
|
||||
void Add(T entity);
|
||||
|
||||
T GetById(Guid id);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
using MessengerApi.Db.Entities;
|
||||
|
||||
namespace MessengerApi.Db.Contracts.Repositories
|
||||
{
|
||||
public interface IUserRepository : IRepository<User>
|
||||
{
|
||||
User SingleByApiKeyAndEnabled(Guid id, bool enabled);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
using MessengerApi.Db.Entities;
|
||||
|
||||
namespace MessengerApi.Db.Contracts.Repositories
|
||||
{
|
||||
public interface IUserRouteRepository:IRepository<UserRoute>
|
||||
{
|
||||
/// <summary>
|
||||
/// Returns all routes for given user.
|
||||
/// </summary>
|
||||
IEnumerable<UserRoute> GetAllByUser(User sender);
|
||||
|
||||
/// <summary>
|
||||
/// Returns routes where given user is sender.
|
||||
/// </summary>
|
||||
IEnumerable<UserRoute> GetByFrom(User user);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user