don't necessarily load messages

This commit is contained in:
adam 2025-06-04 21:09:22 -04:00
parent 224a3c5a62
commit a8bf8a8488
2 changed files with 21 additions and 5 deletions

View File

@ -22,4 +22,5 @@ public class Message
public List<Attachment> Attachments { get; set; } public List<Attachment> Attachments { get; set; }
public Account Author { get; set; } public Account Author { get; set; }
public Channel Channel { get; set; } public Channel Channel { get; set; }
public Guid? ChannelId { get; set; }
} }

View File

@ -23,6 +23,10 @@ public static class Rememberer
ch.ParentChannel.SubChannels ??= []; ch.ParentChannel.SubChannels ??= [];
ch.ParentChannel.SubChannels.Add(ch); ch.ParentChannel.SubChannels.Add(ch);
} }
if (ch.Messages?.Count > 0)
{
Console.WriteLine($"{ch.DisplayName} got {ch.Messages.Count} messages");
}
} }
channelCacheDirty = false; channelCacheDirty = false;
dbAccessSemaphore.Release(); dbAccessSemaphore.Release();
@ -54,7 +58,7 @@ public static class Rememberer
} }
public static Channel SearchChannel(Func<Channel, bool> predicate) public static Channel SearchChannel(Func<Channel, bool> predicate)
{ {
if(channelCacheDirty) if (channelCacheDirty)
Task.Run(() => cacheChannels()).Wait(); Task.Run(() => cacheChannels()).Wait();
return channels.FirstOrDefault(predicate); return channels.FirstOrDefault(predicate);
} }
@ -66,6 +70,14 @@ public static class Rememberer
dbAccessSemaphore.Release(); dbAccessSemaphore.Release();
return toReturn; return toReturn;
} }
public static List<Message> SearchMessages(Expression<Func<Message, bool>> predicate)
{
List<Message> toReturn;
dbAccessSemaphore.Wait();
toReturn = db.Messages.Where(predicate).ToList();
dbAccessSemaphore.Release();
return toReturn;
}
public static User SearchUser(Expression<Func<User, bool>> predicate) public static User SearchUser(Expression<Func<User, bool>> predicate)
{ {
User toReturn; User toReturn;
@ -92,7 +104,7 @@ public static class Rememberer
} }
public static Channel RememberChannel(Channel toRemember) public static Channel RememberChannel(Channel toRemember)
{ {
if(channelCacheDirty) if (channelCacheDirty)
Task.Run(() => cacheChannels()).Wait(); //so we always do 2 db trips? Task.Run(() => cacheChannels()).Wait(); //so we always do 2 db trips?
dbAccessSemaphore.Wait(); dbAccessSemaphore.Wait();
db.Update(toRemember); db.Update(toRemember);
@ -221,11 +233,14 @@ public static class Rememberer
dbAccessSemaphore.Release(); dbAccessSemaphore.Release();
return toReturn; return toReturn;
} }
public static Channel ChannelDetail(Guid Id) public static Channel ChannelDetail(Guid Id, bool messages = false)
{ {
if(channelCacheDirty) if (channelCacheDirty)
Task.Run(() => cacheChannels()).Wait(); Task.Run(() => cacheChannels()).Wait();
return channels.Find(c => c.Id == Id); var ch = channels.Find(c => c.Id == Id);
if (messages)
ch.Messages = SearchMessages(m => m.ChannelId == ch.Id);
return ch;
} }
public static Message MessageDetail(Guid Id) public static Message MessageDetail(Guid Id)
{ {