ionian/packages/server/src/model/doc.ts

80 lines
1.9 KiB
TypeScript

import type {
DocumentBody,
QueryListOption,
Document,
db
} from "dbtype";
type DBDocument = db.Document;
export type {
Document,
DBDocument
};
export interface DocumentAccessor {
/**
* rescan document
* it will update document's metadata and tags from file.
*/
rescanDocument(c: Document): Promise<void>;
/**
* find list by option
* @returns documents list
*/
findList: (option?: QueryListOption) => Promise<Document[]>;
/**
* @returns document if exist, otherwise undefined
*/
findById: (id: number, tagload?: boolean) => Promise<Document | undefined>;
/**
* find by base path and filename.
* if you call this function with filename, its return array length is 0 or 1.
*/
findByPath: (basepath: string, filename?: string) => Promise<Document[]>;
/**
* find by gid list
* @param gid_list
* @returns Document list
*/
findByGidList: (gid_list: number[]) => Promise<Document[]>;
/**
* find deleted content
*/
findDeleted: (content_type: string) => Promise<Document[]>;
/**
* search by in document
*/
search: (search_word: string) => Promise<Document[]>;
/**
* update document except tag.
*/
update: (c: Partial<Document> & { id: number }) => Promise<boolean>;
/**
* add document
*/
add: (c: DocumentBody) => Promise<number>;
/**
* add document list
*/
addList: (content_list: DocumentBody[]) => Promise<number[]>;
/**
* delete document
* @returns if it exists, return true.
*/
del: (id: number) => Promise<boolean>;
/**
* @param c Valid Document
* @param tagname tag name to add
* @returns if success, return true
*/
addTag: (c: Document, tag_name: string) => Promise<boolean>;
/**
* @returns if success, return true
*/
delTag: (c: Document, tag_name: string) => Promise<boolean>;
/**
* get similar document
* @returns similar document list
*/
getSimilarDocument: (c: Document) => Promise<Document[]>;
}