tachybase_todo/packages/client/src/schemas/index.tsx
2021-08-17 11:24:59 +08:00

108 lines
2.1 KiB
TypeScript

import React from 'react';
import { ISchema as IFormilySchema, observer, Schema, useField } from '@formily/react';
import { extend } from 'umi-request';
import './designable-bar/style.less';
export type FormilyISchema = IFormilySchema
export interface ISchema extends IFormilySchema {
[key: string]: any;
properties?: {
[key: string]: ISchema | IFormilySchema;
};
}
export * from '../components/schema-renderer';
export function useDefaultAction() {
return {
async run() {},
};
}
export const request = extend({
prefix: process.env.API_URL,
timeout: 1000,
});
console.log('process.env.API_URL', process.env.API_URL);
export async function createOrUpdateCollection(data: any) {
return await request('collections:createOrUpdate', {
method: 'post',
data,
});
}
export async function createCollectionField(collectionName: string, data: any) {
return await request(`collections/${collectionName}/fields:create`, {
method: 'post',
data,
});
}
export async function deleteCollection(name) {
await request('collections:destroy', {
method: 'post',
params: {
filter: {
name,
},
},
});
}
export async function createSchema(schema: ISchema) {
if (!schema) {
return;
}
if (!schema['key']) {
return;
}
return await request('ui_schemas:create', {
method: 'post',
data: schema.toJSON(),
});
}
export async function collectionMoveToAfter(source, target) {
if (source && target) {
return request(`collections:sort/${source}`, {
method: 'post',
data: {
field: 'sort',
target: {
name: target,
},
},
});
}
}
export async function updateSchema(schema: ISchema) {
if (!schema) {
return;
}
if (!schema['key']) {
return;
}
return await request(`ui_schemas:update/${schema.key}`, {
method: 'post',
data: Schema.isSchemaInstance(schema) ? schema.toJSON() : schema,
});
}
export async function removeSchema(schema: ISchema) {
if (!schema['key']) {
return;
}
await request('ui_schemas:destroy', {
method: 'post',
params: {
filter: {
key: schema['key'],
},
},
});
}