Merge branch 'feature/typescript_backend_2' into feature/typescript_backend_3

This commit is contained in:
Elian Doran 2024-02-18 20:41:48 +02:00
commit 0903cf2646
No known key found for this signature in database
13 changed files with 18 additions and 19 deletions

View File

@ -183,7 +183,7 @@ function noteUpdated(entityRow: NoteRow) {
const note = becca.notes[entityRow.noteId];
if (note) {
// FIXME, this wouldn't have worked in the original implementation since the variable was named __flatTextCache.
// TODO, this wouldn't have worked in the original implementation since the variable was named __flatTextCache.
// type / mime could have been changed, and they are present in flatTextCache
note.__flatTextCache = null;
}

View File

@ -90,21 +90,21 @@ abstract class AbstractBeccaEntity<T extends AbstractBeccaEntity<T>> {
}
hasStringContent(): boolean {
// FIXME: Not sure why some entities don't implement it.
// TODO: Not sure why some entities don't implement it.
return true;
}
abstract getPojo(): {};
get isDeleted(): boolean {
// FIXME: Not sure why some entities don't implement it.
// TODO: Not sure why some entities don't implement it.
return false;
}
/**
* Saves entity - executes SQL, but doesn't commit the transaction on its own
*/
// FIXME: opts not used but called a few times, maybe should be used by derived classes or passed to beforeSaving.
// TODO: opts not used but called a few times, maybe should be used by derived classes or passed to beforeSaving.
save(opts?: {}): this {
const constructorData = (this.constructor as unknown as ConstructorData<T>);
const entityName = constructorData.entityName;

View File

@ -15,7 +15,7 @@ const attachmentRoleToNoteTypeMapping = {
};
interface ContentOpts {
// FIXME: Found in bnote.ts, to check if it's actually used and not a typo.
// TODO: Found in bnote.ts, to check if it's actually used and not a typo.
forceSave?: boolean;
/** will also save this BAttachment entity */
@ -135,7 +135,7 @@ class BAttachment extends AbstractBeccaEntity<BAttachment> {
}
convertToNote(): { note: BNote, branch: BBranch } {
// FIXME: can this ever be "search"?
// TODO: can this ever be "search"?
if (this.type as string === 'search') {
throw new Error(`Note of type search cannot have child notes`);
}

View File

@ -1,6 +1,6 @@
import { BlobRow } from "./rows";
// FIXME: Why this does not extend the abstract becca?
// TODO: Why this does not extend the abstract becca?
class BBlob {
static get entityName() { return "blobs"; }
static get primaryKeyName() { return "blobId"; }

View File

@ -899,7 +899,7 @@ class BNote extends AbstractBeccaEntity<BNote> {
const {searchResultNoteIds} = searchService.searchFromNote(this);
const becca = this.becca;
return (searchResultNoteIds as string[]) // FIXME: remove cast once search is converted
return (searchResultNoteIds as string[]) // TODO: remove cast once search is converted
.map(resultNoteId => becca.notes[resultNoteId])
.filter(note => !!note);
}

View File

@ -88,7 +88,7 @@ class BRevision extends AbstractBeccaEntity<BRevision> {
*
* This is the same approach as is used for Note's content.
*/
// FIXME: initial declaration included Buffer, but everywhere it's treated as a string.
// TODO: initial declaration included Buffer, but everywhere it's treated as a string.
getContent(): string {
return this._getContent() as string;
}

View File

@ -1,4 +1,4 @@
// FIXME: Booleans should probably be numbers instead (as SQLite does not have booleans.);
// TODO: Booleans should probably be numbers instead (as SQLite does not have booleans.);
export interface AttachmentRow {
attachmentId?: string;

View File

@ -10,7 +10,7 @@ import passwordService = require('./encryption/password');
const noAuthentication = config.General && config.General.noAuthentication === true;
// FIXME: We are using custom types for request & response because couldn't extract those pesky express types.
// TODO: We are using custom types for request & response because couldn't extract those pesky express types.
interface Request {
method: string;
path: string;

View File

@ -31,7 +31,7 @@ function changePassword(currentPassword: string, newPassword: string) {
const newPasswordVerificationKey = utils.toBase64(myScryptService.getVerificationHash(newPassword));
if (decryptedDataKey) {
// FIXME: what should happen if the decrypted data key is null?
// TODO: what should happen if the decrypted data key is null?
passwordEncryptionService.setDataKey(newPassword, decryptedDataKey);
}

View File

@ -762,7 +762,7 @@ function updateNoteData(noteId: string, content: string, attachments: BAttachmen
const existingAttachmentsByTitle = utils.toMap(note.getAttachments({includeContentLength: false}), 'title');
for (const attachment of attachments) {
// FIXME: The content property was extracted directly instead of `getContent`. To investigate.
// TODO: The content property was extracted directly instead of `getContent`. To investigate.
const {attachmentId, role, mime, title, position} = attachment;
const content = attachment.getContent();
@ -835,7 +835,7 @@ function undeleteBranch(branchId: string, deleteId: string, taskContext: TaskCon
for (const attributeRow of attributeRows) {
// relation might point to a note which hasn't been undeleted yet and would thus throw up
// FIXME: skipValidation is not used.
// TODO: skipValidation is not used.
new BAttribute(attributeRow).save({skipValidation: true});
}
@ -1015,7 +1015,7 @@ function duplicateSubtreeInner(origNote: BNote, origBranch: BBranch, newParentNo
}
// the relation targets may not be created yet, the mapping is pre-generated
// FIXME: This used to be `attr.save({skipValidation: true});`, but skipValidation is in beforeSaving.
// TODO: This used to be `attr.save({skipValidation: true});`, but skipValidation is in beforeSaving.
attr.save();
}

View File

@ -39,7 +39,6 @@ class OrderByAndLimitExp extends Expression {
execute(inputNoteSet: NoteSet, executionContext: {}, searchContext: SearchContext) {
if (!this.subExpression) {
// FIXME: who is setting the subexpression?
throw new Error("Missing subexpression");
}

View File

@ -6,7 +6,7 @@
const Mutex = require('async-mutex').Mutex;
const instance = new Mutex();
async function doExclusively<T>(func: () => void) {
async function doExclusively<T>(func: () => T) {
const releaseMutex = await instance.acquire();
try {

View File

@ -82,7 +82,7 @@ function unescapeHtml(str: string) {
}
function toObject<T, K extends string | number | symbol, V>(array: T[], fn: (item: T) => [K, V]): Record<K, V> {
const obj: Record<K, V> = {} as Record<K, V>; // FIXME: unsafe?
const obj: Record<K, V> = {} as Record<K, V>; // TODO: unsafe?
for (const item of array) {
const ret = fn(item);
@ -98,7 +98,7 @@ function stripTags(text: string) {
}
function union<T extends string | number | symbol>(a: T[], b: T[]): T[] {
const obj: Record<T, T> = {} as Record<T, T>; // FIXME: unsafe?
const obj: Record<T, T> = {} as Record<T, T>; // TODO: unsafe?
for (let i = a.length-1; i >= 0; i--) {
obj[a[i]] = a[i];