aboutsummaryrefslogtreecommitdiff
path: root/back-end/src
diff options
context:
space:
mode:
Diffstat (limited to 'back-end/src')
-rw-r--r--back-end/src/Cache/MemPackCacheSerializer.cs34
-rw-r--r--back-end/src/Cache/ResultCacheEntry.cs44
-rw-r--r--back-end/src/Cache/SearchResultCache.cs111
-rw-r--r--back-end/src/SimpleBookmark.csproj1
4 files changed, 0 insertions, 190 deletions
diff --git a/back-end/src/Cache/MemPackCacheSerializer.cs b/back-end/src/Cache/MemPackCacheSerializer.cs
deleted file mode 100644
index f1ffa88..0000000
--- a/back-end/src/Cache/MemPackCacheSerializer.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2024 Vaughn Nugent
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-
-using System;
-using System.Buffers;
-
-using MemoryPack;
-
-using VNLib.Data.Caching;
-
-namespace SimpleBookmark.Cache
-{
- internal sealed class MemPackCacheSerializer(MemoryPackSerializerOptions? options) : ICacheObjectSerializer, ICacheObjectDeserializer
- {
- ///<inheritdoc/>
- public T? Deserialize<T>(ReadOnlySpan<byte> objectData) => MemoryPackSerializer.Deserialize<T>(objectData, options);
-
- ///<inheritdoc/>
- public void Serialize<T>(T obj, IBufferWriter<byte> finiteWriter) => MemoryPackSerializer.Serialize(finiteWriter, obj, options);
- }
-}
diff --git a/back-end/src/Cache/ResultCacheEntry.cs b/back-end/src/Cache/ResultCacheEntry.cs
deleted file mode 100644
index 3e23042..0000000
--- a/back-end/src/Cache/ResultCacheEntry.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (C) 2024 Vaughn Nugent
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-using System;
-using System.Buffers;
-using System.Runtime.InteropServices;
-using System.Text.Json.Serialization;
-
-using MemoryPack;
-
-namespace SimpleBookmark.Cache
-{
- [MemoryPackable]
- internal partial class ResultCacheEntry : IDisposable
- {
- [MemoryPoolFormatter<byte>]
- public Memory<byte> Payload { get; set; }
-
- [JsonPropertyName("created")]
- public DateTime Created { get; set; }
-
- public void Dispose()
- {
- //Return the array back to the pool
- if (MemoryMarshal.TryGetArray(Payload, out ArraySegment<byte> segment) && segment.Array is { Length: > 0 })
- {
- ArrayPool<byte>.Shared.Return(segment.Array);
- Payload = default;
- }
- }
- }
-}
diff --git a/back-end/src/Cache/SearchResultCache.cs b/back-end/src/Cache/SearchResultCache.cs
deleted file mode 100644
index c7a263a..0000000
--- a/back-end/src/Cache/SearchResultCache.cs
+++ /dev/null
@@ -1,111 +0,0 @@
-// Copyright (C) 2024 Vaughn Nugent
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-using System;
-using System.Threading;
-using System.Threading.Tasks;
-
-using VNLib.Net.Http;
-using VNLib.Data.Caching;
-using VNLib.Plugins;
-using VNLib.Plugins.Extensions.Loading;
-using VNLib.Plugins.Extensions.VNCache;
-using VNLib.Plugins.Extensions.VNCache.DataModel;
-
-namespace SimpleBookmark.Cache
-{
- [ConfigurationName("search_cache", Required = false)]
- internal sealed class SearchResultCache
- {
- private readonly IEntityCache<ResultCacheEntry>? _cache;
-
- /// <summary>
- /// Gets a value that indicates if the configuration enabled result caching
- /// </summary>
- public bool IsEnabled => _cache != null;
-
- public SearchResultCache(PluginBase plugin) : this(plugin, null)
- { }
-
- public SearchResultCache(PluginBase plugin, IConfigScope? config)
- {
- string? cachePrefix = config?.GetRequiredProperty("cachePrefix", p => p.GetString()!);
- bool isEnabled = config?.GetRequiredProperty("enabled", p => p.GetBoolean()) ?? true;
-
- if (!isEnabled)
- {
- return;
- }
-
- IGlobalCacheProvider? cache = plugin.GetDefaultGlobalCache();
- if (cache != null)
- {
- if (cachePrefix != null)
- {
- _cache = cache.GetPrefixedCache(cachePrefix)
- .CreateEntityCache<ResultCacheEntry>(
- new MemPackCacheSerializer(null),
- new MemPackCacheSerializer(null)
- );
- }
- else
- {
- //non-prefixed cache
- _cache = cache.CreateEntityCache<ResultCacheEntry>(
- new MemPackCacheSerializer(null),
- new MemPackCacheSerializer(null)
- );
- }
- }
- }
-
- public async Task<IMemoryResponseReader?> GetCachedResultAsync(string[] keys, CancellationToken cancellation)
- {
- ResultCacheEntry? entry = await _cache!.GetAsync($"{keys}", cancellation);
- return entry is null ? null : new ResultResponseReader(entry);
- }
-
- public Task StoreResultAsync(Memory<byte> data, string[] keys, CancellationToken cancellation)
- {
- //Init new entry
- ResultCacheEntry entry = new()
- {
- Payload = data,
- Created = DateTime.UtcNow
- };
-
- return _cache!.UpsertAsync($"{keys}", entry, cancellation);
- }
-
- public Task DeleteEntry(string[] keys, CancellationToken cancellation) => _cache!.RemoveAsync($"{keys}", cancellation);
-
- private sealed class ResultResponseReader(ResultCacheEntry entry) : IMemoryResponseReader
- {
- private int _position;
-
- ///<inheritdoc/>
- public int Remaining => entry.Payload.Length - _position;
-
- ///<inheritdoc/>
- public void Advance(int written) => _position += written;
-
- ///<inheritdoc/>
- public void Close() => entry.Dispose();
-
- ///<inheritdoc/>
- public ReadOnlyMemory<byte> GetMemory() => entry.Payload.Slice(_position);
- }
- }
-}
diff --git a/back-end/src/SimpleBookmark.csproj b/back-end/src/SimpleBookmark.csproj
index fc9b46a..71fe747 100644
--- a/back-end/src/SimpleBookmark.csproj
+++ b/back-end/src/SimpleBookmark.csproj
@@ -33,7 +33,6 @@
</ItemGroup>
<ItemGroup>
- <PackageReference Include="MemoryPack" Version="1.21.1" />
<PackageReference Include="VNLib.Plugins.Extensions.Data" Version="0.1.0-ci0063" />
<PackageReference Include="VNLib.Plugins.Extensions.Loading" Version="0.1.0-ci0063" />
<PackageReference Include="VNLib.Plugins.Extensions.Loading.Sql" Version="0.1.0-ci0063" />