Performance improvements
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				release / Build and push Docker image (push) Successful in 1m11s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	release / Build and push Docker image (push) Successful in 1m11s
				
			This commit is contained in:
		@@ -18,10 +18,15 @@ public class HandleStartMessage
 | 
			
		||||
                               (callbackQuery != null ? "Callback" : "Start command"));
 | 
			
		||||
 | 
			
		||||
        // choose all media attachments that are approved
 | 
			
		||||
        var mediaAttachmentsToSelect = await _db.AsQueryable()
 | 
			
		||||
            .Where(post => post.MediaAttachments.Any(media => media.Approved))
 | 
			
		||||
            .ToListAsync();
 | 
			
		||||
        
 | 
			
		||||
        // OLD QUERY
 | 
			
		||||
        // var mediaAttachmentsToSelect = await _db.AsQueryable()
 | 
			
		||||
        //     .Where(post => post.MediaAttachments.Any(media => media.Approved))
 | 
			
		||||
        //     .ToListAsync();
 | 
			
		||||
 | 
			
		||||
        var filter = Builders<Post>.Filter.ElemMatch(post => post.MediaAttachments, Builders<MediaAttachment>.Filter.Eq(media => media.Approved, true));
 | 
			
		||||
        var mediaAttachmentsToSelect = await _db.Find(filter).ToListAsync();
 | 
			
		||||
        
 | 
			
		||||
        // select random approved media attachment
 | 
			
		||||
        var selectedMediaAttachment = mediaAttachmentsToSelect[new Random().Next(mediaAttachmentsToSelect.Count)];
 | 
			
		||||
        // send media attachment
 | 
			
		||||
 
 | 
			
		||||
@@ -37,6 +37,7 @@ public class ProcessPosts
 | 
			
		||||
                                $"<a href=\"" + post.Url + "\"> Mastodon </a>", ParseMode.Html
 | 
			
		||||
                                , replyMarkup: new InlineKeyboardMarkup().AddButton("Approve", $"approve-{media.MediaId}").AddButton("Reject", $"reject-{media.MediaId}"));
 | 
			
		||||
                            validPosts.Add(post);
 | 
			
		||||
                            newPosts++;
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (Exception ex)
 | 
			
		||||
                        {
 | 
			
		||||
@@ -44,7 +45,7 @@ public class ProcessPosts
 | 
			
		||||
                                             media.PreviewUrl);
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                newPosts++;
 | 
			
		||||
                
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        // Insert post
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,10 @@
 | 
			
		||||
using System.Diagnostics;
 | 
			
		||||
using System.Reflection;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using Microsoft.AspNetCore.Builder;
 | 
			
		||||
using Microsoft.AspNetCore.Hosting;
 | 
			
		||||
using Microsoft.AspNetCore.Http;
 | 
			
		||||
using MongoDB.Driver;
 | 
			
		||||
using MongoDB.Driver.Linq;
 | 
			
		||||
using mstdnCats.Models;
 | 
			
		||||
 | 
			
		||||
namespace mstdnCats.Services;
 | 
			
		||||
@@ -47,11 +47,16 @@ public class ServerStartup
 | 
			
		||||
            endpoints.MapGet("/api/gimme", async context =>
 | 
			
		||||
            {
 | 
			
		||||
                // Api endpoint
 | 
			
		||||
                // Choose all media attachments that are approved
 | 
			
		||||
                var mediaAttachmentsToSelect = await _db.AsQueryable()
 | 
			
		||||
                    .Where(post => post.MediaAttachments.Any(media => media.Approved))
 | 
			
		||||
                    .ToListAsync();
 | 
			
		||||
                // Measure execution time
 | 
			
		||||
                var stopwatch = Stopwatch.StartNew();
 | 
			
		||||
 | 
			
		||||
                // Choose all posts media attachments that are approved
 | 
			
		||||
                var filter = Builders<Post>.Filter.ElemMatch(post => post.MediaAttachments, Builders<MediaAttachment>.Filter.Eq(media => media.Approved, true));
 | 
			
		||||
                var mediaAttachmentsToSelect = await _db.Find(filter).ToListAsync();
 | 
			
		||||
 | 
			
		||||
                // Stop and print execution time
 | 
			
		||||
                stopwatch.Stop();
 | 
			
		||||
                Console.WriteLine($"Query executed in: {stopwatch.ElapsedMilliseconds} ms");
 | 
			
		||||
                // Select random approved media attachment
 | 
			
		||||
                var selectedPost = mediaAttachmentsToSelect[new Random().Next(mediaAttachmentsToSelect.Count)];
 | 
			
		||||
                
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user