mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 18:36:30 +01:00 
			
		
		
		
	server-ts: Port services/attributes
This commit is contained in:
		| @@ -66,7 +66,7 @@ export type AttributeType = "label" | "relation"; | ||||
|  | ||||
| export interface AttributeRow { | ||||
|     attributeId?: string; | ||||
|     noteId: string; | ||||
|     noteId?: string; | ||||
|     type: AttributeType; | ||||
|     name: string; | ||||
|     position?: number; | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| const becca = require('../becca/becca'); | ||||
| const eu = require('./etapi_utils'); | ||||
| const mappers = require('./mappers.js'); | ||||
| const attributeService = require('../services/attributes.js'); | ||||
| const attributeService = require('../services/attributes'); | ||||
| const v = require('./validators.js'); | ||||
|  | ||||
| function register(router) { | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
|  | ||||
| const sql = require('../../services/sql'); | ||||
| const log = require('../../services/log'); | ||||
| const attributeService = require('../../services/attributes.js'); | ||||
| const attributeService = require('../../services/attributes'); | ||||
| const BAttribute = require('../../becca/entities/battribute'); | ||||
| const becca = require('../../becca/becca'); | ||||
| const ValidationError = require('../../errors/validation_error'); | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| "use strict"; | ||||
|  | ||||
| const attributeService = require('../../services/attributes.js'); | ||||
| const attributeService = require('../../services/attributes'); | ||||
| const cloneService = require('../../services/cloning.js'); | ||||
| const noteService = require('../../services/notes'); | ||||
| const dateNoteService = require('../../services/date_notes.js'); | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| "use strict"; | ||||
|  | ||||
| const scriptService = require('../../services/script.js'); | ||||
| const attributeService = require('../../services/attributes.js'); | ||||
| const attributeService = require('../../services/attributes'); | ||||
| const becca = require('../../becca/becca'); | ||||
| const syncService = require('../../services/sync.js'); | ||||
| const sql = require('../../services/sql'); | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| "use strict"; | ||||
|  | ||||
| const sql = require('../services/sql'); | ||||
| const attributeService = require('../services/attributes.js'); | ||||
| const attributeService = require('../services/attributes'); | ||||
| const config = require('../services/config'); | ||||
| const optionService = require('../services/options'); | ||||
| const log = require('../services/log'); | ||||
|   | ||||
| @@ -42,7 +42,7 @@ const setupApiRoute = require('./api/setup.js'); | ||||
| const sqlRoute = require('./api/sql'); | ||||
| const databaseRoute = require('./api/database.js'); | ||||
| const imageRoute = require('./api/image.js'); | ||||
| const attributesRoute = require('./api/attributes.js'); | ||||
| const attributesRoute = require('./api/attributes'); | ||||
| const scriptRoute = require('./api/script.js'); | ||||
| const senderRoute = require('./api/sender.js'); | ||||
| const filesRoute = require('./api/files.js'); | ||||
| @@ -64,7 +64,7 @@ const shareRoutes = require('../share/routes.js'); | ||||
| const etapiAuthRoutes = require('../etapi/auth.js'); | ||||
| const etapiAppInfoRoutes = require('../etapi/app_info'); | ||||
| const etapiAttachmentRoutes = require('../etapi/attachments.js'); | ||||
| const etapiAttributeRoutes = require('../etapi/attributes.js'); | ||||
| const etapiAttributeRoutes = require('../etapi/attributes'); | ||||
| const etapiBranchRoutes = require('../etapi/branches.js'); | ||||
| const etapiNoteRoutes = require('../etapi/notes.js'); | ||||
| const etapiSpecialNoteRoutes = require('../etapi/special_notes.js'); | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| "use strict"; | ||||
|  | ||||
| import BAttribute = require("../becca/entities/battribute"); | ||||
| import { AttributeRow } from "../becca/entities/rows"; | ||||
|  | ||||
| function formatAttrForSearch(attr: BAttribute, searchWithValue: string) { | ||||
| function formatAttrForSearch(attr: AttributeRow, searchWithValue: boolean) { | ||||
|     let searchStr = ''; | ||||
|  | ||||
|     if (attr.type === 'label') { | ||||
|   | ||||
| @@ -1,17 +1,18 @@ | ||||
| "use strict"; | ||||
| 
 | ||||
| const searchService = require('./search/services/search'); | ||||
| const sql = require('./sql'); | ||||
| const becca = require('../becca/becca'); | ||||
| const BAttribute = require('../becca/entities/battribute'); | ||||
| const {formatAttrForSearch} = require('./attribute_formatter'); | ||||
| const BUILTIN_ATTRIBUTES = require('./builtin_attributes'); | ||||
| import searchService = require('./search/services/search'); | ||||
| import sql = require('./sql'); | ||||
| import becca = require('../becca/becca'); | ||||
| import BAttribute = require('../becca/entities/battribute'); | ||||
| import attributeFormatter = require('./attribute_formatter'); | ||||
| import BUILTIN_ATTRIBUTES = require('./builtin_attributes'); | ||||
| import BNote = require('../becca/entities/bnote'); | ||||
| import { AttributeRow } from '../becca/entities/rows'; | ||||
| 
 | ||||
| const ATTRIBUTE_TYPES = ['label', 'relation']; | ||||
| 
 | ||||
| /** @returns {BNote[]} */ | ||||
| function getNotesWithLabel(name, value = undefined) { | ||||
|     const query = formatAttrForSearch({type: 'label', name, value}, value !== undefined); | ||||
| function getNotesWithLabel(name: string, value?: string): BNote[] { | ||||
|     const query = attributeFormatter.formatAttrForSearch({type: 'label', name, value}, value !== undefined); | ||||
|     return searchService.searchNotes(query, { | ||||
|         includeArchivedNotes: true, | ||||
|         ignoreHoistedNote: true | ||||
| @@ -19,8 +20,7 @@ function getNotesWithLabel(name, value = undefined) { | ||||
| } | ||||
| 
 | ||||
| // TODO: should be in search service
 | ||||
| /** @returns {BNote|null} */ | ||||
| function getNoteWithLabel(name, value = undefined) { | ||||
| function getNoteWithLabel(name: string, value?: string): BNote | null { | ||||
|     // optimized version (~20 times faster) without using normal search, useful for e.g., finding date notes
 | ||||
|     const attrs = becca.findAttributes('label', name); | ||||
| 
 | ||||
| @@ -39,7 +39,7 @@ function getNoteWithLabel(name, value = undefined) { | ||||
|     return null; | ||||
| } | ||||
| 
 | ||||
| function createLabel(noteId, name, value = "") { | ||||
| function createLabel(noteId: string, name: string, value: string = "") { | ||||
|     return createAttribute({ | ||||
|         noteId: noteId, | ||||
|         type: 'label', | ||||
| @@ -48,7 +48,7 @@ function createLabel(noteId, name, value = "") { | ||||
|     }); | ||||
| } | ||||
| 
 | ||||
| function createRelation(noteId, name, targetNoteId) { | ||||
| function createRelation(noteId: string, name: string, targetNoteId: string) { | ||||
|     return createAttribute({ | ||||
|         noteId: noteId, | ||||
|         type: 'relation', | ||||
| @@ -57,14 +57,14 @@ function createRelation(noteId, name, targetNoteId) { | ||||
|     }); | ||||
| } | ||||
| 
 | ||||
| function createAttribute(attribute) { | ||||
| function createAttribute(attribute: AttributeRow) { | ||||
|     return new BAttribute(attribute).save(); | ||||
| } | ||||
| 
 | ||||
| function getAttributeNames(type, nameLike) { | ||||
| function getAttributeNames(type: string, nameLike: string) { | ||||
|     nameLike = nameLike.toLowerCase(); | ||||
| 
 | ||||
|     let names = sql.getColumn( | ||||
|     let names = sql.getColumn<string>( | ||||
|         `SELECT DISTINCT name 
 | ||||
|              FROM attributes  | ||||
|              WHERE isDeleted = 0 | ||||
| @@ -98,11 +98,11 @@ function getAttributeNames(type, nameLike) { | ||||
|     return names; | ||||
| } | ||||
| 
 | ||||
| function isAttributeType(type) { | ||||
| function isAttributeType(type: string): boolean { | ||||
|     return ATTRIBUTE_TYPES.includes(type); | ||||
| } | ||||
| 
 | ||||
| function isAttributeDangerous(type, name) { | ||||
| function isAttributeDangerous(type: string, name: string): boolean { | ||||
|     return BUILTIN_ATTRIBUTES.some(attr => | ||||
|         attr.type === type && | ||||
|         attr.name.toLowerCase() === name.trim().toLowerCase() && | ||||
| @@ -110,7 +110,7 @@ function isAttributeDangerous(type, name) { | ||||
|     ); | ||||
| } | ||||
| 
 | ||||
| module.exports = { | ||||
| export = { | ||||
|     getNotesWithLabel, | ||||
|     getNoteWithLabel, | ||||
|     createLabel, | ||||
| @@ -2,7 +2,7 @@ const log = require('./log'); | ||||
| const noteService = require('./notes'); | ||||
| const sql = require('./sql'); | ||||
| const utils = require('./utils'); | ||||
| const attributeService = require('./attributes.js'); | ||||
| const attributeService = require('./attributes'); | ||||
| const dateNoteService = require('./date_notes.js'); | ||||
| const treeService = require('./tree.js'); | ||||
| const config = require('./config'); | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| "use strict"; | ||||
|  | ||||
| const noteService = require('./notes'); | ||||
| const attributeService = require('./attributes.js'); | ||||
| const attributeService = require('./attributes'); | ||||
| const dateUtils = require('./date_utils'); | ||||
| const sql = require('./sql'); | ||||
| const protectedSessionService = require('./protected_session'); | ||||
|   | ||||
| @@ -4,7 +4,7 @@ const BAttribute = require('../../becca/entities/battribute'); | ||||
| const utils = require('../../services/utils'); | ||||
| const log = require('../../services/log'); | ||||
| const noteService = require('../../services/notes'); | ||||
| const attributeService = require('../../services/attributes.js'); | ||||
| const attributeService = require('../../services/attributes'); | ||||
| const BBranch = require('../../becca/entities/bbranch'); | ||||
| const path = require('path'); | ||||
| const protectedSessionService = require('../protected_session'); | ||||
|   | ||||
| @@ -3,7 +3,7 @@ const cls = require('./cls'); | ||||
| const sqlInit = require('./sql_init'); | ||||
| const config = require('./config'); | ||||
| const log = require('./log'); | ||||
| const attributeService = require('../services/attributes.js'); | ||||
| const attributeService = require('../services/attributes'); | ||||
| const protectedSessionService = require('../services/protected_session'); | ||||
| const hiddenSubtreeService = require('./hidden_subtree'); | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| const attributeService = require('./attributes.js'); | ||||
| const attributeService = require('./attributes'); | ||||
| const dateNoteService = require('./date_notes.js'); | ||||
| const becca = require('../becca/becca'); | ||||
| const noteService = require('./notes'); | ||||
|   | ||||
| @@ -6,7 +6,7 @@ | ||||
| require('../becca/entity_constructor'); | ||||
| const sqlInit = require('../services/sql_init'); | ||||
| const noteService = require('../services/notes'); | ||||
| const attributeService = require('../services/attributes.js'); | ||||
| const attributeService = require('../services/attributes'); | ||||
| const cls = require('../services/cls'); | ||||
| const cloningService = require('../services/cloning.js'); | ||||
| const loremIpsum = require('lorem-ipsum').loremIpsum; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user