From 2248d98cc799605de55a243dcf443096d588592c Mon Sep 17 00:00:00 2001 From: zadam Date: Wed, 12 Jan 2022 21:14:12 +0100 Subject: [PATCH] using 201 for created entities in etapi --- db/demo.zip | Bin 849085 -> 849087 bytes src/etapi/attributes.js | 12 +++---- src/etapi/auth.js | 12 +++---- src/etapi/branches.js | 9 +++--- src/etapi/etapi.openapi.yaml | 41 +++++++++++++++--------- src/etapi/notes.js | 16 ++++----- src/public/app/services/note_context.js | 5 +-- test-etapi/_login.http | 6 ++-- test-etapi/create-entities.http | 16 ++++----- test-etapi/logout.http | 6 ++-- 10 files changed, 67 insertions(+), 56 deletions(-) diff --git a/db/demo.zip b/db/demo.zip index ce0297825d94d9e8c625f381a856254d3adbbcae..f80ce3cc6b3b7e75cdbb1ef6e1ea639cb07ddacb 100644 GIT binary patch delta 27888 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 CO5K|P delta 27800 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 S?sv#o_S~Og@)O`SnE4;tgzwz| diff --git a/src/etapi/attributes.js b/src/etapi/attributes.js index 4b5edcc89..74d3dbfa9 100644 --- a/src/etapi/attributes.js +++ b/src/etapi/attributes.js @@ -19,20 +19,20 @@ function register(router) { 'value': [v.notNull, v.isString], 'isInheritable': [v.notNull, v.isBoolean] }; - + eu.route(router, 'post' ,'/etapi/attributes', (req, res, next) => { if (req.body.type === 'relation') { eu.getAndCheckNote(req.body.value); } - + const params = {}; - + eu.validateAndPatch(params, req.body, ALLOWED_PROPERTIES_FOR_CREATE_ATTRIBUTE); try { const attr = attributeService.createAttribute(params); - res.json(mappers.mapAttributeToPojo(attr)); + res.status(201).json(mappers.mapAttributeToPojo(attr)); } catch (e) { throw new eu.EtapiError(500, eu.GENERIC_CODE, e.message); @@ -49,9 +49,9 @@ function register(router) { if (attribute.type === 'relation') { eu.getAndCheckNote(req.body.value); } - + eu.validateAndPatch(attribute, req.body, ALLOWED_PROPERTIES_FOR_PATCH); - + attribute.save(); res.json(mappers.mapAttributeToPojo(attribute)); diff --git a/src/etapi/auth.js b/src/etapi/auth.js index 372bdfe60..c83369ea6 100644 --- a/src/etapi/auth.js +++ b/src/etapi/auth.js @@ -12,8 +12,8 @@ function register(router) { } const {authToken} = etapiTokenService.createToken(tokenName || "ETAPI login"); - - res.json({ + + res.status(201).json({ authToken }); }); @@ -26,18 +26,18 @@ function register(router) { } const etapiToken = becca.getEtapiToken(parsed.etapiTokenId); - + if (!etapiToken) { // shouldn't happen since this already passed auth validation throw new Error(`Cannot find the token ${parsed.etapiTokenId}.`); } - + etapiToken.markAsDeletedSimple(); - + res.sendStatus(204); }); } module.exports = { register -} \ No newline at end of file +} diff --git a/src/etapi/branches.js b/src/etapi/branches.js index 589165478..71117e339 100644 --- a/src/etapi/branches.js +++ b/src/etapi/branches.js @@ -22,10 +22,10 @@ function register(router) { 'prefix': [v.isString], 'isExpanded': [v.notNull, v.isBoolean] }; - + eu.route(router, 'post' ,'/etapi/branches', (req, res, next) => { const params = {}; - + eu.validateAndPatch(params, req.body, ALLOWED_PROPERTIES_FOR_CREATE_BRANCH); const existing = becca.getBranchFromChildAndParent(params.noteId, params.parentNoteId); @@ -33,15 +33,16 @@ function register(router) { if (existing) { existing.notePosition = params.notePosition; existing.prefix = params.prefix; + existing.isExpanded = params.isExpanded; existing.save(); - return res.json(mappers.mapBranchToPojo(existing)); + return res.status(200).json(mappers.mapBranchToPojo(existing)); } try { const branch = new Branch(params).save(); - res.json(mappers.mapBranchToPojo(branch)); + res.status(201).json(mappers.mapBranchToPojo(branch)); } catch (e) { throw new eu.EtapiError(400, eu.GENERIC_CODE, e.message); diff --git a/src/etapi/etapi.openapi.yaml b/src/etapi/etapi.openapi.yaml index 7cdba426f..3877bc03a 100644 --- a/src/etapi/etapi.openapi.yaml +++ b/src/etapi/etapi.openapi.yaml @@ -27,7 +27,7 @@ paths: schema: $ref: '#/components/schemas/CreateNoteDef' responses: - '200': + '201': description: note created content: application/json: @@ -56,7 +56,7 @@ paths: description: search query string as described in https://github.com/zadam/trilium/wiki/Search schema: type: string - examples: + examples: fulltext: summary: Fulltext search for keywords (not exact match) value: 'towers tolkien' @@ -205,7 +205,7 @@ paths: $ref: '#/components/schemas/Note' responses: '200': - description: update note + description: note updated content: application/json: schema: @@ -252,7 +252,10 @@ paths: schema: $ref: '#/components/schemas/Error' post: - description: create a branch (clone a note to a different location in the tree) + description: > + Create a branch (clone a note to a different location in the tree). + In case there is a branch between parent note and child note already, + then this will update the existing branch with prefix, notePosition and isExpanded. operationId: postBranch requestBody: required: true @@ -262,11 +265,17 @@ paths: $ref: '#/components/schemas/Branch' responses: '200': - description: update branch + description: branch updated (branch between parent note and child note already existed) content: application/json: schema: - $ref: '#/components/schemas/Note' + $ref: '#/components/schemas/Branch' + '201': + description: branch created + content: + application/json: + schema: + $ref: '#/components/schemas/Branch' default: description: unexpected error content: @@ -284,11 +293,11 @@ paths: $ref: '#/components/schemas/Branch' responses: '200': - description: update branch + description: branch updated content: application/json: schema: - $ref: '#/components/schemas/Note' + $ref: '#/components/schemas/Branch' default: description: unexpected error content: @@ -342,8 +351,8 @@ paths: schema: $ref: '#/components/schemas/Attribute' responses: - '200': - description: update attribute + '201': + description: attribute created content: application/json: schema: @@ -365,7 +374,7 @@ paths: $ref: '#/components/schemas/Attribute' responses: '200': - description: update attribute + description: attribute updated content: application/json: schema: @@ -421,7 +430,7 @@ paths: in: path required: true schema: - type: string + type: string format: date example: 2022-02-22 responses: @@ -547,17 +556,17 @@ paths: content: application/json: schema: - properties: + properties: password: type: string description: user's password used to e.g. login to Trilium server and/or protect notes responses: - '200': + '201': description: auth token content: application/json: schema: - properties: + properties: authToken: type: string example: Bc4bFn0Ffiok_4NpbVCDnFz7B2WU+pdhW8B5Ne3DiR5wXrEyqdjgRIsk= @@ -602,7 +611,7 @@ components: type: string type: type: string - enum: + enum: - text - code - file diff --git a/src/etapi/notes.js b/src/etapi/notes.js index 1aa66d135..f5110d646 100644 --- a/src/etapi/notes.js +++ b/src/etapi/notes.js @@ -15,21 +15,21 @@ function register(router) { if (!search?.trim()) { throw new eu.EtapiError(400, 'SEARCH_QUERY_PARAM_MANDATORY', "'search' query parameter is mandatory"); } - + const searchParams = parseSearchParams(req); const searchContext = new SearchContext(searchParams); - + const searchResults = searchService.findResultsWithQuery(search, searchContext); const foundNotes = searchResults.map(sr => becca.notes[sr.noteId]); - + const resp = { results: foundNotes.map(note => mappers.mapNoteToPojo(note)) }; - + if (searchContext.debugInfo) { resp.debugInfo = searchContext.debugInfo; } - + res.json(resp); }); @@ -51,16 +51,16 @@ function register(router) { 'noteId': [v.notNull, v.isValidEntityId], 'branchId': [v.notNull, v.isValidEntityId], }; - + eu.route(router, 'post' ,'/etapi/create-note', (req, res, next) => { const params = {}; - + eu.validateAndPatch(params, req.body, ALLOWED_PROPERTIES_FOR_CREATE_NOTE); try { const resp = noteService.createNewNote(params); - res.json({ + res.status(201).json({ note: mappers.mapNoteToPojo(resp.note), branch: mappers.mapBranchToPojo(resp.branch) }); diff --git a/src/public/app/services/note_context.js b/src/public/app/services/note_context.js index 7d1c9bf3f..2b7e71fa3 100644 --- a/src/public/app/services/note_context.js +++ b/src/public/app/services/note_context.js @@ -218,9 +218,10 @@ class NoteContext extends Component { } } } - + hasNoteList() { - return this.note.hasChildren() + return this.note + && this.note.hasChildren() && ['book', 'text', 'code'].includes(this.note.type) && this.note.mime !== 'text/x-sqlite;schema=trilium' && !this.note.hasLabel('hideChildrenOverview'); diff --git a/test-etapi/_login.http b/test-etapi/_login.http index 1af4bc2de..9976e7cd4 100644 --- a/test-etapi/_login.http +++ b/test-etapi/_login.http @@ -6,7 +6,7 @@ Content-Type: application/json } > {% - client.assert(response.status === 200); - + client.assert(response.status === 201); + client.global.set("authToken", response.body.authToken); -%} \ No newline at end of file +%} diff --git a/test-etapi/create-entities.http b/test-etapi/create-entities.http index a01555a9e..41f321e02 100644 --- a/test-etapi/create-entities.http +++ b/test-etapi/create-entities.http @@ -11,15 +11,15 @@ Content-Type: application/json "content": "Hi there!" } -> {% - client.assert(response.status === 200); +> {% + client.assert(response.status === 201); client.assert(response.body.note.noteId.startsWith("forcedId")); client.assert(response.body.note.title == "Hello"); client.assert(response.body.branch.branchId.startsWith("forcedId")); client.assert(response.body.branch.parentNoteId == "root"); client.log(`Created note ` + response.body.note.noteId + ` and branch ` + response.body.branch.branchId); - + client.global.set("createdNoteId", response.body.note.noteId); client.global.set("createdBranchId", response.body.branch.branchId); %} @@ -37,11 +37,11 @@ Content-Type: application/json } > {% - client.assert(response.status === 200); + client.assert(response.status === 201); client.assert(response.body.parentNoteId == "hidden"); client.global.set("clonedBranchId", response.body.branchId); - + client.log(`Created cloned branch ` + response.body.branchId); %} @@ -107,9 +107,9 @@ Authorization: {{authToken}} } > {% - client.assert(response.status === 200); + client.assert(response.status === 201); client.assert(response.body.attributeId.startsWith("forcedAttributeId")); - + client.global.set("createdAttributeId", response.body.attributeId); %} @@ -121,4 +121,4 @@ Authorization: {{authToken}} > {% client.assert(response.status === 200); client.assert(response.body.attributeId == client.global.get("createdAttributeId")); -%} \ No newline at end of file +%} diff --git a/test-etapi/logout.http b/test-etapi/logout.http index 8aa54ac21..9bd7355e0 100644 --- a/test-etapi/logout.http +++ b/test-etapi/logout.http @@ -6,8 +6,8 @@ Content-Type: application/json } > {% - client.assert(response.status === 200); - + client.assert(response.status === 201); + client.global.set("testAuthToken", response.body.authToken); %} @@ -31,4 +31,4 @@ Content-Type: application/json GET {{triliumHost}}/etapi/notes/root Authorization: {{testAuthToken}} -> {% client.assert(response.status === 401); %} \ No newline at end of file +> {% client.assert(response.status === 401); %}