fission-suite/webnative

View on GitHub
src/repositories/cid-log.ts

Summary

Maintainability
A
2 hrs
Test Coverage
import { CID } from "multiformats/cid"

import * as Storage from "../components/storage/implementation"
import { decodeCID } from "../common/cid.js"
import Repository, { RepositoryOptions } from "../repository.js"


export function create({ storage }: { storage: Storage.Implementation }): Promise<Repo> {
  return Repo.create({
    storage,
    storageName: storage.KEYS.CID_LOG
  })
}


// CLASS


export class Repo extends Repository<CID> {

  private constructor(options: RepositoryOptions) {
    super(options)
  }

  fromJSON(a: string): CID {
    return decodeCID(a)
  }

  toJSON(a: CID): string {
    return a.toString()
  }

  indexOf(item: CID): number {
    return this.memoryCache.map(
      c => c.toString()
    ).indexOf(
      item.toString()
    )
  }

  newest(): CID {
    return this.memoryCache[ this.memoryCache.length - 1 ]
  }

}