yao/tests/widgets/dyform/export.js
2022-08-05 19:46:26 +08:00

152 lines
2.8 KiB
JavaScript

/**
* Export Models, APIs, Flows, Tables, Tasks, Schedules, etc.
*/
/**
* Export Apis
* @param {*} dsl
* @returns
*/
function Apis() {
let apis = {};
apis[`dyform`] = dyformAPI();
return apis;
}
/**
* Export Models
* @param {*} dsl
* @returns
*/
function Models(name, dsl) {
let models = {};
models[`dyform.${name}`] = dyformModel(name);
return models;
}
/**
* Export Flows
* @param {*} dsl
* @returns
*/
function Flows(name, dsl) {
return [{}];
}
/**
* Export Tables
* @param {*} dsl
* @returns
*/
function Tables(name, dsl) {
let tables = {};
tables[`dyform.${name}`] = dyformTable(name);
return tables;
}
/**
* Export Tasks
* @param {*} dsl
* @returns
*/
function Tasks(name, dsl) {
let tasks = {};
tasks[`dyform.${name}`] = dyformTask(name);
return tasks;
}
/**
* Export Schedules
* @param {*} dsl
* @returns
*/
function Schedules(name, dsl) {
let schedules = {};
schedules[`dyform.${name}`] = dyformSchedule(name);
return schedules;
}
function dyformSchedule(name) {
return {
name: `Schedule ${name}`,
schedule: "*/1 * * * *",
process: `widgets.dyform.Save`,
args: [name],
};
}
function dyformTask(name) {
return {
name: `Task ${name}`,
worker_nums: 2,
attempts: 3,
attempt_after: 200,
timeout: 2,
size: 1000,
process: `widgets.dyform.Save`,
args: [name],
};
}
function dyformAPI() {
return {
name: `dyform API`,
version: "1.0.0",
description: "dyform APIs",
group: "dyform",
guard: "-",
paths: [
{
path: "/:name/search",
method: "GET",
process: `widgets.dyform.Save`,
in: ["$param.name", ":query"],
out: { status: 200, type: "application/json" },
},
],
};
}
function dyformTable(name) {
return {
name: `dyform_${name}`,
version: "1.0.0",
decription: "云服务库",
bind: { model: `dyform.${name}` },
apis: {},
columns: {},
filters: {},
list: {
primary: "id",
layout: { columns: [{ name: "ID", width: 6 }], filters: [] },
actions: {},
},
edit: {
primary: "id",
layout: { fieldset: [{ columns: [{ name: "ID", width: 6 }] }] },
actions: { cancel: {} },
},
insert: {},
view: {},
};
}
function dyformModel(name) {
return {
table: { name: `dyform_${name}` },
columns: [
{ label: "DYFORM ID", name: "id", type: "ID" },
{ label: "SN", name: "sn", type: "string", length: 20, unique: true },
{ label: "NAME", name: "name", type: "string", length: 200, index: true },
{ label: "SOURCE", name: "source", type: "JSON", nullable: true },
{
label: "TITLE",
name: "title",
type: "string",
length: 200,
index: true,
},
],
indexes: [],
};
}