@pagenote/notion-database
Version:
make notion as a real-database for server
133 lines (132 loc) • 4.58 kB
TypeScript
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 {};