diff --git a/app/components/component-xpub-submit/src/components/SubmitPage.js b/app/components/component-xpub-submit/src/components/SubmitPage.js index d8ddaa6fb295206a2d52351fe02dad4d610189ac..9f64e1796b5feedabe18687a3a6b24738d446754 100644 --- a/app/components/component-xpub-submit/src/components/SubmitPage.js +++ b/app/components/component-xpub-submit/src/components/SubmitPage.js @@ -90,6 +90,7 @@ const fragmentFields = ` email affiliation } + submission ` const query = gql` @@ -237,7 +238,10 @@ export default compose( })), withFormik({ initialValues: {}, - mapPropsToValues: ({ manuscript }) => manuscript, + mapPropsToValues: ({ manuscript }) => + Object.assign({}, manuscript, { + submission: JSON.parse(manuscript.submission), + }), displayName: 'submit', handleSubmit: ( props, diff --git a/server/manuscript/src/index.js b/server/model-manuscript/src/index.js similarity index 100% rename from server/manuscript/src/index.js rename to server/model-manuscript/src/index.js diff --git a/server/manuscript/src/manuscript.js b/server/model-manuscript/src/manuscript.js similarity index 99% rename from server/manuscript/src/manuscript.js rename to server/model-manuscript/src/manuscript.js index 682b1f86276576e6dbb010de034ba1cb60c471c6..dfba3ae900b46e57319b69c917af3e270a124529 100644 --- a/server/manuscript/src/manuscript.js +++ b/server/model-manuscript/src/manuscript.js @@ -248,10 +248,12 @@ class Manuscript extends BaseModel { keywords: { type: ['string', 'null'] }, }, }, + submission: {}, }, } } + // TODO: Do this on the DB level with cascading deletes async $beforeDelete() { // const Review = require('../../review/src/review') const { Review, Team, File } = require('@pubsweet/models') diff --git a/server/manuscript/src/migrations/1537450834-manuscript.sql b/server/model-manuscript/src/migrations/1537450834-manuscript.sql similarity index 93% rename from server/manuscript/src/migrations/1537450834-manuscript.sql rename to server/model-manuscript/src/migrations/1537450834-manuscript.sql index 9c4ec1ede1e66e29c5677f046efdd72adb508e41..1fe9713efa673e157a3e6118e33280972c377f46 100644 --- a/server/manuscript/src/migrations/1537450834-manuscript.sql +++ b/server/model-manuscript/src/migrations/1537450834-manuscript.sql @@ -8,5 +8,6 @@ CREATE TABLE manuscripts ( authors JSONB, suggestions JSONB, meta JSONB, + submission JSONB, type TEXT NOT NULL ); \ No newline at end of file diff --git a/server/manuscript/src/resolvers.js b/server/model-manuscript/src/resolvers.js similarity index 89% rename from server/manuscript/src/resolvers.js rename to server/model-manuscript/src/resolvers.js index 003b0a8e04225dcaa719e4497d62f763a99df62f..2d1e49a89a86f29c9ce3a624f50cdbd6bbb0fca1 100644 --- a/server/manuscript/src/resolvers.js +++ b/server/model-manuscript/src/resolvers.js @@ -7,6 +7,13 @@ const resolvers = { const { Team } = require('@pubsweet/models') const { meta, files } = vars.input + + // We want the submission information to be stored as JSONB + // but we want the input to come in as a JSON string + const submission = vars.input.submission + ? JSON.parse(vars.input.submission) + : {} + const emptyManuscript = { meta: Object.assign(meta, { notes: [ @@ -21,7 +28,9 @@ const resolvers = { ], }), status: 'new', + submission, } + // eslint-disable-next-line const manuscript = await new ctx.connectors.Manuscript.model( emptyManuscript, @@ -173,6 +182,14 @@ const resolvers = { return form }, }, + // We want submission into to come out as a stringified JSON, so that we don't have to + // change our queries if the submission form changes. We still want to store it as JSONB + // so that we can easily search through the information within. + Manuscript: { + submission(parent, args, ctx) { + return JSON.stringify(parent.submission) + }, + }, } module.exports = resolvers diff --git a/server/manuscript/src/typeDefs.js b/server/model-manuscript/src/typeDefs.js similarity index 97% rename from server/manuscript/src/typeDefs.js rename to server/model-manuscript/src/typeDefs.js index 26c8cbdcc541137d4ecc6d24ab60db4b710df3ac..878abbd5965b741d554fd229083a833d5b96b1a6 100644 --- a/server/manuscript/src/typeDefs.js +++ b/server/model-manuscript/src/typeDefs.js @@ -27,6 +27,7 @@ const typeDefs = ` suggestions: Suggestions authors: [Author] meta: ManuscriptMeta + submission: String } type ManuscriptVersion implements Object { @@ -42,11 +43,13 @@ const typeDefs = ` suggestions: Suggestions authors: [Author] meta: ManuscriptMeta + submission: String } input ManuscriptInput { files: [FileInput] meta: ManuscriptMetaInput + submission: String } input ManuscriptMetaInput {