mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 18:36:30 +01:00 
			
		
		
		
	
		
			
	
	
		
			70 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			70 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | "use strict"; | ||
|  | 
 | ||
|  | const sql = require('../../services/sql'); | ||
|  | const attributeService = require('../../services/attributes'); | ||
|  | const repository = require('../../services/repository'); | ||
|  | const Attribute = require('../../entities/attribute'); | ||
|  | 
 | ||
|  | async function getNoteAttributes(req) { | ||
|  |     const noteId = req.params.noteId; | ||
|  | 
 | ||
|  |     return await repository.getEntities("SELECT * FROM attributes WHERE isDeleted = 0 AND noteId = ? ORDER BY position, dateCreated", [noteId]); | ||
|  | } | ||
|  | 
 | ||
|  | async function updateNoteAttributes(req) { | ||
|  |     const noteId = req.params.noteId; | ||
|  |     const attributes = req.body; | ||
|  | 
 | ||
|  |     for (const attribute of attributes) { | ||
|  |         let attributeEntity; | ||
|  | 
 | ||
|  |         if (attribute.attributeId) { | ||
|  |             attributeEntity = await repository.getAttribute(attribute.attributeId); | ||
|  |         } | ||
|  |         else { | ||
|  |             // if it was "created" and then immediatelly deleted, we just don't create it at all
 | ||
|  |             if (attribute.isDeleted) { | ||
|  |                 continue; | ||
|  |             } | ||
|  | 
 | ||
|  |             attributeEntity = new Attribute(); | ||
|  |             attributeEntity.noteId = noteId; | ||
|  |         } | ||
|  | 
 | ||
|  |         attributeEntity.name = attribute.name; | ||
|  |         attributeEntity.value = attribute.value; | ||
|  |         attributeEntity.position = attribute.position; | ||
|  |         attributeEntity.isDeleted = attribute.isDeleted; | ||
|  | 
 | ||
|  |         await attributeEntity.save(); | ||
|  |     } | ||
|  | 
 | ||
|  |     return await repository.getEntities("SELECT * FROM attributes WHERE isDeleted = 0 AND noteId = ? ORDER BY position, dateCreated", [noteId]); | ||
|  | } | ||
|  | 
 | ||
|  | async function getAllAttributeNames() { | ||
|  |     const names = await sql.getColumn("SELECT DISTINCT name FROM attributes WHERE isDeleted = 0"); | ||
|  | 
 | ||
|  |     for (const attribute of attributeService.BUILTIN_ATTRIBUTES) { | ||
|  |         if (!names.includes(attribute)) { | ||
|  |             names.push(attribute); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     names.sort(); | ||
|  | 
 | ||
|  |     return names; | ||
|  | } | ||
|  | 
 | ||
|  | async function getValuesForAttribute(req) { | ||
|  |     const attributeName = req.params.attributeName; | ||
|  | 
 | ||
|  |     return await sql.getColumn("SELECT DISTINCT value FROM attributes WHERE isDeleted = 0 AND name = ? AND value != '' ORDER BY value", [attributeName]); | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = { | ||
|  |     getNoteAttributes, | ||
|  |     updateNoteAttributes, | ||
|  |     getAllAttributeNames, | ||
|  |     getValuesForAttribute | ||
|  | }; |