diff --git a/src/gva.ts b/src/gva.ts index 00905f02f6c7a5ebc6761d0a728ba4e843875e97..d995cb9e911676e01f98e6e8b77f797aa6754b8b 100644 --- a/src/gva.ts +++ b/src/gva.ts @@ -25,7 +25,7 @@ export type IFieldContext = { export function plugModule(server: Server, logger?: any) { logger = logger || logger_1.NewLogger(); - const schemaFile = path.join(__dirname, 'schema.graphqls'); + const schemaFile = path.join(__dirname, 'schema.graphql'); const typeDefs = fs.readFileSync(schemaFile, 'utf8'); return makeExecutableSchema({ @@ -55,11 +55,18 @@ export function plugModule(server: Server, logger?: any) { blockchainParameters: () => server.dal.getParameters(), block: async (_, { number }: { number?: number }) => { - if (number !== undefined) { - return server.dal.getBlock(number) - } - const b = await server.dal.getCurrentBlockOrNull() - return b + const block = (number !== undefined) ? + await server.dal.getBlock(number) : + await server.dal.getCurrentBlockOrNull(); + if (!block) return null; + return { + ...block, + // TODO make sure this is the final RFC name + commonTime: async () => { + const parameters = await server.dal.getParameters(); + return parameters && (block.medianTime + (parameters.avgGenTime * parameters.medianTimeBlocks / 2)) || null; + } + } || null; }, member: async (_, { uid, pub }: { uid: string, pub: string }) => { diff --git a/src/types.ts b/src/types.ts index d5435cae2ef9d340b116550925248190d86eed25..114e6c90751edbb00514c3df06cfaf3600eade35 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,4 +1,4 @@ -export declare interface BlockRef { +export declare class Block { number: number; // Block hash hash: string; @@ -9,6 +9,10 @@ export declare interface BlockRef { // Block median time medianTime: number; - // = median time + (avgGenTime * medianTime / 2) - userTime: number; + // commonTime = medianTime + (avgGenTime * medianTimeBlocks / 2) + // TODO check the RFC final name + commonTime: number; + + // TODO: check if define in the RFC + issuerName: string; }