Skip to content

Commit

Permalink
Store to worker (#40)
Browse files Browse the repository at this point in the history
* store -> worker

* temp
  • Loading branch information
Atralupus authored May 7, 2024
1 parent 4f57dae commit 949f085
Show file tree
Hide file tree
Showing 38 changed files with 88 additions and 88 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/docker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ jobs:
docker:
- repo: planetariumhq/mimir
dockerfile: Dockerfile
- repo: planetariumhq/mimir-store
dockerfile: Dockerfile.Store
- repo: planetariumhq/mimir-worker
dockerfile: Dockerfile.Worker
steps:
-
name: Checkout
Expand Down
8 changes: 4 additions & 4 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@
"preLaunchTask": "build-backend"
},
{
"name": "Debug Mimir.Store",
"name": "Debug Mimir.Worker",
"type": "coreclr",
"request": "launch",
"program": "${workspaceFolder}/Mimir.Store/bin/Debug/net8.0/Mimir.Store.dll",
"cwd": "${workspaceFolder}/Mimir.Store",
"program": "${workspaceFolder}/Mimir.Worker/bin/Debug/net8.0/Mimir.Worker.dll",
"cwd": "${workspaceFolder}/Mimir.Worker",
"stopAtEntry": false,
"console": "internalConsole",
"preLaunchTask": "build-store",
"preLaunchTask": "build-worker",
"env": {
"STORE_CONFIG_FILE": "appsettings.local.json"
}
Expand Down
12 changes: 6 additions & 6 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,38 +38,38 @@
"problemMatcher": "$msCompile"
},
{
"label": "build-store",
"label": "build-worker",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/Mimir.Store/Mimir.Store.csproj",
"${workspaceFolder}/Mimir.Worker/Mimir.Worker.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "publish-store",
"label": "publish-worker",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"${workspaceFolder}/Mimir.Store/Mimir.Store.csproj",
"${workspaceFolder}/Mimir.Worker/Mimir.Worker.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "watch-store",
"label": "watch-worker",
"command": "dotnet",
"type": "process",
"args": [
"watch",
"run",
"--project",
"${workspaceFolder}/Mimir.Store/Mimir.Store.csproj"
"${workspaceFolder}/Mimir.Worker/Mimir.Worker.csproj"
],
"problemMatcher": "$msCompile"
}
Expand Down
8 changes: 4 additions & 4 deletions Dockerfile.Store → Dockerfile.Worker
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,21 @@ WORKDIR /app
# Copy everything else and build
COPY . ./
RUN dotnet tool restore
RUN dotnet graphql generate Mimir.Store
RUN dotnet graphql generate Mimir.Worker
RUN <<EOF
#!/bin/bash
echo "TARGETPLATFROM=$TARGETPLATFORM"
echo "BUILDPLATFORM=$BUILDPLATFORM"
if [[ "$TARGETPLATFORM" = "linux/amd64" ]]
then
dotnet publish Mimir.Store/Mimir.Store.csproj \
dotnet publish Mimir.Worker/Mimir.Worker.csproj \
-c Release \
-r linux-x64 \
-o out \
--self-contained
elif [[ "$TARGETPLATFORM" = "linux/arm64" ]]
then
dotnet publish Mimir.Store/Mimir.Store.csproj \
dotnet publish Mimir.Worker/Mimir.Worker.csproj \
-c Release \
-r linux-arm64 \
-o out \
Expand All @@ -43,4 +43,4 @@ RUN apt-get update \
libc6-dev jq curl \
&& rm -rf /var/lib/apt/lists/*

ENTRYPOINT ["dotnet", "Mimir.Store.dll"]
ENTRYPOINT ["dotnet", "Mimir.Worker.dll"]
File renamed without changes.
20 changes: 10 additions & 10 deletions Mimir.Store/BlockPoller.cs → Mimir.Worker/BlockPoller.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,20 @@
using HeadlessGQL;
using Libplanet.Crypto;
using Libplanet.Types.Tx;
using Mimir.Store.Models;
using Mimir.Store.Scrapper;
using Mimir.Store.Services;
using Mimir.Worker.Models;
using Mimir.Worker.Scrapper;
using Mimir.Worker.Services;

namespace Mimir.Store;
namespace Mimir.Worker;

public class BlockPoller(IStateService stateService, HeadlessGQLClient headlessGqlClient, MongoDbStore mongoDbStore)
public class BlockPoller(IStateService stateService, HeadlessGQLClient headlessGqlClient, MongoDbWorker mongoDbWorker)
{
public async Task RunAsync(CancellationToken cancellationToken)
{
var stateGetter = new StateGetter(stateService);
while (!cancellationToken.IsCancellationRequested)
{
var syncedBlockIndex = await mongoDbStore.GetLatestBlockIndex();
var syncedBlockIndex = await mongoDbWorker.GetLatestBlockIndex();
var currentBlockIndex = await stateService.GetLatestIndex();
var processBlockIndex = syncedBlockIndex + 1;

Expand All @@ -31,7 +31,7 @@ public async Task RunAsync(CancellationToken cancellationToken)
{
Serilog.Log.Error("Failed to get arena txs. errors:\n" +
string.Join("\n", rawArenaTxsResp.Errors.Select(x => "- " + x.Message)));
await mongoDbStore.UpdateLatestBlockIndex(syncedBlockIndex + 1);
await mongoDbWorker.UpdateLatestBlockIndex(syncedBlockIndex + 1);
continue;
}

Expand All @@ -56,13 +56,13 @@ public async Task RunAsync(CancellationToken cancellationToken)
var myArenaData = await stateGetter.GetArenaData(roundData, myAvatarAddress);
var enemyArenaData = await stateGetter.GetArenaData(roundData, enemyAvatarAddress);

await mongoDbStore.BulkUpsertAvatarDataAsync(new List<AvatarData> { myAvatarData, enemyAvatarData });
await mongoDbStore.BulkUpsertArenaDataAsync(new List<ArenaData> { myArenaData, enemyArenaData });
await mongoDbWorker.BulkUpsertAvatarDataAsync(new List<AvatarData> { myAvatarData, enemyAvatarData });
await mongoDbWorker.BulkUpsertArenaDataAsync(new List<ArenaData> { myArenaData, enemyArenaData });
}
}
finally
{
await mongoDbStore.UpdateLatestBlockIndex(syncedBlockIndex + 1);
await mongoDbWorker.UpdateLatestBlockIndex(syncedBlockIndex + 1);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Mimir.Store;
namespace Mimir.Worker;

public class Configuration
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Mimir.Store.Models;
using Mimir.Worker.Models;

namespace Mimir.Store.Events;
namespace Mimir.Worker.Events;

public class ArenaDataCollectedEventArgs : EventArgs
{
Expand Down
16 changes: 8 additions & 8 deletions Mimir.Store/Initializer.cs → Mimir.Worker/Initializer.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
using HeadlessGQL;
using Mimir.Store.Scrapper;
using Mimir.Store.Services;
using Mimir.Worker.Scrapper;
using Mimir.Worker.Services;

namespace Mimir.Store;
namespace Mimir.Worker;

public class Initializer : BackgroundService
{
private readonly MongoDbStore _store;
private readonly MongoDbWorker _worker;
private readonly ArenaScrapper _scrapper;
private readonly ILogger<Initializer> _logger;
private readonly HeadlessGQLClient _headlessGqlClient;
Expand All @@ -17,13 +17,13 @@ public Initializer(
ILogger<ArenaScrapper> scrapperLogger,
HeadlessGQLClient headlessGqlClient,
IStateService stateService,
MongoDbStore store)
MongoDbWorker worker)
{
_logger = logger;
_stateService = stateService;
_store = store;
_worker = worker;
_headlessGqlClient = headlessGqlClient;
_scrapper = new ArenaScrapper(scrapperLogger, _stateService, _store);
_scrapper = new ArenaScrapper(scrapperLogger, _stateService, _worker);
}

protected override async Task ExecuteAsync(CancellationToken stoppingToken)
Expand All @@ -35,7 +35,7 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
var totalElapsedMinutes = DateTime.UtcNow.Subtract(started).Minutes;
_logger.LogInformation($"Finished Initializer background service. Elapsed {totalElapsedMinutes} minutes.");

var poller = new BlockPoller(_stateService, _headlessGqlClient, _store);
var poller = new BlockPoller(_stateService, _headlessGqlClient, _worker);
await poller.RunAsync(stoppingToken);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>dotnet-Mimir.Store-bccda56f-4d38-484b-ab03-ebb26065c837</UserSecretsId>
<UserSecretsId>dotnet-Mimir.Worker-bccda56f-4d38-484b-ab03-ebb26065c837</UserSecretsId>
</PropertyGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Mimir.Store.Models;
namespace Mimir.Worker.Models;

public class BlockResponse
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Libplanet.Crypto;

namespace Mimir.Store.Models;
namespace Mimir.Worker.Models;

public class ScrapperResult
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
using Nekoyume.TableData;
using Libplanet.Crypto;

namespace Mimir.Store.Models;
namespace Mimir.Worker.Models;

public class ArenaData : BaseData
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Nekoyume.Model.State;

namespace Mimir.Store.Models;
namespace Mimir.Worker.Models;

public class AvatarData : BaseData
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using Newtonsoft.Json;
using Mimir.Store.Util;
using Mimir.Worker.Util;

namespace Mimir.Store.Models;
namespace Mimir.Worker.Models;

public class BaseData
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Mimir.Store.Models;
namespace Mimir.Worker.Models;

public class StateResponse
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
using Libplanet.Crypto;

namespace Mimir.Store.Models;
namespace Mimir.Worker.Models;

public class StoreResult
public class WorkerResult
{
public DateTime StartTime { get; set; }
public int TotalElapsedMinutes { get; set; }
Expand Down
8 changes: 4 additions & 4 deletions Mimir.Store/Program.cs → Mimir.Worker/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
using System.Net.Http.Headers;
using System.Text;
using Microsoft.IdentityModel.Tokens;
using Mimir.Store;
using Mimir.Store.Services;
using Mimir.Worker;
using Mimir.Worker.Services;
using Microsoft.Extensions.Options;

var builder = Host.CreateApplicationBuilder(args);
Expand Down Expand Up @@ -40,8 +40,8 @@
builder.Services.AddSingleton(serviceProvider =>
{
var config = serviceProvider.GetRequiredService<IOptions<Configuration>>().Value;
var logger = serviceProvider.GetRequiredService<ILogger<MongoDbStore>>();
return new MongoDbStore(logger, config.MongoDbConnectionString, config.DatabaseName);
var logger = serviceProvider.GetRequiredService<ILogger<MongoDbWorker>>();
return new MongoDbWorker(logger, config.MongoDbConnectionString, config.DatabaseName);
});
builder.Services.AddHostedService<Initializer>();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "http://json.schemastore.org/launchsettings.json",
"$schema": "http://json.schemaworker.org/launchsettings.json",
"profiles": {
"Mimir.Store": {
"Mimir.Worker": {
"commandName": "Project",
"dotnetRunMessages": true,
"environmentVariables": {
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
using Mimir.Store.Events;
using Mimir.Store.Services;
using Mimir.Store.Models;
using Mimir.Worker.Events;
using Mimir.Worker.Services;
using Mimir.Worker.Models;
using Nekoyume.TableData;
using Libplanet.Crypto;

namespace Mimir.Store.Scrapper;
namespace Mimir.Worker.Scrapper;

public class ArenaScrapper(ILogger<ArenaScrapper> logger, IStateService service, MongoDbStore store)
public class ArenaScrapper(ILogger<ArenaScrapper> logger, IStateService service, MongoDbWorker worker)
{
private readonly ILogger<ArenaScrapper> _logger = logger;

private readonly IStateService _stateService = service;
private readonly MongoDbStore _store = store;
private readonly MongoDbWorker _worker = worker;

public async Task ExecuteAsync(CancellationToken cancellationToken)
{
Expand All @@ -24,17 +24,17 @@ public async Task ExecuteAsync(CancellationToken cancellationToken)
const int maxBufferSize = 10;
async Task FlushBufferAsync()
{
await _store.BulkUpsertArenaDataAsync(buffer.Select(x => x.Arena).ToList());
await _store.BulkUpsertAvatarDataAsync(buffer.Select(x => x.Avatar).ToList());
await _worker.BulkUpsertArenaDataAsync(buffer.Select(x => x.Arena).ToList());
await _worker.BulkUpsertAvatarDataAsync(buffer.Select(x => x.Avatar).ToList());
foreach (var pair in buffer)
{
await _store.LinkAvatarWithArenaAsync(pair.AvatarAddress);
await _worker.LinkAvatarWithArenaAsync(pair.AvatarAddress);
}

buffer.Clear();
}

await _store.UpdateLatestBlockIndex(latestBlockIndex);
await _worker.UpdateLatestBlockIndex(latestBlockIndex);

foreach (var avatarAddress in arenaParticipants.AvatarAddresses)
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Mimir.Store.Services;
using Mimir.Worker.Services;
using Libplanet.Crypto;
using Bencodex.Types;
using Nekoyume.TableData;
Expand All @@ -8,9 +8,9 @@
using Nekoyume.Model.Item;
using Nekoyume.Model.State;
using Nekoyume.Model.Arena;
using Mimir.Store.Models;
using Mimir.Worker.Models;

namespace Mimir.Store.Scrapper;
namespace Mimir.Worker.Scrapper;

public class StateGetter
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
using Libplanet.Types.Blocks;
using StrawberryShake;

namespace Mimir.Store.Services;
namespace Mimir.Worker.Services;

public class HeadlessStateService(IHeadlessGQLClient client) : IStateService
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
using Bencodex.Types;
using Libplanet.Crypto;

namespace Mimir.Store.Services;
namespace Mimir.Worker.Services;

public interface IStateService
{
Expand Down
Loading

0 comments on commit 949f085

Please sign in to comment.