mirror of
https://github.com/zadam/trilium.git
synced 2025-10-20 07:08:55 +02:00
142 lines
3.4 KiB
TypeScript
142 lines
3.4 KiB
TypeScript
// TODO: Booleans should probably be numbers instead (as SQLite does not have booleans.);
|
|
// TODO: check against schema.sql which properties really are "optional"
|
|
|
|
export interface AttachmentRow {
|
|
attachmentId?: string;
|
|
ownerId?: string;
|
|
role: string;
|
|
mime: string;
|
|
title: string;
|
|
position?: number;
|
|
blobId?: string;
|
|
isProtected?: boolean;
|
|
dateModified?: string;
|
|
utcDateModified?: string;
|
|
utcDateScheduledForErasureSince?: string;
|
|
isDeleted?: boolean;
|
|
deleteId?: string;
|
|
contentLength?: number;
|
|
content?: Buffer | string;
|
|
}
|
|
|
|
export interface RevisionRow {
|
|
revisionId?: string;
|
|
noteId: string;
|
|
type: NoteType;
|
|
mime: string;
|
|
isProtected?: boolean;
|
|
title: string;
|
|
blobId?: string;
|
|
dateLastEdited?: string;
|
|
dateCreated?: string;
|
|
utcDateLastEdited?: string;
|
|
utcDateCreated: string;
|
|
utcDateModified?: string;
|
|
contentLength?: number;
|
|
}
|
|
|
|
export interface RecentNoteRow {
|
|
noteId: string;
|
|
notePath: string;
|
|
utcDateCreated?: string;
|
|
}
|
|
|
|
/**
|
|
* Database representation of an option.
|
|
*
|
|
* Options are key-value pairs that are used to store information such as user preferences (for example
|
|
* the current theme, sync server information), but also information about the state of the application).
|
|
*/
|
|
export interface OptionRow {
|
|
/** The name of the option. */
|
|
name: string;
|
|
/** The value of the option. */
|
|
value: string;
|
|
/** `true` if the value should be synced across multiple instances (e.g. locale) or `false` if it should be local-only (e.g. theme). */
|
|
isSynced: boolean;
|
|
utcDateModified?: string;
|
|
}
|
|
|
|
export interface EtapiTokenRow {
|
|
etapiTokenId?: string;
|
|
name: string;
|
|
tokenHash: string;
|
|
utcDateCreated?: string;
|
|
utcDateModified?: string;
|
|
isDeleted?: boolean;
|
|
}
|
|
|
|
export interface BlobRow {
|
|
blobId: string;
|
|
content: string | Buffer;
|
|
contentLength: number;
|
|
dateModified: string;
|
|
utcDateModified: string;
|
|
}
|
|
|
|
export type AttributeType = "label" | "relation" | "label-definition" | "relation-definition";
|
|
|
|
export interface AttributeRow {
|
|
attributeId?: string;
|
|
noteId?: string;
|
|
type: AttributeType;
|
|
name: string;
|
|
position?: number | null;
|
|
value?: string;
|
|
isInheritable?: boolean;
|
|
utcDateModified?: string;
|
|
}
|
|
|
|
export interface BranchRow {
|
|
branchId?: string;
|
|
noteId: string;
|
|
parentNoteId: string;
|
|
prefix?: string | null;
|
|
notePosition?: number | null;
|
|
isExpanded?: boolean;
|
|
isDeleted?: boolean;
|
|
utcDateModified?: string;
|
|
}
|
|
|
|
/**
|
|
* There are many different Note types, some of which are entirely opaque to the
|
|
* end user. Those types should be used only for checking against, they are
|
|
* not for direct use.
|
|
*/
|
|
export const ALLOWED_NOTE_TYPES = [
|
|
"file",
|
|
"image",
|
|
"search",
|
|
"noteMap",
|
|
"launcher",
|
|
"doc",
|
|
"contentWidget",
|
|
"text",
|
|
"relationMap",
|
|
"render",
|
|
"canvas",
|
|
"mermaid",
|
|
"book",
|
|
"webView",
|
|
"code",
|
|
"mindMap"
|
|
] as const;
|
|
export type NoteType = (typeof ALLOWED_NOTE_TYPES)[number];
|
|
|
|
export interface NoteRow {
|
|
noteId: string;
|
|
deleteId?: string;
|
|
title: string;
|
|
type: NoteType;
|
|
mime: string;
|
|
isProtected?: boolean;
|
|
isDeleted?: boolean;
|
|
blobId?: string;
|
|
dateCreated?: string;
|
|
dateModified?: string;
|
|
utcDateCreated?: string;
|
|
utcDateModified?: string;
|
|
content?: string | Buffer;
|
|
}
|
|
|