Skip to content

Commit 94ab1fc

Browse files
committed
Only load file-based forms when running the devserver
1 parent 45ce42b commit 94ab1fc

5 files changed

Lines changed: 61 additions & 43 deletions

File tree

src/config/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ export const config = convict({
250250
submissionEmailAddress: {
251251
doc: 'Email address to send the form to (local devtool only)',
252252
format: String,
253-
default: null,
253+
default: '',
254254
env: 'SUBMISSION_EMAIL_ADDRESS'
255255
} as SchemaObj<string>
256256
})

src/server/plugins/engine/configureEnginePlugin.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import {
99
type PluginOptions
1010
} from '~/src/server/plugins/engine/plugin.js'
1111
import { findPackageRoot } from '~/src/server/plugins/engine/plugin.js'
12+
import * as defaultServices from '~/src/server/plugins/engine/services/index.js'
13+
import { formsService } from '~/src/server/plugins/engine/services/localFormsService.js'
1214
import { devtoolContext } from '~/src/server/plugins/nunjucks/context.js'
1315
import { type RouteConfig } from '~/src/server/types.js'
1416

@@ -31,7 +33,10 @@ export const configureEnginePlugin = async ({
3133
plugin,
3234
options: {
3335
model,
34-
services,
36+
services: {
37+
...defaultServices,
38+
formsService: await formsService()
39+
},
3540
controllers,
3641
cacheName: 'session',
3742
nunjucks: {
Lines changed: 8 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,11 @@
1-
import { config } from '~/src/config/index.js'
2-
import { FileFormService } from '~/src/server/utils/file-form-service.js'
1+
const error = Error(
2+
'Not implemented. Consider setting up a form loader or providing a service implementation.'
3+
)
34

4-
// Create shared form metadata
5-
const now = new Date()
6-
const user = { id: 'user', displayName: 'Username' }
7-
const author = {
8-
createdAt: now,
9-
createdBy: user,
10-
updatedAt: now,
11-
updatedBy: user
5+
export function getFormMetadata() {
6+
throw error
127
}
13-
const metadata = {
14-
organisation: 'Defra',
15-
teamName: 'Team name',
16-
teamEmail: 'team@defra.gov.uk',
17-
submissionGuidance: "Thanks for your submission, we'll be in touch",
18-
notificationEmail: config.get('submissionEmailAddress'),
19-
...author,
20-
live: author
21-
}
22-
23-
// Instantiate the file loader form service
24-
const loader = new FileFormService()
25-
26-
// Add a Json form
27-
await loader.addForm('src/server/forms/register-as-a-unicorn-breeder.json', {
28-
...metadata,
29-
id: '95e92559-968d-44ae-8666-2b1ad3dffd31',
30-
title: 'Register as a unicorn breeder',
31-
slug: 'register-as-a-unicorn-breeder'
32-
})
338

34-
// Add a Yaml form
35-
await loader.addForm('src/server/forms/register-as-a-unicorn-breeder.yaml', {
36-
...metadata,
37-
id: '641aeafd-13dd-40fa-9186-001703800efb',
38-
title: 'Register as a unicorn breeder (yaml)',
39-
slug: 'register-as-a-unicorn-breeder-yaml' // if we needed to validate any JSON logic, make it available for convenience
40-
})
41-
42-
// Get the forms service
43-
export const formsService = loader.toFormsService()
9+
export function getFormDefinition() {
10+
throw error
11+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
export { formsService } from '~/src/server/plugins/engine/services/formsService.js'
1+
export * as formsService from '~/src/server/plugins/engine/services/formsService.js'
22
export * as formSubmissionService from '~/src/server/plugins/engine/services/formSubmissionService.js'
33
export * as outputService from '~/src/server/plugins/engine/services/notifyService.js'
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import { config } from '~/src/config/index.js'
2+
import { FileFormService } from '~/src/server/utils/file-form-service.js'
3+
4+
// Create shared form metadata
5+
const now = new Date()
6+
const user = { id: 'user', displayName: 'Username' }
7+
const author = {
8+
createdAt: now,
9+
createdBy: user,
10+
updatedAt: now,
11+
updatedBy: user
12+
}
13+
const metadata = {
14+
organisation: 'Defra',
15+
teamName: 'Team name',
16+
teamEmail: 'team@defra.gov.uk',
17+
submissionGuidance: "Thanks for your submission, we'll be in touch",
18+
notificationEmail: config.get('submissionEmailAddress'),
19+
...author,
20+
live: author
21+
}
22+
23+
// Get the forms service
24+
export const formsService = async () => {
25+
// Instantiate the file loader form service
26+
const loader = new FileFormService()
27+
28+
// Add a Json form
29+
await loader.addForm('src/server/forms/register-as-a-unicorn-breeder.json', {
30+
...metadata,
31+
id: '95e92559-968d-44ae-8666-2b1ad3dffd31',
32+
title: 'Register as a unicorn breeder',
33+
slug: 'register-as-a-unicorn-breeder'
34+
})
35+
36+
// Add a Yaml form
37+
await loader.addForm('src/server/forms/register-as-a-unicorn-breeder.yaml', {
38+
...metadata,
39+
id: '641aeafd-13dd-40fa-9186-001703800efb',
40+
title: 'Register as a unicorn breeder (yaml)',
41+
slug: 'register-as-a-unicorn-breeder-yaml' // if we needed to validate any JSON logic, make it available for convenience
42+
})
43+
44+
return loader.toFormsService()
45+
}

0 commit comments

Comments
 (0)