UNPKG

@pagenote/notion-database

Version:

make notion as a real-database for server

133 lines (132 loc) 4.58 kB
import { CreateDatabaseParameters, CreatePageParameters, PageObjectResponse, QueryDatabaseParameters, UpdateDatabaseParameters, UpdatePageParameters } from '@notionhq/client/build/src/api-endpoints'; /** * 由于 notion 官方SDK 没有保留所有属性,所以这里复制/计算了一份,最终的目标是删除本文件 */ export type EmptyObject = Record<string, never>; declare type ExistencePropertyFilter = { is_empty: true; } | { is_not_empty: true; }; export type TextPropertyFilter = { equals: string; } | { does_not_equal: string; } | { contains: string; } | { does_not_contain: string; } | { starts_with: string; } | { ends_with: string; } | ExistencePropertyFilter; export type NumberPropertyFilter = { equals: number; } | { does_not_equal: number; } | { greater_than: number; } | { less_than: number; } | { greater_than_or_equal_to: number; } | { less_than_or_equal_to: number; } | ExistencePropertyFilter; export type MultiSelectPropertyFilter = { contains: string; } | { does_not_contain: string; } | ExistencePropertyFilter; export type SelectPropertyFilter = { equals: string; } | { does_not_equal: string; } | ExistencePropertyFilter; export type CheckboxPropertyFilter = { equals: boolean; } | { does_not_equal: boolean; }; export type DatePropertyFilter = { equals: string; } | { before: string; } | { after: string; } | { on_or_before: string; } | { on_or_after: string; } | { past_week: EmptyObject; } | { past_month: EmptyObject; } | { past_year: EmptyObject; } | { next_week: EmptyObject; } | { next_month: EmptyObject; } | { next_year: EmptyObject; } | ExistencePropertyFilter; export declare type Filter = PickChild<QueryDatabaseParameters, 'filter'>; type PickTypeFromRecord<T> = T extends Record<string, infer A> ? A : unknown; export type ObjectType = string | Date | number | [void] | string[] | [Date, Date] | boolean | undefined | null; export declare enum SupportNotionTypes { title = "title", rich_text = "rich_text", number = "number", checkbox = "checkbox", multi_select = "multi_select", date = "date", select = "select", status = "status", url = "url" } export declare const supportNotionTypesArray: SupportNotionTypes[]; export declare enum UnSupportNotionTypes { files = "files", email = "email" } type PickChild<T, K extends keyof T> = { [key in keyof T]: T[key]; }[K]; export type NotionResponsePropertyData = PickChild<PageObjectResponse, 'properties'>; export type CreateDatabasePageParameters = Extract<CreatePageParameters, { parent: { database_id: string; type?: 'database_id'; }; }>; export type UpdateDatabasePageParameters<T> = Extract<T, { type?: string; }>; export type NotionDatabaseProperties = UpdateDatabasePageParameters<NotionTableUpdatePropertiesType>; export type CreateDatabaseItemProperties = PickChild<CreateDatabasePageParameters, 'properties'>; export type UpdatePageProperties = PickChild<UpdatePageParameters, 'properties'>; export type NotionResponsePropertyType = PickTypeFromRecord<NotionResponsePropertyData>; export type NotionRequestPropertyType = PickTypeFromRecord<CreateDatabaseItemProperties>; type CreateTableParameters = Extract<CreateDatabaseParameters, { parent: { page_id: string; type?: 'page_id'; }; }>; export type NotionTableCreateProperties = PickChild<CreateTableParameters, 'properties'>; export type NotionTableCreatePropertiesType = PickTypeFromRecord<NotionTableCreateProperties>; type UpdateTableParameters = Extract<UpdateDatabaseParameters, { database_id: any; }>; export type NotionTableUpdateProperties = Exclude<PickChild<UpdateTableParameters, 'properties'>, undefined>; export type NotionTableUpdatePropertiesType = PickTypeFromRecord<NotionTableUpdateProperties>; export type NumberOperator = 'equals' | 'does_not_equal' | 'greater_than' | 'less_than' | 'greater_than_or_equal_to' | 'less_than_or_equal_to'; export type MulSelectOperator = 'contains' | 'does_not_contain'; export type SelectOperator = 'equals' | 'does_not_equal'; export type CheckboxOperator = 'equals' | 'does_not_equal'; export type TextOperator = 'equals' | 'does_not_equal' | 'contains' | 'does_not_contain' | 'starts_with' | 'ends_with'; export type DateOperator = 'equals' | 'before' | 'after' | 'on_or_before' | 'on_or_after'; export type NotionOperator = NumberOperator | MulSelectOperator | CheckboxOperator | TextOperator | DateOperator | SelectOperator; export {};