UNPKG

@kevisual/noco

Version:

一个轻量级的 NocoDB API SDK,支持表记录操作和 Base 管理功能。

149 lines (140 loc) 3.91 kB
import { Query, ResponseList } from '../api.ts'; export type BaseOptions = { query: Query; }; type TableMetaInfo = { id: string; source_id: string; base_id: string; table_name: string; title: string; type: string; meta: any; schema: any; enabled: boolean; mm: boolean; tags: string | null; pinned: boolean | null; deleted: boolean | null; order: number; created_at: string; updated_at: string; description: string; synced: boolean; created_by: string | null; owned_by: string | null; uuid: string | null; password: string | null; fk_custom_url_id: string | null; views?: Array<any>; columns?: Array<any>; columnsById?: Record<string, any>; columnHash?: string; } export class MetaTables { query: Query; constructor(options?: BaseOptions) { this.query = options?.query; } /** * 列出所有 tables */ async list(baseId: string): Promise<ResponseList<TableMetaInfo>> { return this.query.makeRequest(`/api/v2/meta/bases/${baseId}/tables`, { method: 'GET', }); } async createTable(baseId: string, data: CreateTableData): Promise<{ code: number; data: TableMetaInfo }> { return this.query.makeRequest(`/api/v2/meta/bases/${baseId}/tables`, { method: 'POST', data, }); } async getTableMeta(tableId: string): Promise<{ code: number; data: TableMetaInfo }> { return this.query.makeRequest(`/api/v2/meta/tables/${tableId}`, { method: 'GET', }); } async createColumn(tableId: string, data: any): Promise<{ code: number; data: any }> { return this.query.makeRequest(`/api/v2/meta/tables/${tableId}/columns`, { method: 'POST', data, }); } } export type CreateColumnData = { title: string; uidt?: ColumnTypes description?: string; /** id 自增的必填项 */ pk?: boolean; /** * 是否为主键 primay 的值 */ pv?: boolean; /** 是否必填 */ rqd?: boolean; /** 单元格默认值 */ cdf?: string; /** * 列选项配置 */ colOptions?: { options?: Array<{ title: string; color?: string; [key: string]: any; }>; }; /** * 其他元信息 */ meta?: Record<string, any>; } export const columnTypes = [ 'SingleLineText', // 单行文本 'LongText', // 长文本 'PhoneNumber', // 电话号码 'Email', // 邮箱 'URL', // 链接 'Number', // 数字 'Decimal', // 小数 'Percent', // 百分比 'Currency', // 货币 'Duration', // 时长 'Date', // 日期 'Time', // 时间 'DateTime', // 日期时间 'Year', // 年份 'SingleSelect', // 单选 'MultiSelect', // 多选 'User', // 用户 'Attachment', // 附件 'Checkbox', // 复选框 'Rating', // 评分 'Button', // 按钮 'Formula', // 公式 'Barcode', // 条形码 'QRCode', // 二维码 'Links', // 链接关系 'LinkToAnotherRecord', // 关联记录 'Lookup', // 查找 'Rollup', // 汇总 'ID', // ID 'CreatedTime', // 创建时间 'LastModifiedTime', // 最后修改时间 'CreatedBy', // 创建者 'LastModifiedBy', // 最后修改者 'GeoData', // 地理数据 'Geometry', // 几何图形 'JSON', // JSON 'SpecificDBType' // 特定数据库类型 ] as const; export type ColumnTypes = typeof columnTypes[number]; export type CreateTableData = { table_name?: string; title: string; description?: string; columns: CreateColumnData[]; [key: string]: any; }