Skip to content

Commit e3fb96e

Browse files
committed
feat(CO2): add resolver for CO2 emissions
1 parent aa7927d commit e3fb96e

3 files changed

Lines changed: 50 additions & 1 deletion

File tree

src/db/types.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,14 @@ export type Price = {
2626
termOfferingClass?: string;
2727
description?: string;
2828
};
29+
30+
export type Emission = {
31+
emissionHash: string;
32+
unit: string;
33+
CO2e: string;
34+
effectiveDateStart: string;
35+
effectiveDateEnd?: string;
36+
startUsageAmount?: string;
37+
endUsageAmount?: string;
38+
description?: string;
39+
}

src/resolvers.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { IResolvers } from '@graphql-tools/utils';
22
import mingo from 'mingo';
3-
import { Price, Product } from './db/types';
3+
import { Emission, Price, Product } from './db/types';
44
import currency, { CURRENCY_CODES } from './utils/currency';
55
import { findProducts } from './db/query';
66
import { ApplicationOptions } from './app';
@@ -28,6 +28,10 @@ interface PricesArgs {
2828
filter: Filter;
2929
}
3030

31+
interface EmissionsArgs {
32+
filter: Filter;
33+
}
34+
3135
type TransformedProductAttribute = {
3236
key: string;
3337
value: string;
@@ -77,6 +81,20 @@ const getResolvers = <TContext>(
7781

7882
return prices;
7983
},
84+
emissions: async (product: Product, args: EmissionsArgs): Promise<Emission[]> => {
85+
const emission = {
86+
emissionHash: 'sampleEmissionHash',
87+
unit: 'kgeqCO2',
88+
CO2e: '10',
89+
effectiveDateStart: '2021-01-01',
90+
effectiveDateEnd: '2021-12-31',
91+
startUsageAmount: '0',
92+
endUsageAmount: '100',
93+
description: 'test',
94+
};
95+
96+
return [emission];
97+
},
8098
},
8199
Price:
82100
// For every alternate currency, add a resolver that converts from USD.

src/typeDefs.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,17 @@ const typeDefs = gql`
1818
termOfferingClass: String
1919
}
2020
21+
type Emission {
22+
emissionHash: String!
23+
unit: String!
24+
CO2e: String!
25+
effectiveDateStart: String
26+
effectiveDateEnd: String
27+
startUsageAmount: String
28+
endUsageAmount: String
29+
description: String
30+
}
31+
2132
type Product {
2233
productHash: String!
2334
vendorName: String!
@@ -27,6 +38,7 @@ const typeDefs = gql`
2738
sku: String!
2839
attributes: [Attribute]
2940
prices(filter: PriceFilter): [Price]
41+
emissions(filter: EmissionFilter): [Emission]
3042
}
3143
3244
type Attribute {
@@ -61,6 +73,14 @@ const typeDefs = gql`
6173
termOfferingClass: String
6274
}
6375
76+
input EmissionFilter {
77+
unit: String
78+
description: String
79+
description_regex: String
80+
startUsageAmount: String
81+
endUsageAmount: String
82+
}
83+
6484
type Query {
6585
products(filter: ProductFilter): [Product]
6686
}

0 commit comments

Comments
 (0)