Skip to content

Commit 122099f

Browse files
committed
feat: add PackageApiDb and PackageApiMemDb
1 parent 83dc6f8 commit 122099f

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed

lib/db/package-api-db.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import type { PackageApi } from "@jsdocs-io/extractor";
2+
3+
export interface PackageApiDb {
4+
dbName: string;
5+
getPackageApi: (pkgId: string) => Promise<PackageApi>;
6+
setPackageApi: (pkgId: string, pkgApi: PackageApi) => Promise<void>;
7+
}

lib/db/package-api-mem-db.test.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { fromAny } from "@total-typescript/shoehorn";
2+
import { goTry } from "go-go-try";
3+
import { expect, test } from "vitest";
4+
import { PackageApiMemDb } from "./package-api-mem-db";
5+
6+
test("PackageApiMemDb", async () => {
7+
const db = new PackageApiMemDb();
8+
expect(db.dbName).toBe("PackageApiMemDb");
9+
const [err1] = await goTry(db.getPackageApi("foo"));
10+
const [err2] = await goTry(db.setPackageApi("foo", fromAny({ name: "foo" })));
11+
const [err3, pkgApi] = await goTry(db.getPackageApi("foo"));
12+
expect(err1).toBeDefined();
13+
expect(err2).toBeUndefined();
14+
expect(err3).toBeUndefined();
15+
expect(pkgApi).toMatchInlineSnapshot(`
16+
{
17+
"name": "foo",
18+
}
19+
`);
20+
});

lib/db/package-api-mem-db.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import type { PackageApi } from "@jsdocs-io/extractor";
2+
import type { PackageApiDb } from "./package-api-db";
3+
4+
export class PackageApiMemDb implements PackageApiDb {
5+
dbName = "PackageApiMemDb";
6+
#db = new Map<string, PackageApi>();
7+
8+
async getPackageApi(pkgId: string): Promise<PackageApi> {
9+
const pkgApi = this.#db.get(pkgId);
10+
if (!pkgApi) throw new Error("package api not found in mem db");
11+
return pkgApi;
12+
}
13+
14+
async setPackageApi(pkgId: string, pkgApi: PackageApi) {
15+
this.#db.set(pkgId, pkgApi);
16+
}
17+
}

0 commit comments

Comments
 (0)