Added Banking View, displaying balance and transactions

This commit is contained in:
Samuel Andert
2023-09-06 19:10:41 +02:00
parent 563e9945c3
commit d55e4bb203
9 changed files with 150 additions and 21 deletions

View File

@ -1,6 +0,0 @@
query Continents {
countries_continents {
name
code
}
}

View File

@ -1,7 +0,0 @@
query Countries($filter: countries_CountryFilterInput) {
countries_countries(filter: $filter) {
code
name
capital
}
}

View File

@ -0,0 +1,22 @@
import { createOperation, z } from '../generated/wundergraph.factory';
import axios from 'axios';
export default createOperation.query({
input: z.object({
address: z.string(),
}),
handler: async ({ input }) => {
const { data } = await axios.get('https://api.gnosisscan.io/api', {
params: {
module: 'account',
action: 'balance',
address: input.address,
tag: 'latest',
apikey: process.env.GNOSISSCAN_API,
},
});
return {
balance: parseFloat(data.result),
};
},
});

View File

@ -0,0 +1,27 @@
import { createOperation, z } from '../generated/wundergraph.factory';
import axios from 'axios';
export default createOperation.query({
input: z.object({
address: z.string(),
}),
handler: async ({ input }) => {
const { data } = await axios.get('https://api.gnosisscan.io/api', {
params: {
module: 'account',
action: 'txlist',
address: input.address,
startblock: 0,
endblock: 'latest',
sort: 'desc',
apikey: process.env.GNOSISSCAN_API,
},
});
return {
transactions: data.result.map(transaction => ({
...transaction,
timestamp: new Date(transaction.timeStamp * 1000).toISOString(),
})),
};
},
});

View File

@ -4,15 +4,11 @@ import operations from './wundergraph.operations';
import fs from 'fs';
import path from 'path';
import dotenv from 'dotenv';
import axios from 'axios';
dotenv.config();
const directusSchema = fs.readFileSync(path.join(path.resolve(), './schemas/directus.graphql'), 'utf8');
const countries = introspect.graphql({
apiNamespace: 'countries',
url: 'https://countries.trevorblades.com/',
});
const spaceX = introspect.graphql({
apiNamespace: 'spacex',
url: 'https://spacex-api.fly.dev/graphql/',
@ -28,7 +24,7 @@ const directus = introspect.graphql({
// configureWunderGraph emits the configuration
configureWunderGraphApplication({
apis: [countries, spaceX, directus],
apis: [spaceX, directus],
server,
operations,
generate: {
@ -65,6 +61,6 @@ configureWunderGraphApplication({
},
},
authorization: {
roles: ['admin'],
roles: ['owner'],
},
});