Skip to content

Commit 5bb1852

Browse files
committed
Updated download to provide URI to project, and only provide a single id (#55)
1 parent d4b6478 commit 5bb1852

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

src/api/src/http/download-submissions/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export default async ctx => {
7979

8080
const columns = [
8181
{ key: 'id' },
82+
{ key: 'uri' },
8283
{ key: 'submissionStatus' },
8384
...keys.filter(({ key }) => !fieldBlackList.includes(key)),
8485
{ key: 'createdAt' },
@@ -134,7 +135,7 @@ export default async ctx => {
134135

135136
// Push rows to download one at a time
136137
request.on('row', submission => {
137-
dataStream.push(stringifyRow(parseRow({ submission, columns })))
138+
dataStream.push(stringifyRow(parseRow({ ctx, submission, columns })))
138139
})
139140

140141
request.on('error', error => {

src/api/src/http/download-submissions/make-header-row/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66

77
const fieldToHumanOverrides = {
88
id: 'ID',
9+
uri: 'URI',
910
submissionStatus: 'Submission status',
1011
submissionComments: 'Submission comments',
1112
submissionType: 'Submission type (OLD ERM field)',

src/api/src/http/download-submissions/parse-row/index.js

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ const parseValue = (id, { key, obj, vocabFields, inputFields }) => {
4545
return value?.term || ''
4646
}
4747

48+
if (key === 'id') {
49+
return id
50+
}
51+
4852
if (key === 'carbonCredit') {
4953
return `${value}`
5054
}
@@ -107,19 +111,27 @@ ${stringifySync(tables.expenditure, { header: true, delimiter: ';', quoted: fals
107111
return value || ''
108112
}
109113

110-
export default ({ submission, columns }) => {
114+
export default ({ ctx, submission, columns }) => {
115+
const origin = ctx.get('origin')
111116
let { project, mitigation, adaptation, ...fields } = submission
112117
project = JSON.parse(project)
113118
mitigation = JSON.parse(mitigation)
114119
adaptation = JSON.parse(adaptation)
120+
const id = submission.id[0]
115121

116122
const row = new Array(Object.keys(columns).length).fill('')
117123

124+
// Create the URI cell
125+
{
126+
const i = columns.uri
127+
row[i] = `${origin}/submissions/${id}`
128+
}
129+
118130
// Project fields
119131
for (const key in project) {
120132
const i = columns[`project.${key}`]
121133
if (isNaN(i)) continue
122-
row[i] = parseValue(submission.id, {
134+
row[i] = parseValue(id, {
123135
key,
124136
obj: project,
125137
vocabFields: projectVocabularyFields,
@@ -131,7 +143,7 @@ export default ({ submission, columns }) => {
131143
for (const key in mitigation) {
132144
const i = columns[`mitigation.${key}`]
133145
if (isNaN(i)) continue
134-
row[i] = parseValue(submission.id, {
146+
row[i] = parseValue(id, {
135147
key,
136148
obj: mitigation,
137149
vocabFields: mitigationVocabularyFields,
@@ -143,7 +155,7 @@ export default ({ submission, columns }) => {
143155
for (const key in adaptation) {
144156
const i = columns[`adaptation.${key}`]
145157
if (isNaN(i)) continue
146-
row[i] = parseValue(submission.id, {
158+
row[i] = parseValue(id, {
147159
key,
148160
obj: adaptation,
149161
vocabFields: adaptationVocabularyFields,
@@ -155,7 +167,7 @@ export default ({ submission, columns }) => {
155167
for (const key in fields) {
156168
const i = columns[key]
157169
if (isNaN(i)) continue
158-
row[i] = parseValue(submission.id, {
170+
row[i] = parseValue(id, {
159171
key,
160172
obj: fields,
161173
vocabFields: generalVocabularyFields,

0 commit comments

Comments
 (0)