42 lines
987 B
JavaScript
42 lines
987 B
JavaScript
import Base from './base.js';
|
|
import Flow from './flow.js';
|
|
import { generateIconUrl } from '../helpers/generate-icon-url.js';
|
|
|
|
class Template extends Base {
|
|
static tableName = 'templates';
|
|
|
|
static jsonSchema = {
|
|
type: 'object',
|
|
required: ['name'],
|
|
|
|
properties: {
|
|
id: { type: 'string', format: 'uuid' },
|
|
name: { type: 'string', minLength: 1 },
|
|
flowData: { type: 'object' },
|
|
createdAt: { type: 'string' },
|
|
updatedAt: { type: 'string' },
|
|
},
|
|
};
|
|
|
|
static async create({ name, flowId }) {
|
|
const flow = await Flow.query().findById(flowId).throwIfNotFound();
|
|
const flowData = await flow.export();
|
|
|
|
return this.query().insertAndFetch({ name, flowData });
|
|
}
|
|
|
|
getFlowDataWithIconUrls() {
|
|
if (!this.flowData) return null;
|
|
|
|
return {
|
|
...this.flowData,
|
|
steps: this.flowData.steps?.map((step) => ({
|
|
...step,
|
|
iconUrl: generateIconUrl(step.appKey),
|
|
})),
|
|
};
|
|
}
|
|
}
|
|
|
|
export default Template;
|