Skip to content

Commit 89a38c5

Browse files
Merge pull request #9 from radekBednarik/feat/vaccionations-deaths
dev: add vaccination deaths endpoint
2 parents 3bc61cb + 05c0ad2 commit 89a38c5

File tree

4 files changed

+122
-1
lines changed

4 files changed

+122
-1
lines changed

deno.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@bedna/czech-covid-data-api-lib",
3-
"version": "1.1.0",
3+
"version": "1.2.0",
44
"exports": "./src/index.ts",
55
"license": "MIT",
66
"tasks": {

src/client/client.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import Deaths from "../deaths/deaths.ts";
55
import VaccinationAggregated from "../vaccination/vaccination-aggregated.ts";
66
import VaccinationPlaces from "../vaccination/vaccination-places.ts";
77
import VaccinationFacilities from "../vaccination/vaccination-facilities.ts";
8+
import VaccinationDeaths from "../vaccination/vaccination-deaths.ts";
89

910
/**
1011
* Represents single entrypoint for calling supported
@@ -29,6 +30,8 @@ export default class Client {
2930
public readonly vaccinationPlaces: VaccinationPlaces;
3031
/** @property vaccinationFacilities - represents instance of the VaccinationFacilities class */
3132
public readonly vaccinationFacilities: VaccinationFacilities;
33+
/** @property vaccinationDeaths - represents instance of the VaccinationDeaths class */
34+
public readonly vaccinationDeaths: VaccinationDeaths;
3235
/** @property instance - holds the singleton instance of the class */
3336
private static instance: Client;
3437

@@ -53,6 +56,7 @@ export default class Client {
5356
this.vaccinationAggregated = new VaccinationAggregated(this.token);
5457
this.vaccinationPlaces = new VaccinationPlaces(this.token);
5558
this.vaccinationFacilities = new VaccinationFacilities(this.token);
59+
this.vaccinationDeaths = new VaccinationDeaths(this.token);
5660
}
5761

5862
/**

src/vaccination/vaccination-deaths.ts

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import ApiCallBuilder from "../builders/api-call-builder.ts";
2+
import type { GetApiError } from "../common/api.ts";
3+
4+
export default class VaccinationDeaths {
5+
private readonly token: string;
6+
7+
constructor(token: string) {
8+
this.token = token;
9+
}
10+
11+
public async getVaccinationDeathsV3({
12+
page = 1,
13+
itemsPerPage = 100,
14+
properties,
15+
datumBefore,
16+
datumStrictlyBefore,
17+
datumAfter,
18+
datumStrictlyAfter,
19+
}: {
20+
page?: number;
21+
itemsPerPage?: number;
22+
properties?: string[];
23+
datumBefore?: string;
24+
datumStrictlyBefore?: string;
25+
datumAfter?: string;
26+
datumStrictlyAfter?: string;
27+
} = {}): Promise<[VaccinationDeathsItemArr, null] | [null, GetApiError]> {
28+
return await new ApiCallBuilder<VaccinationDeathsItemArr>({
29+
token: this.token,
30+
}).provideEndpoint("/api/v3/ockovani-umrti").provideQueryParams([
31+
{ page },
32+
{ itemsPerPage },
33+
{ properties },
34+
{ datumBefore },
35+
{ datumStrictlyBefore },
36+
{ datumAfter },
37+
{ datumStrictlyAfter },
38+
]).build();
39+
}
40+
41+
public async getVaccinationDeathsOfIdV3(
42+
{ id }: { id: string },
43+
): Promise<[VaccinationDeathsItem, null] | [null, GetApiError]> {
44+
return await new ApiCallBuilder<VaccinationDeathsItem>({
45+
token: this.token,
46+
}).provideEndpoint("/api/v3/ockovani-umrti").provideId(id).build();
47+
}
48+
}
49+
50+
export interface VaccinationDeathsItem {
51+
id: string;
52+
datum: string;
53+
zemreli_celkem: number;
54+
zemreli_bez_ockovani: number;
55+
zemreli_bez_ockovani_relativni_pocet: number;
56+
zemreli_bez_ockovani_vek_prumer: number;
57+
zemreli_nedokoncene_ockovani: number;
58+
zemreli_nedokoncene_ockovani_relativni_pocet: number;
59+
zemreli_nedokoncene_ockovani_vek_prumer: number;
60+
zemreli_dokoncene_ockovani: number;
61+
zemreli_dokoncene_ockovani_relativni_pocet: number;
62+
zemreli_dokoncene_ockovani_vek_prumer: number;
63+
zemreli_posilujici_davka: number;
64+
zemreli_posilujici_davka_relativni_pocet: number;
65+
zemreli_posilujici_davka_vek_prumer: number;
66+
}
67+
68+
export type VaccinationDeathsItemArr = VaccinationDeathsItem[];
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import { beforeAll, describe, it } from "@std/testing/bdd";
2+
import { expect } from "@std/expect";
3+
import "@std/dotenv/load";
4+
import Client from "../index.ts";
5+
6+
let client: Client;
7+
8+
describe("vaccination deaths", () => {
9+
beforeAll(() => {
10+
client = Client.getInstance({ token: Deno.env.get("CLIENT_TOKEN") });
11+
});
12+
13+
describe("deaths", () => {
14+
it("happy - call endpoint with default params returns data", async () => {
15+
const [data, err] = await client.vaccinationDeaths
16+
.getVaccinationDeathsV3();
17+
18+
expect(err).toBeNull();
19+
expect(data).toBeInstanceOf(Array);
20+
expect(data).toHaveLength(100);
21+
});
22+
23+
it("happy - call endpoint with custom params returns data", async () => {
24+
const [data, err] = await client.vaccinationDeaths
25+
.getVaccinationDeathsV3({
26+
page: 100,
27+
itemsPerPage: 2,
28+
datumStrictlyAfter: "2022-01-01",
29+
});
30+
31+
expect(err).toBeNull();
32+
expect(data).toBeInstanceOf(Array);
33+
expect(data).toHaveLength(2);
34+
});
35+
});
36+
37+
describe("deaths of id", () => {
38+
it("happy - call endpoint with specific id returns data", async () => {
39+
const [_data] = await client.vaccinationDeaths
40+
.getVaccinationDeathsV3({ itemsPerPage: 1 });
41+
const [data, err] = await client.vaccinationDeaths
42+
// @ts-expect-error test
43+
.getVaccinationDeathsOfIdV3({ id: _data[0].id });
44+
45+
expect(err).toBeNull();
46+
expect(data).toHaveProperty("id");
47+
});
48+
});
49+
});

0 commit comments

Comments
 (0)