From 734a87bb822248c5476ebb21af64f9e316efd64e Mon Sep 17 00:00:00 2001 From: tommytrg Date: Fri, 11 Jun 2021 12:03:14 +0200 Subject: [PATCH] refactor(api): rename price to result --- packages/api/src/repository/Feed.ts | 4 +- packages/api/src/repository/PriceRequest.ts | 49 -------------------- packages/api/src/repository/ResultRequest.ts | 49 ++++++++++++++++++++ packages/api/src/resolvers.ts | 12 ++--- packages/api/src/server.ts | 30 ++++++------ packages/api/src/typeDefs.ts | 8 ++-- packages/api/test/feeds.spec.ts | 40 ++++++++-------- 7 files changed, 96 insertions(+), 96 deletions(-) delete mode 100644 packages/api/src/repository/PriceRequest.ts create mode 100644 packages/api/src/repository/ResultRequest.ts diff --git a/packages/api/src/repository/Feed.ts b/packages/api/src/repository/Feed.ts index 9d7486fa..12e32095 100644 --- a/packages/api/src/repository/Feed.ts +++ b/packages/api/src/repository/Feed.ts @@ -18,10 +18,10 @@ export class FeedRepository { return this._normalizeId(response.ops[0]) } - async addPriceRequest (feedId: ObjectId, priceRequestId: ObjectId) { + async addResultRequest (feedId: ObjectId, resultRequestId: ObjectId) { const response = await this.collection.findOneAndUpdate( { _id: feedId }, - { $push: { requests: priceRequestId } }, + { $push: { requests: resultRequestId } }, { returnDocument: 'after' } ) diff --git a/packages/api/src/repository/PriceRequest.ts b/packages/api/src/repository/PriceRequest.ts deleted file mode 100644 index c42b8387..00000000 --- a/packages/api/src/repository/PriceRequest.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { Db, Collection, ObjectId } from 'mongodb' -import { PriceRequestDbObject } from '../generated/types' - -export class PriceRequestRepository { - collection: Collection - - constructor (db: Db) { - this.collection = db.collection('price_request') - } - - async getFeedRequests (feedId: ObjectId) { - return ( - await this.collection - .find({ - feedId: feedId.toString() - }) - .toArray() - ).map(this.normalizeId) - } - - async getLastPrice (feedId: ObjectId) { - const lastPriceRequest = await this.collection.findOne( - { - feedId: feedId.toString() - }, - { - sort: { - timestamp: -1 - }, - collation: { - locale: 'en_US', - numericOrdering: true - } - } - ) - - return lastPriceRequest?.price - } - - async insert (priceRequest: Omit) { - const response = await this.collection.insertOne(priceRequest) - - return this.normalizeId(response.ops[0]) - } - - private normalizeId (priceRequest: PriceRequestDbObject) { - return { ...priceRequest, id: priceRequest._id } - } -} diff --git a/packages/api/src/repository/ResultRequest.ts b/packages/api/src/repository/ResultRequest.ts new file mode 100644 index 00000000..6f40825f --- /dev/null +++ b/packages/api/src/repository/ResultRequest.ts @@ -0,0 +1,49 @@ +import { Db, Collection, ObjectId } from 'mongodb' +import { ResultRequestDbObject } from '../generated/types' + +export class ResultRequestRepository { + collection: Collection + + constructor (db: Db) { + this.collection = db.collection('result_request') + } + + async getFeedRequests (feedId: ObjectId) { + return ( + await this.collection + .find({ + feedId: feedId.toString() + }) + .toArray() + ).map(this.normalizeId) + } + + async getLastResult (feedId: ObjectId) { + const lastResultRequest = await this.collection.findOne( + { + feedId: feedId.toString() + }, + { + sort: { + timestamp: -1 + }, + collation: { + locale: 'en_US', + numericOrdering: true + } + } + ) + + return lastResultRequest?.result + } + + async insert (resultRequest: Omit) { + const response = await this.collection.insertOne(resultRequest) + + return this.normalizeId(response.ops[0]) + } + + private normalizeId (resultRequest: ResultRequestDbObject) { + return { ...resultRequest, id: resultRequest._id } + } +} diff --git a/packages/api/src/resolvers.ts b/packages/api/src/resolvers.ts index 8e47b40c..58bd5eec 100644 --- a/packages/api/src/resolvers.ts +++ b/packages/api/src/resolvers.ts @@ -1,8 +1,8 @@ import { FeedRepository } from './repository/Feed' -import { PriceRequestRepository } from './repository/PriceRequest' +import { ResultRequestRepository } from './repository/ResultRequest' type Context = { feedRepository: FeedRepository - priceRequestRepository: PriceRequestRepository + resultRequestRepository: ResultRequestRepository } const resolvers = { @@ -16,11 +16,11 @@ const resolvers = { } }, Feed: { - requests: async (parent, _args, { priceRequestRepository }: Context) => { - return await priceRequestRepository.getFeedRequests(parent.id) + requests: async (parent, _args, { resultRequestRepository }: Context) => { + return await resultRequestRepository.getFeedRequests(parent.id) }, - lastPrice: async (parent, _args, { priceRequestRepository }: Context) => { - return await priceRequestRepository.getLastPrice(parent.id) + lastResult: async (parent, _args, { resultRequestRepository }: Context) => { + return await resultRequestRepository.getLastResult(parent.id) } } } diff --git a/packages/api/src/server.ts b/packages/api/src/server.ts index 087a5893..b13031e8 100644 --- a/packages/api/src/server.ts +++ b/packages/api/src/server.ts @@ -4,11 +4,11 @@ import { DIRECTIVES } from '@graphql-codegen/typescript-mongodb' import resolvers from './resolvers' import { Db } from 'mongodb' import { FeedRepository } from './repository/Feed' -import { PriceRequestRepository } from './repository/PriceRequest' +import { ResultRequestRepository } from './repository/ResultRequest' -// async function addSampleData(feedRepository: FeedRepository, priceRequestRepository: PriceRequestRepository) { +// async function addSampleData(feedRepository: FeedRepository, resultRequestRepository: ResultRequestRepository) { // await feedRepository.collection.drop() -// await priceRequestRepository.collection.drop() +// await resultRequestRepository.collection.drop() // const feed1 = await feedRepository.insert({ // address: "1", @@ -16,34 +16,34 @@ import { PriceRequestRepository } from './repository/PriceRequest' // requests: [] // }) -// const priceRequest1 = await priceRequestRepository.insert({ -// price: 1000.00, +// const resultRequest1 = await resultRequestRepository.insert({ +// result: 1000.00, // feedId: feed1._id.toString(), // requestId: '1', // timestamp: Date.now().toString(), // }) -// await feedRepository.addPriceRequest(feed1._id, priceRequest1._id) +// await feedRepository.addResultRequest(feed1._id, resultRequest1._id) -// const priceRequest2 = await priceRequestRepository.insert({ -// price: 2000.00, +// const resultRequest2 = await resultRequestRepository.insert({ +// result: 2000.00, // feedId: feed1._id.toString(), // requestId: '2', // timestamp: Date.now().toString(), // }) -// await feedRepository.addPriceRequest(feed1._id, priceRequest2._id) +// await feedRepository.addResultRequest(feed1._id, resultRequest2._id) // const feed2 = await feedRepository.insert({ // address: "2", // name: "btc/usd", // requests: [] // }) -// const priceRequest3 = await priceRequestRepository.insert({ -// price: 3000.00, +// const resultRequest3 = await resultRequestRepository.insert({ +// result: 3000.00, // feedId: feed2._id.toString(), // requestId: '3', // timestamp: Date.now().toString(), // }) -// await feedRepository.addPriceRequest(feed2._id, priceRequest3._id) +// await feedRepository.addResultRequest(feed2._id, resultRequest3._id) // await feedRepository.insert({ // address: "3", @@ -54,12 +54,12 @@ import { PriceRequestRepository } from './repository/PriceRequest' export async function createServer (db: Db): Promise { const feedRepository = new FeedRepository(db) - const priceRequestRepository = new PriceRequestRepository(db) + const resultRequestRepository = new ResultRequestRepository(db) - // addSampleData(feedRepository, priceRequestRepository) + // addSampleData(feedRepository, resultRequestRepository) const context = () => { - return { feedRepository, priceRequestRepository } + return { feedRepository, resultRequestRepository } } const server = new ApolloServer({ diff --git a/packages/api/src/typeDefs.ts b/packages/api/src/typeDefs.ts index c4d3c318..be898b6f 100644 --- a/packages/api/src/typeDefs.ts +++ b/packages/api/src/typeDefs.ts @@ -5,14 +5,14 @@ const typeDefs = gql` id: String! @id name: String! @column address: String! @column - requests: [PriceRequest]! @link - lastPrice: Float! @column + requests: [ResultRequest]! @link + lastResult: Float! @column } - type PriceRequest @entity { + type ResultRequest @entity { id: String! @id feedId: String! @column - price: Float! @column + result: Float! @column requestId: String! @column timestamp: String! @column # request: DataRequest @embedded diff --git a/packages/api/test/feeds.spec.ts b/packages/api/test/feeds.spec.ts index 3d8da487..01f11194 100644 --- a/packages/api/test/feeds.spec.ts +++ b/packages/api/test/feeds.spec.ts @@ -79,37 +79,37 @@ describe('feeds', function () { const feedResponse = await state.mongoManager.db .collection('feed') .insertOne(feedExample) - const priceRequestExample1 = { - price: 1111.0, + const resultRequestExample1 = { + result: 1111.0, feedId: feedResponse.ops[0]._id.toString(), requestId: '1', timestamp: '1623085320000' } - const priceRequestExample2 = { - price: 2222.0, + const resultRequestExample2 = { + result: 2222.0, feedId: feedResponse.ops[0]._id.toString(), requestId: '1', timestamp: '1623085329000' } - const priceRequestResponse1 = await state.mongoManager.db - .collection('price_request') - .insertOne(priceRequestExample1) - const priceRequestResponse2 = await state.mongoManager.db - .collection('price_request') - .insertOne(priceRequestExample2) + const resultRequestResponse1 = await state.mongoManager.db + .collection('result_request') + .insertOne(resultRequestExample1) + const resultRequestResponse2 = await state.mongoManager.db + .collection('result_request') + .insertOne(resultRequestExample2) await state.mongoManager.db .collection('feed') .findOneAndUpdate( { _id: feedResponse.ops[0]._id }, - { $push: { requests: priceRequestResponse1.ops[0]._id.toString() } }, + { $push: { requests: resultRequestResponse1.ops[0]._id.toString() } }, { returnDocument: 'after' } ) await state.mongoManager.db .collection('feed') .findOneAndUpdate( { _id: feedResponse.ops[0]._id }, - { $push: { requests: priceRequestResponse2.ops[0]._id.toString() } }, + { $push: { requests: resultRequestResponse2.ops[0]._id.toString() } }, { returnDocument: 'after' } ) @@ -119,11 +119,11 @@ describe('feeds', function () { id address name - lastPrice + lastResult requests { id feedId - price + result requestId timestamp error @@ -140,23 +140,23 @@ describe('feeds', function () { expect(feeds.length).toBe(1) expect(feeds[0]).toHaveProperty('address', feedExample.address) expect(feeds[0]).toHaveProperty('name', feedExample.name) - expect(feeds[0]).toHaveProperty('lastPrice', priceRequestExample2.price) + expect(feeds[0]).toHaveProperty('lastResult', resultRequestExample2.result) expect(feeds[0].requests.length).toBe(2) expect(feeds[0].requests[0]).toHaveProperty( 'feedId', - priceRequestExample1.feedId + resultRequestExample1.feedId ) expect(feeds[0].requests[0]).toHaveProperty( - 'price', - priceRequestExample1.price + 'result', + resultRequestExample1.result ) expect(feeds[0].requests[0]).toHaveProperty( 'requestId', - priceRequestExample1.requestId + resultRequestExample1.requestId ) expect(feeds[0].requests[0]).toHaveProperty( 'timestamp', - priceRequestExample1.timestamp + resultRequestExample1.timestamp ) expect(feeds[0].id).toBeTruthy() })