UNPKG

@kevisual/noco

Version:

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

97 lines (94 loc) 2.31 kB
import { Query } from './api.ts'; import { Meta } from './meta/index.ts'; import { Record } from './record.ts'; import { Upload } from './data/upload.ts'; export type NocoApiOptions = { table?: string; token?: string; baseURL?: string; }; export class NocoApi { query: Query; record: Record; meta: Meta; upload: Upload; constructor(options?: NocoApiOptions) { const table = options?.table; const token = options?.token; const baseURL = options?.baseURL; this.query = new Query({ baseURL, token }); this.meta = new Meta({ query: this.query }); this.upload = new Upload(this.query); this.record = new Record({ query: this.query, table, meta: this.meta }); } get baseURL() { return this.query.baseURL; } set baseURL(url: string) { this.query.baseURL = url; } async getTableByName(table: string, baseId: string) { const res = await this.meta.tables.list(baseId) if (res.code === 200) { const tableMeta = res.data.list.find(t => t.table_name === table); return tableMeta; } return null; } /** * * @param baseId * @param data */ async createExampleTable(baseId: string, data?: ExampleTableData) { const defaultColumns = [ { title: 'Id', uidt: "ID", pk: true, pv: true, }, { title: '标题', uidt: 'SingleLineText', description: '标题列', }, { title: '摘要', uidt: 'LongText', description: '摘要列', }, { title: '标签', uidt: 'MultiSelect', description: '标签列', }, { title: '描述', uidt: 'LongText', description: '描述列', }, { title: '链接', uidt: 'URL', description: '链接列', }] const columns = data?.columns || []; for (const col of defaultColumns) { if (!columns.find(c => c.title === col.title)) { columns.push(col); } } const res = await this.meta.tables.createTable(baseId, { title: data?.title || '基本表', description: data?.description || '', columns: columns }) return res; } } export type ExampleTableData = { title?: string; description?: string; columns?: any[]; }