Skip to content

Commit

Permalink
Updated schema instance
Browse files Browse the repository at this point in the history
  • Loading branch information
kiran-rean committed Nov 30, 2024
1 parent 81b2e21 commit cb2c3be
Show file tree
Hide file tree
Showing 8 changed files with 65 additions and 39 deletions.
2 changes: 1 addition & 1 deletion src/api/engine/schema.instance/schema.instance.routes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export const register = (app: express.Application): void => {
router.post('/', Auth.handle(`${contextBase}.Create`, true, false, false), controller.create);
router.get('/search', Auth.handle(`${contextBase}.Search`, true, false, false), controller.search);
router.get('/:id', Auth.handle(`${contextBase}.GetById`, true, false, false), controller.getById);
router.put('/:id', Auth.handle(`${contextBase}.Update`, true, false, false), controller.update);
// router.put('/:id', Auth.handle(`${contextBase}.Update`, true, false, false), controller.update);
router.delete('/:id', Auth.handle(`${contextBase}.Delete`, true, false, false), controller.delete);

app.use('/api/v1/engine/schema-instances', router);
Expand Down
31 changes: 23 additions & 8 deletions src/api/engine/schema.instance/schema.instance.validator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
} from '../../../domain.types/engine/schema.instance.types';
import { ErrorHandler } from '../../../common/handlers/error.handler';
import BaseValidator from '../../base.validator';
import { ParamType } from '../../../domain.types/engine/engine.enums';

///////////////////////////////////////////////////////////////////////////////////////////////

Expand All @@ -15,13 +16,21 @@ export class SchemaInstanceValidator extends BaseValidator {
public validateCreateRequest = async (request: express.Request): Promise<SchemaInstanceCreateModel> => {
try {
const schema = joi.object({
SchemaId : joi.string().uuid().required(),
ContextId : joi.string().uuid().required(),
SchemaId : joi.string().uuid().required(),
ContextParams : joi.object({
Name : joi.string().max(128).required(),
Params : joi.array().items(joi.object({
Name : joi.string().max(128).required(),
Type : joi.string().valid(...Object.values(ParamType)).required(),
Description : joi.string().max(256).optional(),
Value : joi.any().required(),
})).required()
}).optional(),
});
await schema.validateAsync(request.body);
return {
SchemaId : request.body.SchemaId,
ContextId : request.body.ContextId,
SchemaId : request.body.SchemaId,
ContextParams : request.body.ContextParams
};
} catch (error) {
ErrorHandler.handleValidationError(error);
Expand All @@ -31,13 +40,19 @@ export class SchemaInstanceValidator extends BaseValidator {
public validateUpdateRequest = async (request: express.Request): Promise<SchemaInstanceUpdateModel|undefined> => {
try {
const schema = joi.object({
SchemaId : joi.string().uuid().optional(),
ContextId : joi.string().uuid().optional(),
ContextParams : joi.object({
Name : joi.string().max(128).required(),
Params : joi.array().items(joi.object({
Name : joi.string().max(128).required(),
Type : joi.string().valid(...Object.values(ParamType)).required(),
Description : joi.string().max(256).optional(),
Value : joi.any().required(),
})).required()
}).optional(),
});
await schema.validateAsync(request.body);
return {
SchemaId : request.body.SchemaId ?? null,
ContextId : request.body.ContextId ?? null,
ContextParams : request.body.ContextParams ?? null
};
} catch (error) {
ErrorHandler.handleValidationError(error);
Expand Down
1 change: 1 addition & 0 deletions src/database/mappers/engine/schema.instance.mapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ export class SchemaInstanceMapper {
} : null
};
}) : [],
Almanac : instance.Almanac,
ContextParams : instance.ContextParams,
ExecutionStarted : instance.ExecutionStarted,
ExecutionStartedTimestamp : instance.ExecutionStartedTimestamp,
Expand Down
5 changes: 4 additions & 1 deletion src/database/models/engine/schema.instance.model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import {
} from 'typeorm';
import { Schema } from "./schema.model";
import { NodeInstance } from "./node.instance.model";
import { ContextParams } from "../../../domain.types/engine/intermediate.types";
import { Almanac, ContextParams } from "../../../domain.types/engine/intermediate.types";

////////////////////////////////////////////////////////////////////////

Expand Down Expand Up @@ -47,6 +47,9 @@ export class SchemaInstance {
@Column({ type: 'datetime', nullable: true })
ExecutionStartedTimestamp: Date;

@Column({ type: 'simple-json', nullable: true })
Almanac: Almanac;

@CreateDateColumn()
CreatedAt : Date;

Expand Down
15 changes: 4 additions & 11 deletions src/database/services/engine/schema.instance.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -166,9 +166,8 @@ export class SchemaInstanceService extends BaseService {
if (!schemaInstance) {
ErrorHandler.throwNotFoundError('SchemaInstance not found!');
}
if (model.SchemaId != null) {
const schema = await this._commonUtils.getSchema(model.SchemaId);
schemaInstance.Schema = schema;
if (model.ContextParams != null) {
schemaInstance.ContextParams = model.ContextParams;
}
var record = await this._schemaInstanceRepository.save(schemaInstance);
return SchemaInstanceMapper.toResponseDto(record);
Expand Down Expand Up @@ -249,16 +248,10 @@ export class SchemaInstanceService extends BaseService {
};

if (filters.SchemaId) {
search.where['Schema'] = {
id : ''
};
search.where['Schema'].id = filters.SchemaId;
}
if (filters.ContextId) {
search.where['Context'] = {
id : ''
};
search.where['Context'].id = filters.ContextId;
if (filters.TenantId) {
search.where['TenantId'] = filters.TenantId;
}

return search;
Expand Down
40 changes: 27 additions & 13 deletions src/domain.types/engine/intermediate.types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,15 @@ export interface Location {
export type DistanceUnit = 'km' | 'mi' | 'm';
export type TimestampUnit = 'ms' | 's' | 'm' | 'h' | 'd' | 'w' | 'mo' | 'y';

export interface AlmanacObject {
Name: string;
Data: any[] | any;
}

export interface Almanac {
Facts: AlmanacObject[];
}

export interface QuestionResponseMessage {
QuestionId ?: uuid;
QuestionText ?: string;
Expand Down Expand Up @@ -243,19 +252,24 @@ export interface XNodeInstance {
}

export interface XSchemaInstance {
id : uuid;
SchemaId : uuid;
Schema : XSchema;
Name : string;
Description : string;
Exited : boolean;
RootNode ?: XNode;
TenantId ?: uuid;
Nodes : XNode[];
ContextParams: ContextParams;
CurrentNode : XNode;
CreatedAt : Date;
UpdatedAt : Date;
id : uuid;
SchemaId : uuid;
Schema : XSchema;
Name : string;
Description : string;
Exited : boolean;
RootNode ?: XNode;
RootNodeInstance : XNodeInstance;
TenantId ?: uuid;
Nodes : XNode[];
NodeInstances : XNodeInstance[];
CurrentNodeInstance : XNodeInstance;
ContextParams : ContextParams;
ActiveListeningNodes: XNodeInstance[];
Almanac : Almanac;
CurrentNode : XNode;
CreatedAt : Date;
UpdatedAt : Date;
}

export class XSendMessageAction extends XAction {
Expand Down
8 changes: 4 additions & 4 deletions src/domain.types/engine/schema.instance.types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
import {
uuid
} from "../miscellaneous/system.types";
import { ContextParams } from "./intermediate.types";
import { Almanac, ContextParams } from "./intermediate.types";

//////////////////////////////////////////////////////////////

Expand All @@ -15,8 +15,7 @@ export interface SchemaInstanceCreateModel {
}

export interface SchemaInstanceUpdateModel {
SchemaId ?: uuid;
ContextId ?: uuid;
ContextParams : ContextParams;
}

export interface SchemaInstanceResponseDto {
Expand Down Expand Up @@ -49,6 +48,7 @@ export interface SchemaInstanceResponseDto {
Name: string;
}
}[];
Almanac: Almanac;
ExecutionStarted: boolean;
ExecutionStartedTimestamp: Date;
CreatedAt: Date;
Expand All @@ -57,7 +57,7 @@ export interface SchemaInstanceResponseDto {

export interface SchemaInstanceSearchFilters extends BaseSearchFilters {
SchemaId ?: uuid;
ContextId ?: uuid;
TenantId ?: uuid;
}

export interface SchemaInstanceSearchResults extends BaseSearchResults {
Expand Down
2 changes: 1 addition & 1 deletion src/modules/engine.execution/event.handler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { logger } from "../../logger/logger";
import { EventResponseDto } from "../../domain.types/engine/event.types";
import * as asyncLib from 'async';
import { EventType } from "../../domain.types/enums/event.type";
import UserMessageEventHandler from './user.message.event.handler';
import { UserMessageEventHandler } from './user.message.event.handler';

// import { ContextService } from "../../database/services/engine/context.service";
// import { SchemaInstanceService } from "../../database/services/engine/schema.instance.service";
Expand Down

0 comments on commit cb2c3be

Please # to comment.