Initial implementation
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
export type AccessLevel = 'read' | 'write';
|
||||
|
||||
export interface NotebookGrant {
|
||||
notebook_id: string;
|
||||
access: AccessLevel;
|
||||
}
|
||||
|
||||
export interface ClientPermissions {
|
||||
full_access: boolean;
|
||||
create_notebooks: boolean;
|
||||
create_tags: boolean;
|
||||
notebooks: NotebookGrant[];
|
||||
}
|
||||
|
||||
export interface ClientIdentity {
|
||||
client_id: string;
|
||||
permissions: ClientPermissions;
|
||||
}
|
||||
|
||||
export interface Notebook {
|
||||
id: string;
|
||||
parent_id: string;
|
||||
title: string;
|
||||
created_time?: number;
|
||||
updated_time?: number;
|
||||
deleted_time?: number;
|
||||
}
|
||||
|
||||
export type NotebookView = Notebook & {
|
||||
access: AccessLevel | 'path_only';
|
||||
children: NotebookView[];
|
||||
};
|
||||
|
||||
export interface Note {
|
||||
id: string;
|
||||
parent_id: string;
|
||||
title: string;
|
||||
body: string;
|
||||
created_time: number;
|
||||
updated_time: number;
|
||||
user_created_time?: number;
|
||||
user_updated_time?: number;
|
||||
deleted_time: number;
|
||||
is_todo: number;
|
||||
is_conflict: number;
|
||||
}
|
||||
|
||||
export interface Tag {
|
||||
id: string;
|
||||
title: string;
|
||||
created_time?: number;
|
||||
updated_time?: number;
|
||||
}
|
||||
|
||||
export interface RevisionRecord {
|
||||
id: string;
|
||||
parent_id: string;
|
||||
item_id: string;
|
||||
item_type: number;
|
||||
item_updated_time: number;
|
||||
title_diff: string;
|
||||
body_diff: string;
|
||||
metadata_diff: string;
|
||||
encryption_applied: number;
|
||||
created_time?: number;
|
||||
updated_time?: number;
|
||||
}
|
||||
|
||||
export interface NoteRevision {
|
||||
id: string;
|
||||
note_id: string;
|
||||
item_updated_time: number;
|
||||
title: string;
|
||||
body: string;
|
||||
parent_id: string;
|
||||
user_created_time?: number;
|
||||
user_updated_time?: number;
|
||||
}
|
||||
|
||||
export interface Change {
|
||||
id: number;
|
||||
item_type: number | string;
|
||||
item_id: string;
|
||||
type: number | string;
|
||||
created_time: number;
|
||||
}
|
||||
|
||||
export interface Page<T> {
|
||||
items: T[];
|
||||
page: number;
|
||||
limit: number;
|
||||
has_more: boolean;
|
||||
}
|
||||
|
||||
export interface ChangePage {
|
||||
items: Change[];
|
||||
cursor: string;
|
||||
has_more: boolean;
|
||||
}
|
||||
|
||||
export interface Pagination {
|
||||
page: number;
|
||||
limit: number;
|
||||
order_by?: string;
|
||||
order_dir?: 'ASC' | 'DESC';
|
||||
}
|
||||
|
||||
export type SyncStatus =
|
||||
| { status: 'synced'; local_change_applied: boolean }
|
||||
| {
|
||||
status: 'pending';
|
||||
local_change_applied: true;
|
||||
operation_id: string;
|
||||
warning: string;
|
||||
};
|
||||
|
||||
export interface OperationResult<T> {
|
||||
data: T;
|
||||
sync: SyncStatus;
|
||||
}
|
||||
Reference in New Issue
Block a user