Skip to content

Commit

Permalink
4000 - Initial commit for data query API
Browse files Browse the repository at this point in the history
  • Loading branch information
sorja committed Oct 10, 2024
1 parent f5a63da commit e1583d3
Show file tree
Hide file tree
Showing 7 changed files with 68 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/meta/api/endpoint/ApiEndPoint.ts
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,10 @@ export const ApiEndPoint = {
},
},

DataQuery: {
one: () => apiPath('data-query'),
},

ExtData: {
Taxa: {
search: () => apiPath('ext-data', 'taxa', 'search'),
Expand Down
2 changes: 2 additions & 0 deletions src/server/api/api.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { Express } from 'express'

import { DataQueryApi } from 'server/api/dataQuery'
import { ExtDataApi } from 'server/api/extData'

import { AdminApi } from './admin'
Expand Down Expand Up @@ -27,6 +28,7 @@ export const Api = {
AdminApi.init(express)
AreaApi.init(express)
CycleDataApi.init(express)
DataQueryApi.init(express)
DefinitionApi.init(express)
ExtDataApi.init(express)
FileApi.init(express)
Expand Down
22 changes: 22 additions & 0 deletions src/server/api/dataQuery/getDashboardItems.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { Response } from 'express'

import { CycleRequest } from 'meta/api/request'

import { AssessmentController } from 'server/controller/assessment'
import { DataQueryController } from 'server/controller/dataQuery'
import Requests from 'server/utils/requests'

type Query = { query: string; limit: string }

export const getDashboardItems = async (req: CycleRequest<Query>, res: Response) => {
try {
const { assessmentName, cycleName } = req.query

const { assessment, cycle } = await AssessmentController.getOneWithCycle({ assessmentName, cycleName })

const result = await DataQueryController.getMany({ assessment, cycle })
Requests.send(res, result)
} catch (e) {
Requests.sendErr(res, e)
}
}
11 changes: 11 additions & 0 deletions src/server/api/dataQuery/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { Express } from 'express'

import { ApiEndPoint } from 'meta/api/endpoint'

import { getDashboardItems } from './getDashboardItems'

export const DataQueryApi = {
init: (express: Express): void => {
express.get(ApiEndPoint.DataQuery.one(), getDashboardItems)
},
}
5 changes: 5 additions & 0 deletions src/server/controller/dataQuery/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { DataQueryRepository } from 'server/repository/dataQuery'

export const DataQueryController = {
getMany: DataQueryRepository.getMany,
}
19 changes: 19 additions & 0 deletions src/server/repository/dataQuery/getMany.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { Assessment, Cycle } from 'meta/assessment'
import { DashboardItem, DashboardItemType } from 'meta/dashboard'
import { NodeExtType } from 'meta/nodeExt'

import { BaseProtocol, DB, Schemas } from 'server/db'

type Props = { assessment: Assessment; cycle: Cycle }

export const getMany = async (
props: Props,
client: BaseProtocol = DB
): Promise<Array<DashboardItem<DashboardItemType>>> => {
const { assessment, cycle } = props
const schemaCycle = Schemas.getNameCycle(assessment, cycle)

return client.many<DashboardItem<DashboardItemType>>(`select value from ${schemaCycle}.node_ext where type = $1`, [
NodeExtType.dataQuery,

Check failure on line 17 in src/server/repository/dataQuery/getMany.ts

View workflow job for this annotation

GitHub Actions / build (20.11.1, 6)

Property 'dataQuery' does not exist on type 'typeof NodeExtType'.
])
}
5 changes: 5 additions & 0 deletions src/server/repository/dataQuery/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { getMany } from 'server/repository/dataQuery/getMany'

export const DataQueryRepository = {
getMany,
}

0 comments on commit e1583d3

Please sign in to comment.