mirror of
https://github.com/OneUptime/oneuptime.git
synced 2026-04-06 00:32:12 +02:00
add model and service
This commit is contained in:
@@ -103,6 +103,20 @@ enum Permission {
|
||||
CanEditWorkflow = 'CanEditWorkflow',
|
||||
CanReadWorkflow = 'CanReadWorkflow',
|
||||
|
||||
// Workflow Permissions (Owner Permission)
|
||||
CanCreateWorkflowLog = 'CanCreateWorkflowLog',
|
||||
CanDeleteWorkflowLog = 'CanDeleteWorkflowLog',
|
||||
CanEditWorkflowLog = 'CanEditWorkflowLog',
|
||||
CanReadWorkflowLog = 'CanReadWorkflowLog',
|
||||
|
||||
|
||||
// Workflow Permissions (Owner Permission)
|
||||
CanCreateWorkflowVariable = 'CanCreateWorkflowVariable',
|
||||
CanDeleteWorkflowVariable = 'CanDeleteWorkflowVariable',
|
||||
CanEditWorkflowVariable = 'CanEditWorkflowVariable',
|
||||
CanReadWorkflowVariable = 'CanReadWorkflowVariable',
|
||||
|
||||
|
||||
// Probe Permissions (Owner Permission)
|
||||
CanCreateStatusPageGroup = 'CanCreateStatusPageGroup',
|
||||
CanDeleteStatusPageGroup = 'CanDeleteStatusPageGroup',
|
||||
@@ -850,6 +864,76 @@ export class PermissionHelper {
|
||||
isAccessControlPermission: false,
|
||||
},
|
||||
|
||||
|
||||
|
||||
{
|
||||
permission: Permission.CanCreateWorkflowVariable,
|
||||
title: 'Can Create Workflow Variables',
|
||||
description:
|
||||
'A user assigned this permission can create Workflow Variables in this project.',
|
||||
isAssignableToTenant: true,
|
||||
isAccessControlPermission: false,
|
||||
},
|
||||
{
|
||||
permission: Permission.CanDeleteWorkflowVariable,
|
||||
title: 'Can Delete Workflow Variables',
|
||||
description:
|
||||
'A user assigned this permission can delete Workflow Variables in this project.',
|
||||
isAssignableToTenant: true,
|
||||
isAccessControlPermission: false,
|
||||
},
|
||||
{
|
||||
permission: Permission.CanEditWorkflowVariable,
|
||||
title: 'Can Edit Workflow Variables',
|
||||
description:
|
||||
'A user assigned this permission can edit Workflow Variables in this project.',
|
||||
isAssignableToTenant: true,
|
||||
isAccessControlPermission: false,
|
||||
},
|
||||
{
|
||||
permission: Permission.CanReadWorkflowVariable,
|
||||
title: 'Can Read Workflow Variables',
|
||||
description:
|
||||
'A user assigned this permission can read Workflow Variables in this project.',
|
||||
isAssignableToTenant: true,
|
||||
isAccessControlPermission: false,
|
||||
},
|
||||
|
||||
|
||||
|
||||
{
|
||||
permission: Permission.CanCreateWorkflowLog,
|
||||
title: 'Can Create Workflow Log',
|
||||
description:
|
||||
'A user assigned this permission can create Workflow Log in this project.',
|
||||
isAssignableToTenant: true,
|
||||
isAccessControlPermission: false,
|
||||
},
|
||||
{
|
||||
permission: Permission.CanDeleteWorkflowLog,
|
||||
title: 'Can Delete Workflow Log',
|
||||
description:
|
||||
'A user assigned this permission can delete Workflow Log in this project.',
|
||||
isAssignableToTenant: true,
|
||||
isAccessControlPermission: false,
|
||||
},
|
||||
{
|
||||
permission: Permission.CanEditWorkflowLog,
|
||||
title: 'Can Edit Workflow Log',
|
||||
description:
|
||||
'A user assigned this permission can edit Workflow Log in this project.',
|
||||
isAssignableToTenant: true,
|
||||
isAccessControlPermission: false,
|
||||
},
|
||||
{
|
||||
permission: Permission.CanReadWorkflowLog,
|
||||
title: 'Can Read Workflow Log',
|
||||
description:
|
||||
'A user assigned this permission can read Workflow Log in this project.',
|
||||
isAssignableToTenant: true,
|
||||
isAccessControlPermission: false,
|
||||
},
|
||||
|
||||
{
|
||||
permission: Permission.CanCreateStatusPageGroup,
|
||||
title: 'Can Create Status Page Group',
|
||||
|
||||
@@ -22,7 +22,7 @@ export default class BaseModelComponent {
|
||||
{
|
||||
type: ComponentInputType.Query,
|
||||
name: 'Filter',
|
||||
description: 'Please fill out this filter',
|
||||
description: `Filter on ${model.singularName}`,
|
||||
required: false,
|
||||
id: 'filter',
|
||||
},
|
||||
@@ -30,8 +30,8 @@ export default class BaseModelComponent {
|
||||
returnValues: [
|
||||
{
|
||||
id: 'model',
|
||||
name: 'Model',
|
||||
description: 'Model fetched from the database',
|
||||
name: `${model.singularName}`,
|
||||
description: `${model.singularName} fetched from the database`,
|
||||
type: ComponentInputType.BaseModel,
|
||||
required: false,
|
||||
},
|
||||
@@ -79,8 +79,8 @@ export default class BaseModelComponent {
|
||||
returnValues: [
|
||||
{
|
||||
id: 'model',
|
||||
name: 'Model',
|
||||
description: 'Model fetched from the database',
|
||||
name: `${model.singularName}`,
|
||||
description: `${model.singularName} fetched from the database`,
|
||||
type: ComponentInputType.BaseModelArray,
|
||||
required: false,
|
||||
},
|
||||
@@ -111,6 +111,38 @@ export default class BaseModelComponent {
|
||||
}
|
||||
|
||||
if (model.enableWorkflowOn.delete) {
|
||||
|
||||
components.push({
|
||||
id: 'on-delete',
|
||||
title: `On Delete ${model.singularName}`,
|
||||
category: `${model.singularName}`,
|
||||
description: `When the ${model.singularName} is deleted...`,
|
||||
iconProp: IconProp.ArrowCircleLeft,
|
||||
type: ComponentType.Trigger,
|
||||
arguments: [
|
||||
|
||||
],
|
||||
returnValues: [{
|
||||
id: 'model',
|
||||
name: `${model.singularName}`,
|
||||
description: `${model.singularName} deleted in the database`,
|
||||
type: ComponentInputType.BaseModel,
|
||||
required: false,
|
||||
},],
|
||||
inPorts: [
|
||||
|
||||
],
|
||||
outPorts: [
|
||||
{
|
||||
title: 'Success',
|
||||
description:
|
||||
'This is executed when the query executes successfully',
|
||||
id: 'success',
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
|
||||
components.push({
|
||||
id: 'delete-one',
|
||||
title: `Delete One ${model.singularName}`,
|
||||
@@ -195,6 +227,38 @@ export default class BaseModelComponent {
|
||||
}
|
||||
|
||||
if (model.enableWorkflowOn.create) {
|
||||
|
||||
components.push({
|
||||
id: 'on-create',
|
||||
title: `On Create ${model.singularName}`,
|
||||
category: `${model.singularName}`,
|
||||
description: `When the ${model.singularName} is created...`,
|
||||
iconProp: IconProp.ArrowCircleLeft,
|
||||
type: ComponentType.Trigger,
|
||||
arguments: [
|
||||
|
||||
],
|
||||
returnValues: [{
|
||||
id: 'model',
|
||||
name: `${model.singularName}`,
|
||||
description: `${model.singularName} created in the database`,
|
||||
type: ComponentInputType.BaseModel,
|
||||
required: false,
|
||||
},],
|
||||
inPorts: [
|
||||
|
||||
],
|
||||
outPorts: [
|
||||
{
|
||||
title: 'Success',
|
||||
description:
|
||||
'This is executed when the model is created successfully.',
|
||||
id: 'success',
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
|
||||
components.push({
|
||||
id: 'create-one',
|
||||
title: `Create One ${model.singularName}`,
|
||||
@@ -206,7 +270,7 @@ export default class BaseModelComponent {
|
||||
{
|
||||
id: 'json',
|
||||
name: 'JSON Object',
|
||||
description: 'Model represented as JSON',
|
||||
description: `${model.singularName} represented as JSON`,
|
||||
type: ComponentInputType.JSON,
|
||||
required: true,
|
||||
},
|
||||
@@ -214,8 +278,8 @@ export default class BaseModelComponent {
|
||||
returnValues: [
|
||||
{
|
||||
id: 'model',
|
||||
name: 'Model',
|
||||
description: 'Model created in the database',
|
||||
name: `${model.singularName}`,
|
||||
description: `${model.singularName} created in the database`,
|
||||
type: ComponentInputType.BaseModel,
|
||||
required: false,
|
||||
},
|
||||
@@ -263,7 +327,7 @@ export default class BaseModelComponent {
|
||||
returnValues: [
|
||||
{
|
||||
id: 'models',
|
||||
name: 'Model List',
|
||||
name: `${model.pluralName}`,
|
||||
description: 'Models created in the database',
|
||||
type: ComponentInputType.BaseModel,
|
||||
required: false,
|
||||
@@ -295,6 +359,38 @@ export default class BaseModelComponent {
|
||||
}
|
||||
|
||||
if (model.enableWorkflowOn.update) {
|
||||
|
||||
components.push({
|
||||
id: 'on-update',
|
||||
title: `On Update ${model.singularName}`,
|
||||
category: `${model.singularName}`,
|
||||
description: `When the ${model.singularName} is updated...`,
|
||||
iconProp: IconProp.ArrowCircleLeft,
|
||||
type: ComponentType.Trigger,
|
||||
arguments: [
|
||||
|
||||
],
|
||||
returnValues: [{
|
||||
id: 'model',
|
||||
name: `${model.singularName}`,
|
||||
description: `Updated ${model.singularName}`,
|
||||
type: ComponentInputType.BaseModel,
|
||||
required: true,
|
||||
},],
|
||||
inPorts: [
|
||||
|
||||
],
|
||||
outPorts: [
|
||||
{
|
||||
title: 'Success',
|
||||
description:
|
||||
`This is executed when the ${model.singularName} is updated successfully.`,
|
||||
id: 'success',
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
|
||||
components.push({
|
||||
id: 'update-one',
|
||||
title: `Update One ${model.singularName}`,
|
||||
@@ -313,7 +409,7 @@ export default class BaseModelComponent {
|
||||
{
|
||||
id: 'json',
|
||||
name: 'JSON Object',
|
||||
description: 'Model represented as JSON',
|
||||
description: `${model.singularName} represented as JSON`,
|
||||
type: ComponentInputType.JSON,
|
||||
required: true,
|
||||
},
|
||||
@@ -321,8 +417,8 @@ export default class BaseModelComponent {
|
||||
returnValues: [
|
||||
{
|
||||
id: 'model',
|
||||
name: 'Model',
|
||||
description: 'Model updated in the database',
|
||||
name: `${model.singularName}`,
|
||||
description: `${model.singularName} updated in the database`,
|
||||
type: ComponentInputType.BaseModel,
|
||||
required: false,
|
||||
},
|
||||
@@ -377,7 +473,7 @@ export default class BaseModelComponent {
|
||||
returnValues: [
|
||||
{
|
||||
id: 'models',
|
||||
name: 'Model List',
|
||||
name: `${model.pluralName}`,
|
||||
description: 'Models updated in the database',
|
||||
type: ComponentInputType.BaseModel,
|
||||
required: false,
|
||||
|
||||
10
CommonServer/Services/WorkflowLogService.ts
Normal file
10
CommonServer/Services/WorkflowLogService.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import PostgresDatabase from '../Infrastructure/PostgresDatabase';
|
||||
import Model from 'Model/Models/WorkflowLog';
|
||||
import DatabaseService from './DatabaseService';
|
||||
|
||||
export class Service extends DatabaseService<Model> {
|
||||
public constructor(postgresDatabase?: PostgresDatabase) {
|
||||
super(Model, postgresDatabase);
|
||||
}
|
||||
}
|
||||
export default new Service();
|
||||
10
CommonServer/Services/WorkflowVariableService.ts
Normal file
10
CommonServer/Services/WorkflowVariableService.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import PostgresDatabase from '../Infrastructure/PostgresDatabase';
|
||||
import Model from 'Model/Models/WorkflowVariable';
|
||||
import DatabaseService from './DatabaseService';
|
||||
|
||||
export class Service extends DatabaseService<Model> {
|
||||
public constructor(postgresDatabase?: PostgresDatabase) {
|
||||
super(Model, postgresDatabase);
|
||||
}
|
||||
}
|
||||
export default new Service();
|
||||
@@ -25,6 +25,19 @@ import WorkflowService, {
|
||||
Service as WorkflowServiceType,
|
||||
} from 'CommonServer/Services/WorkflowService';
|
||||
|
||||
|
||||
import WorkflowLog from 'Model/Models/WorkflowLog';
|
||||
import WorkflowLogService, {
|
||||
Service as WorkflowLogServiceType,
|
||||
} from 'CommonServer/Services/WorkflowLogService';
|
||||
|
||||
|
||||
import WorkflowVariable from 'Model/Models/WorkflowVariable';
|
||||
import WorkflowVariableService, {
|
||||
Service as WorkflowVariableServiceType,
|
||||
} from 'CommonServer/Services/WorkflowVariableService';
|
||||
|
||||
|
||||
import Probe from 'Model/Models/Probe';
|
||||
import ProbeService, {
|
||||
Service as ProbeServiceType,
|
||||
@@ -281,6 +294,22 @@ app.use(
|
||||
).getRouter()
|
||||
);
|
||||
|
||||
app.use(
|
||||
`/${APP_NAME.toLocaleLowerCase()}`,
|
||||
new BaseAPI<WorkflowVariable, WorkflowVariableServiceType>(
|
||||
WorkflowVariable,
|
||||
WorkflowVariableService
|
||||
).getRouter()
|
||||
);
|
||||
|
||||
app.use(
|
||||
`/${APP_NAME.toLocaleLowerCase()}`,
|
||||
new BaseAPI<WorkflowLog, WorkflowLogServiceType>(
|
||||
WorkflowLog,
|
||||
WorkflowLogService
|
||||
).getRouter()
|
||||
);
|
||||
|
||||
app.use(
|
||||
`/${APP_NAME.toLocaleLowerCase()}`,
|
||||
new BaseAPI<Domain, DomainServiceType>(Domain, DomainService).getRouter()
|
||||
|
||||
@@ -65,6 +65,8 @@ import GreenlockCertificate from './GreenlockCertificate';
|
||||
|
||||
// Workflows.
|
||||
import Workflow from './Workflow';
|
||||
import WorkflowVariables from './WorkflowVariable';
|
||||
import WorkflowLog from './WorkflowLog';
|
||||
|
||||
export default [
|
||||
User,
|
||||
@@ -114,4 +116,6 @@ export default [
|
||||
GreenlockCertificate,
|
||||
|
||||
Workflow,
|
||||
WorkflowVariables,
|
||||
WorkflowLog
|
||||
];
|
||||
|
||||
193
Model/Models/WorkflowLog.tsx
Normal file
193
Model/Models/WorkflowLog.tsx
Normal file
@@ -0,0 +1,193 @@
|
||||
import { Column, Entity, Index, JoinColumn, ManyToOne } from 'typeorm';
|
||||
import Project from './Project';
|
||||
import CrudApiEndpoint from 'Common/Types/Database/CrudApiEndpoint';
|
||||
import Route from 'Common/Types/API/Route';
|
||||
import TableColumnType from 'Common/Types/Database/TableColumnType';
|
||||
import TableColumn from 'Common/Types/Database/TableColumn';
|
||||
import ColumnType from 'Common/Types/Database/ColumnType';
|
||||
import ObjectID from 'Common/Types/ObjectID';
|
||||
import TableAccessControl from 'Common/Types/Database/AccessControl/TableAccessControl';
|
||||
import Permission from 'Common/Types/Permission';
|
||||
import ColumnAccessControl from 'Common/Types/Database/AccessControl/ColumnAccessControl';
|
||||
import TenantColumn from 'Common/Types/Database/TenantColumn';
|
||||
import SingularPluralName from 'Common/Types/Database/SingularPluralName';
|
||||
import BaseModel from 'Common/Models/BaseModel';
|
||||
|
||||
@TenantColumn('projectId')
|
||||
@TableAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanCreateWorkflowLog,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadWorkflowLog,
|
||||
],
|
||||
delete: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanDeleteWorkflowLog,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanEditWorkflowLog,
|
||||
],
|
||||
})
|
||||
@CrudApiEndpoint(new Route('/workflow-log'))
|
||||
@Entity({
|
||||
name: 'WorkflowLog',
|
||||
})
|
||||
@SingularPluralName('Workflow Log', 'Workflow Logs')
|
||||
export default class Workflow extends BaseModel {
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanCreateWorkflowLog,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadWorkflowLog,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@TableColumn({
|
||||
manyToOneRelationColumn: 'projectId',
|
||||
type: TableColumnType.Entity,
|
||||
modelType: Project,
|
||||
})
|
||||
@ManyToOne(
|
||||
(_type: string) => {
|
||||
return Project;
|
||||
},
|
||||
{
|
||||
eager: false,
|
||||
nullable: true,
|
||||
onDelete: 'CASCADE',
|
||||
orphanedRowAction: 'nullify',
|
||||
}
|
||||
)
|
||||
@JoinColumn({ name: 'projectId' })
|
||||
public project?: Project = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanCreateWorkflowLog,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadWorkflowLog,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@Index()
|
||||
@TableColumn({
|
||||
type: TableColumnType.ObjectID,
|
||||
required: true,
|
||||
canReadOnPopulate: true,
|
||||
})
|
||||
@Column({
|
||||
type: ColumnType.ObjectID,
|
||||
nullable: false,
|
||||
transformer: ObjectID.getDatabaseTransformer(),
|
||||
})
|
||||
public projectId?: ObjectID = undefined;
|
||||
|
||||
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanCreateWorkflowLog,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadWorkflowLog,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@TableColumn({
|
||||
manyToOneRelationColumn: 'workflowId',
|
||||
type: TableColumnType.Entity,
|
||||
modelType: Workflow,
|
||||
})
|
||||
@ManyToOne(
|
||||
(_type: string) => {
|
||||
return Workflow;
|
||||
},
|
||||
{
|
||||
eager: false,
|
||||
nullable: true,
|
||||
onDelete: 'CASCADE',
|
||||
orphanedRowAction: 'nullify',
|
||||
}
|
||||
)
|
||||
@JoinColumn({ name: 'workflowId' })
|
||||
public workflow?: Workflow = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanCreateWorkflowLog,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadWorkflowLog,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@Index()
|
||||
@TableColumn({
|
||||
type: TableColumnType.ObjectID,
|
||||
required: true,
|
||||
canReadOnPopulate: true,
|
||||
})
|
||||
@Column({
|
||||
type: ColumnType.ObjectID,
|
||||
nullable: false,
|
||||
transformer: ObjectID.getDatabaseTransformer(),
|
||||
})
|
||||
public workflowId?: ObjectID = undefined;
|
||||
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanCreateWorkflowLog,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadWorkflowLog,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
],
|
||||
})
|
||||
@TableColumn({ required: false, type: TableColumnType.LongText })
|
||||
@Column({
|
||||
nullable: false,
|
||||
type: ColumnType.VeryLongText,
|
||||
})
|
||||
public logs?: string = undefined;
|
||||
|
||||
}
|
||||
379
Model/Models/WorkflowVariable.ts
Normal file
379
Model/Models/WorkflowVariable.ts
Normal file
@@ -0,0 +1,379 @@
|
||||
import { Column, Entity, Index, JoinColumn, ManyToOne } from 'typeorm';
|
||||
import User from './User';
|
||||
import Project from './Project';
|
||||
import CrudApiEndpoint from 'Common/Types/Database/CrudApiEndpoint';
|
||||
import Route from 'Common/Types/API/Route';
|
||||
import TableColumnType from 'Common/Types/Database/TableColumnType';
|
||||
import TableColumn from 'Common/Types/Database/TableColumn';
|
||||
import ColumnType from 'Common/Types/Database/ColumnType';
|
||||
import ObjectID from 'Common/Types/ObjectID';
|
||||
import ColumnLength from 'Common/Types/Database/ColumnLength';
|
||||
import TableAccessControl from 'Common/Types/Database/AccessControl/TableAccessControl';
|
||||
import Permission from 'Common/Types/Permission';
|
||||
import ColumnAccessControl from 'Common/Types/Database/AccessControl/ColumnAccessControl';
|
||||
import UniqueColumnBy from 'Common/Types/Database/UniqueColumnBy';
|
||||
import TenantColumn from 'Common/Types/Database/TenantColumn';
|
||||
import SingularPluralName from 'Common/Types/Database/SingularPluralName';
|
||||
import BaseModel from 'Common/Models/BaseModel';
|
||||
|
||||
@TenantColumn('projectId')
|
||||
@TableAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanCreateWorkflowVariable,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadWorkflowVariable,
|
||||
],
|
||||
delete: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanDeleteWorkflowVariable,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanEditWorkflowVariable,
|
||||
],
|
||||
})
|
||||
@CrudApiEndpoint(new Route('/workflow-secret'))
|
||||
@Entity({
|
||||
name: 'WorkflowVariable',
|
||||
})
|
||||
@SingularPluralName('Workflow Secret', 'Workflow Secrets')
|
||||
export default class Workflow extends BaseModel {
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanCreateWorkflowVariable,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadWorkflowVariable,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@TableColumn({
|
||||
manyToOneRelationColumn: 'projectId',
|
||||
type: TableColumnType.Entity,
|
||||
modelType: Project,
|
||||
})
|
||||
@ManyToOne(
|
||||
(_type: string) => {
|
||||
return Project;
|
||||
},
|
||||
{
|
||||
eager: false,
|
||||
nullable: true,
|
||||
onDelete: 'CASCADE',
|
||||
orphanedRowAction: 'nullify',
|
||||
}
|
||||
)
|
||||
@JoinColumn({ name: 'projectId' })
|
||||
public project?: Project = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanCreateWorkflowVariable,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadWorkflowVariable,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@Index()
|
||||
@TableColumn({
|
||||
type: TableColumnType.ObjectID,
|
||||
required: true,
|
||||
canReadOnPopulate: true,
|
||||
})
|
||||
@Column({
|
||||
type: ColumnType.ObjectID,
|
||||
nullable: false,
|
||||
transformer: ObjectID.getDatabaseTransformer(),
|
||||
})
|
||||
public projectId?: ObjectID = undefined;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanCreateWorkflowVariable,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadWorkflowVariable,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@TableColumn({
|
||||
manyToOneRelationColumn: 'workflowId',
|
||||
type: TableColumnType.Entity,
|
||||
modelType: Workflow,
|
||||
})
|
||||
@ManyToOne(
|
||||
(_type: string) => {
|
||||
return Project;
|
||||
},
|
||||
{
|
||||
eager: false,
|
||||
nullable: true,
|
||||
onDelete: 'CASCADE',
|
||||
orphanedRowAction: 'nullify',
|
||||
}
|
||||
)
|
||||
@JoinColumn({ name: 'workflowId' })
|
||||
public workflow?: Workflow = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanCreateWorkflowVariable,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadWorkflowVariable,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@Index()
|
||||
@TableColumn({
|
||||
type: TableColumnType.ObjectID,
|
||||
required: false,
|
||||
canReadOnPopulate: true,
|
||||
})
|
||||
@Column({
|
||||
type: ColumnType.ObjectID,
|
||||
nullable: true,
|
||||
transformer: ObjectID.getDatabaseTransformer(),
|
||||
})
|
||||
public workflowId?: ObjectID = undefined;
|
||||
|
||||
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanCreateWorkflowVariable,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadWorkflowVariable,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanEditWorkflowVariable,
|
||||
],
|
||||
})
|
||||
@TableColumn({
|
||||
required: true,
|
||||
type: TableColumnType.ShortText,
|
||||
canReadOnPopulate: true,
|
||||
})
|
||||
@Column({
|
||||
nullable: false,
|
||||
type: ColumnType.ShortText,
|
||||
length: ColumnLength.ShortText,
|
||||
})
|
||||
@UniqueColumnBy('projectId')
|
||||
public name?: string = undefined;
|
||||
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanCreateWorkflowVariable,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadWorkflowVariable,
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanEditWorkflowVariable,
|
||||
],
|
||||
})
|
||||
@TableColumn({ required: false, type: TableColumnType.LongText })
|
||||
@Column({
|
||||
nullable: true,
|
||||
type: ColumnType.LongText,
|
||||
length: ColumnLength.LongText,
|
||||
})
|
||||
public description?: string = undefined;
|
||||
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanCreateWorkflowVariable,
|
||||
],
|
||||
read: [
|
||||
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
],
|
||||
})
|
||||
@TableColumn({ required: true, type: TableColumnType.LongText })
|
||||
@Column({
|
||||
nullable: false,
|
||||
type: ColumnType.VeryLongText,
|
||||
})
|
||||
public content?: string = undefined;
|
||||
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanCreateWorkflowVariable,
|
||||
],
|
||||
read: [
|
||||
|
||||
],
|
||||
update: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
],
|
||||
})
|
||||
@TableColumn({ required: true, type: TableColumnType.Boolean })
|
||||
@Column({
|
||||
nullable: false,
|
||||
default: false,
|
||||
type: ColumnType.Boolean,
|
||||
})
|
||||
public isSecret?: string = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanCreateWorkflowVariable,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadWorkflowVariable,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@TableColumn({
|
||||
manyToOneRelationColumn: 'createdByUserId',
|
||||
type: TableColumnType.Entity,
|
||||
modelType: User,
|
||||
})
|
||||
@ManyToOne(
|
||||
(_type: string) => {
|
||||
return User;
|
||||
},
|
||||
{
|
||||
eager: false,
|
||||
nullable: true,
|
||||
onDelete: 'CASCADE',
|
||||
orphanedRowAction: 'nullify',
|
||||
}
|
||||
)
|
||||
@JoinColumn({ name: 'createdByUserId' })
|
||||
public createdByUser?: User = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.CanCreateWorkflowVariable,
|
||||
],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadWorkflowVariable,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@TableColumn({ type: TableColumnType.ObjectID })
|
||||
@Column({
|
||||
type: ColumnType.ObjectID,
|
||||
nullable: true,
|
||||
transformer: ObjectID.getDatabaseTransformer(),
|
||||
})
|
||||
public createdByUserId?: ObjectID = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadWorkflowVariable,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@TableColumn({
|
||||
manyToOneRelationColumn: 'deletedByUserId',
|
||||
type: TableColumnType.ObjectID,
|
||||
})
|
||||
@ManyToOne(
|
||||
(_type: string) => {
|
||||
return User;
|
||||
},
|
||||
{
|
||||
cascade: false,
|
||||
eager: false,
|
||||
nullable: true,
|
||||
onDelete: 'CASCADE',
|
||||
orphanedRowAction: 'nullify',
|
||||
}
|
||||
)
|
||||
@JoinColumn({ name: 'deletedByUserId' })
|
||||
public deletedByUser?: User = undefined;
|
||||
|
||||
@ColumnAccessControl({
|
||||
create: [],
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadWorkflowVariable,
|
||||
],
|
||||
update: [],
|
||||
})
|
||||
@TableColumn({ type: TableColumnType.ObjectID })
|
||||
@Column({
|
||||
type: ColumnType.ObjectID,
|
||||
nullable: true,
|
||||
transformer: ObjectID.getDatabaseTransformer(),
|
||||
})
|
||||
public deletedByUserId?: ObjectID = undefined;
|
||||
}
|
||||
Reference in New Issue
Block a user