server-ts: Port share/shaca/shaca_loader

This commit is contained in:
Elian Doran 2024-04-09 22:49:05 +03:00
parent b3c2602620
commit 7c76d28f75
No known key found for this signature in database
9 changed files with 25 additions and 31 deletions

View File

@ -4,7 +4,7 @@ const safeCompare = require('safe-compare');
const ejs = require("ejs"); const ejs = require("ejs");
const shaca = require('./shaca/shaca'); const shaca = require('./shaca/shaca');
const shacaLoader = require('./shaca/shaca_loader.js'); const shacaLoader = require('./shaca/shaca_loader');
const shareRoot = require('./share_root'); const shareRoot = require('./share_root');
const contentRenderer = require('./content_renderer.js'); const contentRenderer = require('./content_renderer.js');
const assetPath = require('../services/asset_path'); const assetPath = require('../services/asset_path');

View File

@ -0,0 +1,4 @@
type SNoteRow = [ string, string, string, string, string, string, boolean ];
type SBranchRow = [ string, string, string, string, string, boolean ];
type SAttributeRow = [ string, string, string, string, string, boolean, number ];
type SAttachmentRow = [ string, string, string, string, string, string, string ];

View File

@ -6,8 +6,6 @@ import AbstractShacaEntity = require('./abstract_shaca_entity');
import SNote = require('./snote'); import SNote = require('./snote');
import { Blob } from '../../../services/blob-interface'; import { Blob } from '../../../services/blob-interface';
type AttachmentRow = [ string, string, string, string, string, string, string ];
class SAttachment extends AbstractShacaEntity { class SAttachment extends AbstractShacaEntity {
private attachmentId: string; private attachmentId: string;
private ownerId: string; private ownerId: string;
@ -18,7 +16,7 @@ class SAttachment extends AbstractShacaEntity {
/** used for caching of images */ /** used for caching of images */
private utcDateModified: string; private utcDateModified: string;
constructor([attachmentId, ownerId, role, mime, title, blobId, utcDateModified]: AttachmentRow) { constructor([attachmentId, ownerId, role, mime, title, blobId, utcDateModified]: SAttachmentRow) {
super(); super();
this.attachmentId = attachmentId; this.attachmentId = attachmentId;

View File

@ -4,8 +4,6 @@ import SNote = require("./snote");
const AbstractShacaEntity = require('./abstract_shaca_entity'); const AbstractShacaEntity = require('./abstract_shaca_entity');
type AttributeRow = [ string, string, string, string, string, boolean, number ];
class SAttribute extends AbstractShacaEntity { class SAttribute extends AbstractShacaEntity {
attributeId: string; attributeId: string;
@ -16,7 +14,7 @@ class SAttribute extends AbstractShacaEntity {
value: string; value: string;
isInheritable: boolean; isInheritable: boolean;
constructor([attributeId, noteId, type, name, value, isInheritable, position]: AttributeRow) { constructor([attributeId, noteId, type, name, value, isInheritable, position]: SAttributeRow) {
super(); super();
this.attributeId = attributeId; this.attributeId = attributeId;

View File

@ -3,8 +3,6 @@
import AbstractShacaEntity = require('./abstract_shaca_entity'); import AbstractShacaEntity = require('./abstract_shaca_entity');
import SNote = require('./snote'); import SNote = require('./snote');
type BranchRow = [ string, string, string, string, string, boolean ];
class SBranch extends AbstractShacaEntity { class SBranch extends AbstractShacaEntity {
private branchId: string; private branchId: string;
@ -14,7 +12,7 @@ class SBranch extends AbstractShacaEntity {
private isExpanded: boolean; private isExpanded: boolean;
isHidden: boolean; isHidden: boolean;
constructor([branchId, noteId, parentNoteId, prefix, isExpanded]: BranchRow) { constructor([branchId, noteId, parentNoteId, prefix, isExpanded]: SBranchRow) {
super(); super();
this.branchId = branchId; this.branchId = branchId;

View File

@ -15,8 +15,6 @@ const CREDENTIALS = 'shareCredentials';
const isCredentials = (attr: SAttribute) => attr.type === 'label' && attr.name === CREDENTIALS; const isCredentials = (attr: SAttribute) => attr.type === 'label' && attr.name === CREDENTIALS;
type NoteRow = [ string, string, string, string, string, string, boolean ];
class SNote extends AbstractShacaEntity { class SNote extends AbstractShacaEntity {
noteId: string; noteId: string;
private title: string; private title: string;
@ -34,7 +32,7 @@ class SNote extends AbstractShacaEntity {
targetRelations: SAttribute[]; targetRelations: SAttribute[];
attachments: SAttachment[]; attachments: SAttachment[];
constructor([noteId, title, type, mime, blobId, utcDateModified, isProtected]: NoteRow) { constructor([noteId, title, type, mime, blobId, utcDateModified, isProtected]: SNoteRow) {
super(); super();
this.noteId = noteId; this.noteId = noteId;

View File

@ -14,7 +14,7 @@ export default class Shaca {
private shareRootNote!: SNote | null; private shareRootNote!: SNote | null;
/** true if the index of all shared subtrees is enabled */ /** true if the index of all shared subtrees is enabled */
private shareIndexEnabled!: boolean; private shareIndexEnabled!: boolean;
private loaded!: boolean; loaded!: boolean;
constructor() { constructor() {
this.reset(); this.reset();

View File

@ -1,14 +1,14 @@
"use strict"; "use strict";
const sql = require('../sql'); import sql = require('../sql');
const shaca = require('./shaca'); import shaca = require('./shaca');
const log = require('../../services/log'); import log = require('../../services/log');
const SNote = require('./entities/snote'); import SNote = require('./entities/snote');
const SBranch = require('./entities/sbranch'); import SBranch = require('./entities/sbranch');
const SAttribute = require('./entities/sattribute'); import SAttribute = require('./entities/sattribute');
const SAttachment = require('./entities/sattachment'); import SAttachment = require('./entities/sattachment');
const shareRoot = require('../share_root'); import shareRoot = require('../share_root');
const eventService = require('../../services/events'); import eventService = require('../../services/events');
function load() { function load() {
const start = Date.now(); const start = Date.now();
@ -35,7 +35,7 @@ function load() {
const noteIdStr = noteIds.map(noteId => `'${noteId}'`).join(","); const noteIdStr = noteIds.map(noteId => `'${noteId}'`).join(",");
const rawNoteRows = sql.getRawRows(` const rawNoteRows = sql.getRawRows<SNoteRow>(`
SELECT noteId, title, type, mime, blobId, utcDateModified, isProtected SELECT noteId, title, type, mime, blobId, utcDateModified, isProtected
FROM notes FROM notes
WHERE isDeleted = 0 WHERE isDeleted = 0
@ -45,7 +45,7 @@ function load() {
new SNote(row); new SNote(row);
} }
const rawBranchRows = sql.getRawRows(` const rawBranchRows = sql.getRawRows<SBranchRow>(`
SELECT branchId, noteId, parentNoteId, prefix, isExpanded, utcDateModified SELECT branchId, noteId, parentNoteId, prefix, isExpanded, utcDateModified
FROM branches FROM branches
WHERE isDeleted = 0 WHERE isDeleted = 0
@ -56,7 +56,7 @@ function load() {
new SBranch(row); new SBranch(row);
} }
const rawAttributeRows = sql.getRawRows(` const rawAttributeRows = sql.getRawRows<SAttributeRow>(`
SELECT attributeId, noteId, type, name, value, isInheritable, position, utcDateModified SELECT attributeId, noteId, type, name, value, isInheritable, position, utcDateModified
FROM attributes FROM attributes
WHERE isDeleted = 0 WHERE isDeleted = 0
@ -66,14 +66,12 @@ function load() {
new SAttribute(row); new SAttribute(row);
} }
const rawAttachmentRows = sql.getRawRows(` const rawAttachmentRows = sql.getRawRows<SAttachmentRow>(`
SELECT attachmentId, ownerId, role, mime, title, blobId, utcDateModified SELECT attachmentId, ownerId, role, mime, title, blobId, utcDateModified
FROM attachments FROM attachments
WHERE isDeleted = 0 WHERE isDeleted = 0
AND ownerId IN (${noteIdStr})`); AND ownerId IN (${noteIdStr})`);
rawAttachmentRows.sort((a, b) => a.position < b.position ? -1 : 1);
for (const row of rawAttachmentRows) { for (const row of rawAttachmentRows) {
new SAttachment(row); new SAttachment(row);
} }
@ -93,7 +91,7 @@ eventService.subscribe([eventService.ENTITY_CREATED, eventService.ENTITY_CHANGED
shaca.reset(); shaca.reset();
}); });
module.exports = { export = {
load, load,
ensureLoad ensureLoad
}; };

View File

@ -23,7 +23,7 @@ function getRow<T>(query: string, params: string[] = []): T {
return dbConnection.prepare(query).get(params) as T; return dbConnection.prepare(query).get(params) as T;
} }
function getColumn<T>(query: string, params = []): T[] { function getColumn<T>(query: string, params: string[] = []): T[] {
return dbConnection.prepare(query).pluck().all(params) as T[]; return dbConnection.prepare(query).pluck().all(params) as T[];
} }