Improve strategy assign values
This commit is contained in:
parent
fd402b189d
commit
1ef763fcfb
|
@ -14,7 +14,7 @@ import { RepositoriesStrategy } from "./repositories/strategies/RepositoriesStra
|
|||
export class RepositoriesBuilder {
|
||||
private cfg: Config;
|
||||
private snsClient?: SNSClient;
|
||||
private repositories = new Map();
|
||||
private repositories = new Map<string, any>();
|
||||
|
||||
constructor(cfg: Config) {
|
||||
this.cfg = cfg;
|
||||
|
@ -25,12 +25,13 @@ export class RepositoriesBuilder {
|
|||
this.snsClient = this.createSnsClient();
|
||||
|
||||
const repositoryStrategy = new RepositoriesStrategy(this.snsClient, this.cfg);
|
||||
this.repositories = repositoryStrategy.executeStatic();
|
||||
|
||||
this.cfg.supportedChains.forEach((chain) => {
|
||||
if (!this.cfg.platforms[chain]) throw new Error(`No config for chain ${chain}`);
|
||||
this.repositories = repositoryStrategy.executeChain(chain);
|
||||
});
|
||||
const staticRepositories = repositoryStrategy.executeStatic();
|
||||
const dynamicRepositories = repositoryStrategy.executeDynamic();
|
||||
|
||||
this.repositories = staticRepositories;
|
||||
this.repositories = {...this.repositories, dynamicRepositories}
|
||||
dynamicRepositories.forEach((instance, name) => { this.repositories.set(name, instance) });
|
||||
|
||||
this.repositories.set(
|
||||
"jobs",
|
||||
|
|
|
@ -8,7 +8,6 @@ import { Web3SolanaSlotRepository } from "../Web3SolanaSlotRepository";
|
|||
import { Connection } from "@solana/web3.js";
|
||||
|
||||
export class RepositoriesStrategy {
|
||||
private repositoriesMap = new Map<string, any>();
|
||||
private snsClient?: SNSClient;
|
||||
private cfg: Config;
|
||||
|
||||
|
@ -18,6 +17,8 @@ export class RepositoriesStrategy {
|
|||
}
|
||||
|
||||
executeStatic(): Map<string, any> {
|
||||
let staticRepositories = new Map();
|
||||
|
||||
const repositories = [
|
||||
new SnsEventRepository(this.snsClient!, this.cfg),
|
||||
new FileMetadataRepository(this.cfg, this.cfg.metadata?.dir!),
|
||||
|
@ -26,25 +27,31 @@ export class RepositoriesStrategy {
|
|||
|
||||
repositories.forEach((repository) => {
|
||||
if (repository.apply())
|
||||
this.repositoriesMap.set(repository.getName(), repository.createInstance());
|
||||
staticRepositories.set(repository.getName(), repository.createInstance());
|
||||
});
|
||||
|
||||
return this.repositoriesMap;
|
||||
return staticRepositories;
|
||||
}
|
||||
|
||||
executeChain(chain: string): Map<string, any> {
|
||||
const config = this.cfg.platforms[chain];
|
||||
executeDynamic(): Map<string, any> {
|
||||
let dynamicRepositories = new Map();
|
||||
|
||||
const repositories = [
|
||||
new EvmJsonRPCBlockRepository(this.cfg, chain),
|
||||
new Web3SolanaSlotRepository(new Connection(config.rpcs[0]), this.cfg, chain),
|
||||
];
|
||||
this.cfg.supportedChains.forEach((chain) => {
|
||||
const config = this.cfg.platforms[chain];
|
||||
|
||||
repositories.forEach((repository) => {
|
||||
if (repository.apply())
|
||||
this.repositoriesMap.set(repository.getName(), repository.createInstance());
|
||||
const repositories = [
|
||||
new EvmJsonRPCBlockRepository(this.cfg, chain),
|
||||
new Web3SolanaSlotRepository(new Connection(config.rpcs[0]), this.cfg, chain),
|
||||
];
|
||||
|
||||
if (!this.cfg.platforms[chain]) throw new Error(`No config for chain ${chain}`);
|
||||
|
||||
repositories.forEach((repository) => {
|
||||
if (repository.apply())
|
||||
dynamicRepositories.set(repository.getName(), repository.createInstance());
|
||||
});
|
||||
});
|
||||
|
||||
return this.repositoriesMap;
|
||||
return dynamicRepositories;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,34 +12,34 @@ describe("Web3SolanaSlotRepository", () => {
|
|||
// Given
|
||||
const connectionMock = {};
|
||||
const repo = new Web3SolanaSlotRepository(connectionMock as any, cfg, "solana");
|
||||
|
||||
|
||||
// When
|
||||
const result = await repo.apply();
|
||||
|
||||
|
||||
// Then
|
||||
expect(result).toBe(true);
|
||||
});
|
||||
|
||||
|
||||
it("should be get name metadata", async () => {
|
||||
// Given
|
||||
const connectionMock = {};
|
||||
const repo = new Web3SolanaSlotRepository(connectionMock as any, cfg, chain);
|
||||
|
||||
|
||||
// When
|
||||
const result = await repo.getName();
|
||||
|
||||
|
||||
// Then
|
||||
expect(result).toBe("solana-slotRepo");
|
||||
});
|
||||
|
||||
|
||||
it("should be create instance", async () => {
|
||||
// Given
|
||||
const connectionMock = {};
|
||||
const repo = new Web3SolanaSlotRepository(connectionMock as any, cfg, chain);
|
||||
|
||||
|
||||
// When
|
||||
const result = await repo.createInstance();
|
||||
|
||||
|
||||
// Then
|
||||
expect(result).toBeInstanceOf(Web3SolanaSlotRepository);
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue