124 lines
3.3 KiB
C#
124 lines
3.3 KiB
C#
namespace vassago;
|
|
|
|
using System.Linq.Expressions;
|
|
using vassago.Models;
|
|
|
|
public static class Rememberer
|
|
{
|
|
private static readonly SemaphoreSlim dbAccessSemaphore = new(1, 1);
|
|
public static Account SearchAccount(Expression<Func<Account, bool>> predicate)
|
|
{
|
|
return (new ChattingContext()).Accounts.FirstOrDefault(predicate);
|
|
}
|
|
public static List<Account> SearchAccounts(Expression<Func<Account, bool>> predicate)
|
|
{
|
|
return (new ChattingContext()).Accounts.Where(predicate).ToList();
|
|
}
|
|
public static Attachment SearchAttachment(Expression<Func<Attachment, bool>> predicate)
|
|
{
|
|
return (new ChattingContext()).Attachments.FirstOrDefault(predicate);
|
|
}
|
|
public static Channel SearchChannel(Expression<Func<Channel, bool>> predicate)
|
|
{
|
|
return (new ChattingContext()).Channels.FirstOrDefault(predicate);
|
|
}
|
|
public static Message SearchMessage(Expression<Func<Message, bool>> predicate)
|
|
{
|
|
return (new ChattingContext()).Messages.FirstOrDefault(predicate);
|
|
}
|
|
public static User SearchUser(Expression<Func<User, bool>> predicate)
|
|
{
|
|
return (new ChattingContext()).Users.FirstOrDefault(predicate);
|
|
}
|
|
public static void RememberAccount(Account toRemember)
|
|
{
|
|
dbAccessSemaphore.Wait();
|
|
try
|
|
{
|
|
var db = new ChattingContext();
|
|
db.Update(toRemember);
|
|
db.ChangeTracker.Clear();
|
|
db.SaveChanges();
|
|
}
|
|
finally
|
|
{
|
|
dbAccessSemaphore.Release();
|
|
}
|
|
}
|
|
public static void RememberAttachment(Attachment toRemember)
|
|
{
|
|
dbAccessSemaphore.Wait();
|
|
try
|
|
{
|
|
var db = new ChattingContext();
|
|
db.Update(toRemember);
|
|
db.ChangeTracker.Clear();
|
|
db.SaveChanges();
|
|
}
|
|
finally
|
|
{
|
|
dbAccessSemaphore.Release();
|
|
}
|
|
}
|
|
public static Channel RememberChannel(Channel toRemember)
|
|
{
|
|
dbAccessSemaphore.Wait();
|
|
try
|
|
{
|
|
var db = new ChattingContext();
|
|
db.Update(toRemember);
|
|
db.ChangeTracker.Clear();
|
|
db.SaveChanges();
|
|
}
|
|
finally
|
|
{
|
|
dbAccessSemaphore.Release();
|
|
}
|
|
return toRemember;
|
|
}
|
|
public static void RememberMessage(Message toRemember)
|
|
{
|
|
dbAccessSemaphore.Wait();
|
|
try
|
|
{
|
|
var db = new ChattingContext();
|
|
db.Update(toRemember);
|
|
db.ChangeTracker.Clear();
|
|
db.SaveChanges();
|
|
}
|
|
finally
|
|
{
|
|
dbAccessSemaphore.Release();
|
|
}
|
|
}
|
|
public static void RememberUser(User toRemember)
|
|
{
|
|
dbAccessSemaphore.Wait();
|
|
try
|
|
{
|
|
var db = new ChattingContext();
|
|
db.Users.Update(toRemember);
|
|
db.ChangeTracker.Clear();
|
|
db.SaveChanges();
|
|
}
|
|
finally
|
|
{
|
|
dbAccessSemaphore.Release();
|
|
}
|
|
}
|
|
public static void ForgetUser(User toForget)
|
|
{
|
|
dbAccessSemaphore.Wait();
|
|
try
|
|
{
|
|
var db = new ChattingContext();
|
|
db.Users.Remove(toForget);
|
|
db.ChangeTracker.Clear();
|
|
db.SaveChanges();
|
|
}
|
|
finally
|
|
{
|
|
dbAccessSemaphore.Release();
|
|
}
|
|
}
|
|
} |