Compare commits

...

2 Commits

Author SHA1 Message Date
787a9dd09b Performance improvements
All checks were successful
release / Build and push Docker image (push) Successful in 1m11s
2025-01-04 23:06:13 +03:30
59410c1458 Removed binary build from gitlab ci 2025-01-04 23:05:50 +03:30
4 changed files with 41 additions and 30 deletions

View File

@@ -36,24 +36,24 @@ docker-build:
- Dockerfile
stages:
- build
variables:
DOTNET_CLI_TELEMETRY_OPTOUT: "1"
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: "1"
before_script:
- apt-get update && apt-get install -y tar
bin-build:
stage: build
image: mcr.microsoft.com/dotnet/sdk:9.0-bookworm-slim
script:
- dotnet nuget add source https://pkgs.dev.azure.com/tgbots/Telegram.Bot/_packaging/release/nuget/v3/index.json -n Telegram.Bot
- dotnet restore --no-cache
- dotnet publish -c Release -r linux-x64 --self-contained true /p:PublishSingleFile=true /p:PublishTrimmed=false /p:EnableCompressionInSingleFile=true
- tar -czvf publish.tar.gz -C bin/Release/net9.0/linux-x64/publish/ .
artifacts:
paths:
- publish.tar.gz
#stages:
# - build
#
#variables:
# DOTNET_CLI_TELEMETRY_OPTOUT: "1"
# DOTNET_SKIP_FIRST_TIME_EXPERIENCE: "1"
#
#before_script:
# - apt-get update && apt-get install -y tar
#
#bin-build:
# stage: build
# image: mcr.microsoft.com/dotnet/sdk:9.0-bookworm-slim
# script:
# - dotnet nuget add source https://pkgs.dev.azure.com/tgbots/Telegram.Bot/_packaging/release/nuget/v3/index.json -n Telegram.Bot
# - dotnet restore --no-cache
# - dotnet publish -c Release -r linux-x64 --self-contained true /p:PublishSingleFile=true /p:PublishTrimmed=false /p:EnableCompressionInSingleFile=true
# - tar -czvf publish.tar.gz -C bin/Release/net9.0/linux-x64/publish/ .
# artifacts:
# paths:
# - publish.tar.gz

View File

@@ -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

View File

@@ -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

View File

@@ -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)];