Skip to content
3 changes: 2 additions & 1 deletion src/meta/assessment/activityLog/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ export enum ActivityLogMessage {
originalDataPointRemove = 'originalDataPointRemove',
originalDataPointUpdate = 'originalDataPointUpdate',
originalDataPointUpdateDataSources = 'originalDataPointUpdateDataSources',
originalDataPointUpdateDescription = 'originalDataPointUpdateDescription',
originalDataPointUpdateCommentExtentOfForest = 'originalDataPointUpdateCommentExtentOfForest',
originalDataPointUpdateCommentForestCharacteristics = 'originalDataPointUpdateCommentForestCharacteristics',
originalDataPointUpdateNationalClasses = 'originalDataPointUpdateNationalClasses',
originalDataPointUpdateOriginalData = 'originalDataPointUpdateOriginalData',
originalDataPointUpdateYear = 'originalDataPointUpdateYear',
Expand Down
1 change: 1 addition & 0 deletions src/meta/assessment/originalDataPoint/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ export { ODPNationalClassFactory } from './odpNationalClass'
export type { ODPReservedYear } from './odpReservedYear'
export type { ODPValidation, ODPValidationNationalClass, ODPValidationYear } from './odpValidation'
export type { OriginalDataPoint, OriginalDataPointCommentKey, OriginalDataPointComments } from './originalDataPoint'
export { ODP_COMMENT_COLUMN_EXTENT, ODP_COMMENT_COLUMN_FOREST_CHARACTERISTICS } from './originalDataPoint'
export type {
RecordAssessmentOriginalDataPoint,
RecordCountryOriginalDataPoint,
Expand Down
3 changes: 3 additions & 0 deletions src/meta/assessment/originalDataPoint/originalDataPoint.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,6 @@ export interface OriginalDataPoint {
// reservedYears?: Array<number>
// validationStatus?: ODPValidation
}

export const ODP_COMMENT_COLUMN_EXTENT = `comments_${TableNames.extentOfForest.toLocaleLowerCase()}`
export const ODP_COMMENT_COLUMN_FOREST_CHARACTERISTICS = `comments_${TableNames.forestCharacteristics.toLocaleLowerCase()}`

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

better a Record and in src/server/db/repository/assessmentCycle/originalDataPoint since they are used only there?

Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { ActivityLogMessage } from 'meta/assessment/activityLog'
import { Assessment } from 'meta/assessment/assessment'
import { Cycle } from 'meta/assessment/cycle'
import { OriginalDataPoint, OriginalDataPointCommentKey } from 'meta/assessment/originalDataPoint'
import { TableNames } from 'meta/assessment/table'
import { User } from 'meta/user'

import { BaseProtocol, DB } from 'server/db'
Expand Down Expand Up @@ -32,10 +33,15 @@ export const updateOriginalDataPointDescription = async (
t
)

const message =
field === TableNames.extentOfForest
? ActivityLogMessage.originalDataPointUpdateCommentExtentOfForest
: ActivityLogMessage.originalDataPointUpdateCommentForestCharacteristics

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

even here a record ?

const activityLog = {
target: updatedOriginalDataPoint,
section: 'odp',
message: ActivityLogMessage.originalDataPointUpdateDescription,
message,
countryIso,
user,
}
Expand Down
1 change: 1 addition & 0 deletions src/server/repository/adapter/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ export { AssessmentAdapter } from './assessment'
export { ColAdapter } from './col'
export type { FileDB } from './file'
export { FileAdapter } from './file'
export { OriginalDataPointAdapter } from './originalDataPoint'

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lets start not exporting from barrel files

export type { RowDB } from './row'
export { RowAdapter, RowCacheAdapter } from './row'
export { SectionAdapter, SubSectionAdapter } from './section'
Expand Down
34 changes: 34 additions & 0 deletions src/server/repository/adapter/originalDataPoint.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { Objects } from 'utils/objects'

import {
ODP_COMMENT_COLUMN_EXTENT,
ODP_COMMENT_COLUMN_FOREST_CHARACTERISTICS,
OriginalDataPoint,
OriginalDataPointComments,
} from 'meta/assessment/originalDataPoint'
import { TableNames } from 'meta/assessment/table'

type OriginalDataPointDB = Record<string, unknown>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this must specify the columns


export const OriginalDataPointAdapter = (row: OriginalDataPointDB): OriginalDataPoint => {
const {
[ODP_COMMENT_COLUMN_EXTENT]: commentsExtentOfForest,
[ODP_COMMENT_COLUMN_FOREST_CHARACTERISTICS]: commentsForestCharacteristics,
...rest
} = row as Record<string, unknown>

const comments: OriginalDataPointComments = {}

if (!Objects.isNil(commentsExtentOfForest)) {
comments[TableNames.extentOfForest] = commentsExtentOfForest as string
}

if (!Objects.isNil(commentsForestCharacteristics)) {
comments[TableNames.forestCharacteristics] = commentsForestCharacteristics as string
}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

by default these values should not be null


return {
...(Objects.camelize(rest) as OriginalDataPoint),
comments,
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ export const acceptedMessages = [
ActivityLogMessage.originalDataPointRemove,
ActivityLogMessage.originalDataPointUpdate,
ActivityLogMessage.originalDataPointUpdateDataSources,
ActivityLogMessage.originalDataPointUpdateDescription,
ActivityLogMessage.originalDataPointUpdateCommentExtentOfForest,
ActivityLogMessage.originalDataPointUpdateCommentForestCharacteristics,
ActivityLogMessage.originalDataPointUpdateNationalClasses,
ActivityLogMessage.originalDataPointUpdateOriginalData,
ActivityLogMessage.originalDataPointUpdateYear,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ export const activitiesLastEdit = [
ActivityLogMessage.originalDataPointRemove,
ActivityLogMessage.originalDataPointUpdate,
ActivityLogMessage.originalDataPointUpdateDataSources,
ActivityLogMessage.originalDataPointUpdateDescription,
ActivityLogMessage.originalDataPointUpdateCommentExtentOfForest,
ActivityLogMessage.originalDataPointUpdateCommentForestCharacteristics,
ActivityLogMessage.originalDataPointUpdateNationalClasses,
ActivityLogMessage.originalDataPointUpdateOriginalData,
ActivityLogMessage.originalDataPointUpdateYear,
Expand All @@ -25,7 +26,8 @@ export const activitiesLastEditOdpData = [
ActivityLogMessage.originalDataPointRemove,
ActivityLogMessage.originalDataPointUpdate,
ActivityLogMessage.originalDataPointUpdateDataSources,
ActivityLogMessage.originalDataPointUpdateDescription,
ActivityLogMessage.originalDataPointUpdateCommentExtentOfForest,
ActivityLogMessage.originalDataPointUpdateCommentForestCharacteristics,
ActivityLogMessage.originalDataPointUpdateNationalClasses,
ActivityLogMessage.originalDataPointUpdateOriginalData,
ActivityLogMessage.originalDataPointUpdateYear,
Expand Down
20 changes: 13 additions & 7 deletions src/server/repository/assessmentCycle/originalDataPoint/create.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
import { Objects } from 'utils/objects'

import { Assessment } from 'meta/assessment/assessment'
import { Cycle } from 'meta/assessment/cycle'
import { OriginalDataPoint } from 'meta/assessment/originalDataPoint'
import {
ODP_COMMENT_COLUMN_EXTENT,
ODP_COMMENT_COLUMN_FOREST_CHARACTERISTICS,
OriginalDataPoint,
} from 'meta/assessment/originalDataPoint'
import { TableNames } from 'meta/assessment/table'

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

export const create = async (
params: {
Expand Down Expand Up @@ -39,20 +43,22 @@ export const create = async (
data_source_additional_comments,
data_source_methods,
data_source_references,
comments,
${ODP_COMMENT_COLUMN_EXTENT},
${ODP_COMMENT_COLUMN_FOREST_CHARACTERISTICS},
national_classes,
values
) values ($1, $2, $3, $4::jsonb, $5, $6::jsonb, $7::jsonb, $8::jsonb) returning *;`,
) values ($1, $2, $3, $4::jsonb, $5, $6, $7, $8::jsonb, $9::jsonb) returning *;`,
[
countryIso,
year,
dataSourceAdditionalComments || '',
dataSourceMethods ? JSON.stringify(dataSourceMethods) : '[]',
dataSourceReferences || '',
JSON.stringify(comments ?? {}),
comments?.[TableNames.extentOfForest] ?? '',
comments?.[TableNames.forestCharacteristics] ?? '',
nationalClasses ? JSON.stringify(nationalClasses) : '[]',
values ? JSON.stringify(values) : '{}',
],
Objects.camelize
OriginalDataPointAdapter
)
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import { Objects } from 'utils/objects'

import { CountryIso } from 'meta/area'
import { Assessment } from 'meta/assessment/assessment'
import { Cycle } from 'meta/assessment/cycle'
import { OriginalDataPoint } from 'meta/assessment/originalDataPoint'

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

export const getMany = async (
props: { assessment: Assessment; cycle: Cycle; countryIso: CountryIso },
Expand All @@ -18,6 +17,6 @@ export const getMany = async (
return client.map<OriginalDataPoint>(
`select * from ${schemaName}.original_data_point where country_iso = $1;`,
[countryIso],
(row) => Objects.camelize(row)
OriginalDataPointAdapter
)
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import { Objects } from 'utils/objects'

import { Assessment } from 'meta/assessment/assessment'
import { Cycle } from 'meta/assessment/cycle'
import { OriginalDataPoint } from 'meta/assessment/originalDataPoint'
import { TableNames } from 'meta/assessment/table'
import {
ODP_COMMENT_COLUMN_EXTENT,
ODP_COMMENT_COLUMN_FOREST_CHARACTERISTICS,
OriginalDataPoint,
} from 'meta/assessment/originalDataPoint'

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

type Props = {
assessment: Assessment
Expand All @@ -23,10 +25,10 @@ export const getManyWithDescriptionLinks = async (
return client.map<OriginalDataPoint>(
`
select * from ${schemaName}.original_data_point
where coalesce(comments ->> '${TableNames.extentOfForest}', '') ilike '%href%'
or coalesce(comments ->> '${TableNames.forestCharacteristics}', '') ilike '%href%'
where coalesce(${ODP_COMMENT_COLUMN_EXTENT}, '') ilike '%href%'
or coalesce(${ODP_COMMENT_COLUMN_FOREST_CHARACTERISTICS}, '') ilike '%href%'
`,
[],
(row) => Objects.camelize(row)
OriginalDataPointAdapter
)
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import { Objects } from 'utils/objects'

import { Assessment } from 'meta/assessment/assessment'
import { Cycle } from 'meta/assessment/cycle'
import { OriginalDataPoint } from 'meta/assessment/originalDataPoint'

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

type Props = {
assessment: Assessment
Expand All @@ -25,6 +24,6 @@ export const getManyWithReferenceLinks = async (
where data_source_references ilike '%href%'
`,
[],
(row) => Objects.camelize(row)
OriginalDataPointAdapter
)
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import { Objects } from 'utils/objects'

import { CountryIso } from 'meta/area'
import { Assessment } from 'meta/assessment/assessment'
import { Cycle } from 'meta/assessment/cycle'
import { OriginalDataPoint } from 'meta/assessment/originalDataPoint'

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

type Props = {
assessment: Assessment
Expand All @@ -22,6 +21,6 @@ export const getOne = async (props: Props, client: BaseProtocol = DB): Promise<O
return client.oneOrNone<OriginalDataPoint>(
`select * from ${schemaName}.original_data_point where country_iso = $1 and year = $2;`,
[countryIso, year],
Objects.camelize
OriginalDataPointAdapter
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ const activityMessages = [
ActivityLogMessage.originalDataPointCreate,
ActivityLogMessage.originalDataPointRemove,
ActivityLogMessage.originalDataPointUpdate,
ActivityLogMessage.originalDataPointUpdateDescription,
ActivityLogMessage.originalDataPointUpdateCommentExtentOfForest,
ActivityLogMessage.originalDataPointUpdateCommentForestCharacteristics,
ActivityLogMessage.originalDataPointUpdateDataSources,
ActivityLogMessage.originalDataPointUpdateOriginalData,
ActivityLogMessage.originalDataPointUpdateNationalClasses,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
import { Assessment } from 'meta/assessment/assessment'
import { Cycle } from 'meta/assessment/cycle'
import { OriginalDataPoint, OriginalDataPointCommentKey } from 'meta/assessment/originalDataPoint'
import {
ODP_COMMENT_COLUMN_EXTENT,
ODP_COMMENT_COLUMN_FOREST_CHARACTERISTICS,
OriginalDataPoint,
OriginalDataPointCommentKey,
} from 'meta/assessment/originalDataPoint'
import { TableNames } from 'meta/assessment/table'

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

import { getOne } from './getOne'

Expand All @@ -23,17 +30,19 @@ export const updateDescription = async (
} = props

const schemaName = Schemas.getNameCycle(assessment, cycle)
const columnName =
field === TableNames.extentOfForest ? ODP_COMMENT_COLUMN_EXTENT : ODP_COMMENT_COLUMN_FOREST_CHARACTERISTICS
const value = comments?.[field] ?? ''
const path = `{${field}}`

await client.one<OriginalDataPoint>(
`
update ${schemaName}.original_data_point
set comments = jsonb_set(coalesce(comments, '{}'::jsonb), $2::text[], to_jsonb($3::text), true)
set ${columnName} = $2
where id = $1
returning *
`,
[id, path, value]
[id, value],
OriginalDataPointAdapter
)

return getOne({ assessment, cycle, countryIso, year: String(year) }, client)
Expand Down
Loading
Loading