Skip to content

Commit

Permalink
Experiment Workflow table done
Browse files Browse the repository at this point in the history
  • Loading branch information
yoganandaness committed Jan 30, 2025
1 parent b8b3280 commit de6b18a
Show file tree
Hide file tree
Showing 95 changed files with 796 additions and 887 deletions.
47 changes: 0 additions & 47 deletions apps/backend/db_patches/0168_ExperimentWorkflow.sql
Original file line number Diff line number Diff line change
Expand Up @@ -33,26 +33,12 @@ BEGIN
/* Adding entity_type column to the workflow and status related tables. Set the default to proposal temporarily, so that the existing record get populated with the value as proposal. Remove the default value after this. */
ALTER TABLE statuses ADD COLUMN entity_type entity_type NOT NULL DEFAULT 'proposal';
ALTER TABLE workflows ADD COLUMN entity_type entity_type NOT NULL DEFAULT 'proposal';
ALTER TABLE workflow_connections ADD COLUMN entity_type entity_type NOT NULL DEFAULT 'proposal';
ALTER TABLE workflow_connection_has_actions ADD COLUMN entity_type entity_type NOT NULL DEFAULT 'proposal';
ALTER TABLE status_changing_events ADD COLUMN entity_type entity_type NOT NULL DEFAULT 'proposal';
END;

BEGIN
/* Drop the default value of proposal */
ALTER TABLE statuses ALTER COLUMN entity_type DROP DEFAULT;
ALTER TABLE workflows ALTER COLUMN entity_type DROP DEFAULT;
ALTER TABLE workflow_connections ALTER COLUMN entity_type DROP DEFAULT;
ALTER TABLE workflow_connection_has_actions ALTER COLUMN entity_type DROP DEFAULT;
ALTER TABLE status_changing_events ALTER COLUMN entity_type DROP DEFAULT;
END;

BEGIN
/* Adding unique constraint for entity_type and status_id in statuses table */
ALTER TABLE statuses ADD CONSTRAINT statuses_short_code_entity_type_uniq_key UNIQUE (short_code, entity_type);
ALTER TABLE statuses ADD CONSTRAINT statuses_status_id_entity_type_uniq_key UNIQUE (status_id, entity_type);
ALTER TABLE workflows ADD CONSTRAINT workflows_workflow_id_entity_type_uniq_key UNIQUE (workflow_id, entity_type);
ALTER TABLE workflow_connections ADD CONSTRAINT workflow_connections_workflow_connection_id_entity_type_uniq_key UNIQUE (workflow_connection_id, entity_type);
END;

BEGIN
Expand All @@ -63,39 +49,6 @@ BEGIN
INSERT INTO statuses (name, short_code, description, entity_type) VALUES ('ESF REJECTED', 'ESF_REJECTED', 'ESF rejected.', 'experiment');
INSERT INTO statuses (name, short_code, description, entity_type) VALUES ('ESF APROVED', 'ESF_APROVED', 'ESF approved.', 'experiment');
END;

BEGIN
/* Need to attach entity_type along with existing fk as a composite foreign key to avoid inconsitencies in entity_type across the tables. */
/* Dropping existing foreign key constraints */
ALTER TABLE workflow_connections
DROP CONSTRAINT proposal_workflow_connections_proposal_workflow_id_fkey,
DROP CONSTRAINT proposal_workflow_connections_proposal_status_id_fkey,
DROP CONSTRAINT proposal_workflow_connections_next_proposal_status_id_fkey,
DROP CONSTRAINT proposal_workflow_connections_prev_proposal_status_id_fkey;

ALTER TABLE workflow_connection_has_actions
DROP CONSTRAINT proposal_workflow_connection_has_actions_connection_id_fkey,
DROP CONSTRAINT proposal_workflow_connection_has_actions_workflow_id_fkey;

ALTER TABLE status_changing_events
DROP CONSTRAINT next_status_events_proposal_workflow_connection_id_fkey;
END;

BEGIN
/* Adding back the foreign key constraints with entity_type(Composite FOreign Key) */
ALTER TABLE workflow_connections
ADD CONSTRAINT workflow_connections_workflow_id_fkey FOREIGN KEY (workflow_id, entity_type) REFERENCES workflows (workflow_id, entity_type) ON DELETE CASCADE,
ADD CONSTRAINT workflow_connections_status_id_fkey FOREIGN KEY (status_id, entity_type) REFERENCES statuses (status_id, entity_type) ON DELETE CASCADE,
ADD CONSTRAINT workflow_connections_next_status_id_fkey FOREIGN KEY (next_status_id, entity_type) REFERENCES statuses (status_id, entity_type) ON DELETE CASCADE,
ADD CONSTRAINT workflow_connections_prev_status_id_fkey FOREIGN KEY (prev_status_id, entity_type) REFERENCES statuses (status_id, entity_type) ON DELETE CASCADE;

ALTER TABLE workflow_connection_has_actions
ADD CONSTRAINT workflow_connection_has_actions_connection_id_fkey FOREIGN KEY (connection_id, entity_type) REFERENCES workflow_connections (workflow_connection_id, entity_type) ON DELETE CASCADE,
ADD CONSTRAINT workflow_connection_has_actions_workflow_id_fkey FOREIGN KEY (workflow_id, entity_type) REFERENCES workflows (workflow_id, entity_type) ON DELETE CASCADE;

ALTER TABLE status_changing_events
ADD CONSTRAINT status_events_workflow_connection_id_fkey FOREIGN KEY (workflow_connection_id, entity_type) REFERENCES workflow_connections (workflow_connection_id, entity_type) ON DELETE CASCADE;
END;
END IF;
END;
$$
Expand Down
9 changes: 4 additions & 5 deletions apps/backend/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions apps/backend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
"@user-office-software/duo-localisation": "^1.2.0",
"@user-office-software/duo-logger": "^2.1.1",
"@user-office-software/duo-message-broker": "^1.6.0",
"@user-office-software/duo-validation": "^5.1.9",
"@user-office-software/duo-validation": "^5.1.12",
"@user-office-software/openid": "^1.4.0",
"await-to-js": "^2.1.1",
"bcryptjs": "^2.4.3",
Expand Down Expand Up @@ -126,4 +126,4 @@
"npm": ">=9.0.0",
"node": ">=18.0.0"
}
}
}
2 changes: 1 addition & 1 deletion apps/backend/src/auth/ProposalAuthorization.ts
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ export class ProposalAuthorization {
checkIfInternalEditable
);
const proposalStatus = (
await this.statusDataSource.getStatus(proposal.statusId, 'proposal')
await this.statusDataSource.getStatus(proposal.statusId)
)?.shortCode;
if (
proposalStatus === ProposalStatusDefaultShortCodes.EDITABLE_SUBMITTED ||
Expand Down
6 changes: 2 additions & 4 deletions apps/backend/src/buildContext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import ReviewMutations from './mutations/ReviewMutations';
import SampleEsiMutations from './mutations/SampleEsiMutations';
import SampleMutations from './mutations/SampleMutations';
import ShipmentMutations from './mutations/ShipmentMutations';
import StatusActionMutations from './mutations/StatusActionMutations';
import StatusActionsLogsMutations from './mutations/StatusActionsLogsMutations';
import StatusMutations from './mutations/StatusMutations';
import TechniqueMutations from './mutations/TechniqueMutations';
Expand All @@ -44,12 +43,12 @@ import PdfTemplateQueries from './queries/PdfTemplateQueries';
import PredefinedMessageQueries from './queries/PredefinedMessageQueries';
import ProposalEsiQueries from './queries/ProposalEsiQueries';
import ProposalQueries from './queries/ProposalQueries';
import ProposalSettingsQueries from './queries/ProposalSettingsQueries';
import QuestionaryQueries from './queries/QuestionaryQueries';
import ReviewQueries from './queries/ReviewQueries';
import SampleEsiQueries from './queries/SampleEsiQueries';
import SampleQueries from './queries/SampleQueries';
import ScheduledEventQueries from './queries/ScheduledEventQueries';
import SettingsQueries from './queries/SettingsQueries';
import ShipmentQueries from './queries/ShipmentQueries';
import StatusActionQueries from './queries/StatusActionQueries';
import StatusActionsLogsQueries from './queries/StatusActionsLogsQueries';
Expand Down Expand Up @@ -93,7 +92,7 @@ const context: BasicResolverContext = {
status: container.resolve(StatusQueries),
workflow: container.resolve(WorkflowQueries),
statusAction: container.resolve(StatusActionQueries),
proposalSettings: container.resolve(ProposalSettingsQueries),
settings: container.resolve(SettingsQueries),
},
mutations: {
admin: container.resolve(AdminMutations),
Expand Down Expand Up @@ -123,7 +122,6 @@ const context: BasicResolverContext = {
statusActionsLogs: container.resolve(StatusActionsLogsMutations),
status: container.resolve(StatusMutations),
workflow: container.resolve(WorkflowMutations),
statusAction: container.resolve(StatusActionMutations),
},
clients: {
scheduler: async () => {
Expand Down
5 changes: 4 additions & 1 deletion apps/backend/src/config/dependencyConfigDefault.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,14 @@ import PostgresScheduledEventDataSource from '../datasources/postgres/ScheduledE
import PostgresShipmentDataSource from '../datasources/postgres/ShipmentDataSource';
import PostgresStatusActionsDataSource from '../datasources/postgres/StatusActionsDataSource';
import StatusActionsLogsDataSource from '../datasources/postgres/StatusActionsLogsDataSource';
import PostgresStatusDataSource from '../datasources/postgres/StatusDataSource';
import PostgresSystemDataSource from '../datasources/postgres/SystemDataSource';
import PostgresTechniqueDataSource from '../datasources/postgres/TechniqueDataSource';
import PostgresTemplateDataSource from '../datasources/postgres/TemplateDataSource';
import PostgresUnitDataSource from '../datasources/postgres/UnitDataSource';
import PostgresUserDataSource from '../datasources/postgres/UserDataSource';
import PostgresVisitDataSource from '../datasources/postgres/VisitDataSource';
import PostgresWorkflowDataSource from '../datasources/postgres/WorkflowDataSource';
import { SkipSendMailService } from '../eventHandlers/MailService/SkipSendMailService';
import {
createSkipListeningHandler,
Expand Down Expand Up @@ -100,7 +102,8 @@ mapClass(
PostgresPredefinedMessageDataSource
);
mapClass(Tokens.StatusActionsLogsDataSource, StatusActionsLogsDataSource);

mapClass(Tokens.WorkflowDataSource, PostgresWorkflowDataSource);
mapClass(Tokens.StatusDataSource, PostgresStatusDataSource);
mapClass(Tokens.UserAuthorization, OAuthAuthorization);
mapClass(Tokens.ProposalAuthorization, ProposalAuthorization);

Expand Down
4 changes: 4 additions & 0 deletions apps/backend/src/config/dependencyConfigE2E.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,14 @@ import PostgresScheduledEventDataSource from '../datasources/postgres/ScheduledE
import PostgresShipmentDataSource from '../datasources/postgres/ShipmentDataSource';
import PostgresStatusActionsDataSource from '../datasources/postgres/StatusActionsDataSource';
import StatusActionsLogsDataSource from '../datasources/postgres/StatusActionsLogsDataSource';
import PostgresStatusDataSource from '../datasources/postgres/StatusDataSource';
import PostgresSystemDataSource from '../datasources/postgres/SystemDataSource';
import PostgresTechniqueDataSource from '../datasources/postgres/TechniqueDataSource';
import PostgresTemplateDataSource from '../datasources/postgres/TemplateDataSource';
import PostgresUnitDataSource from '../datasources/postgres/UnitDataSource';
import PostgresUserDataSource from '../datasources/postgres/UserDataSource';
import PostgresVisitDataSource from '../datasources/postgres/VisitDataSource';
import PostgresWorkflowDataSource from '../datasources/postgres/WorkflowDataSource';
import { essEmailHandler } from '../eventHandlers/email/essEmailHandler';
import { SkipSendMailService } from '../eventHandlers/MailService/SkipSendMailService';
import {
Expand Down Expand Up @@ -92,6 +94,8 @@ mapClass(
PostgresPredefinedMessageDataSource
);
mapClass(Tokens.StatusActionsLogsDataSource, StatusActionsLogsDataSource);
mapClass(Tokens.WorkflowDataSource, PostgresWorkflowDataSource);
mapClass(Tokens.StatusDataSource, PostgresStatusDataSource);
mapClass(Tokens.UserAuthorization, OAuthAuthorization);
mapClass(Tokens.ProposalAuthorization, ProposalAuthorization);

Expand Down
4 changes: 4 additions & 0 deletions apps/backend/src/config/dependencyConfigELI.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,14 @@ import PostgresScheduledEventDataSource from '../datasources/postgres/ScheduledE
import PostgresShipmentDataSource from '../datasources/postgres/ShipmentDataSource';
import PostgresStatusActionsDataSource from '../datasources/postgres/StatusActionsDataSource';
import StatusActionsLogsDataSource from '../datasources/postgres/StatusActionsLogsDataSource';
import PostgresStatusDataSource from '../datasources/postgres/StatusDataSource';
import PostgresSystemDataSource from '../datasources/postgres/SystemDataSource';
import PostgresTechniqueDataSource from '../datasources/postgres/TechniqueDataSource';
import PostgresTemplateDataSource from '../datasources/postgres/TemplateDataSource';
import PostgresUnitDataSource from '../datasources/postgres/UnitDataSource';
import PostgresUserDataSource from '../datasources/postgres/UserDataSource';
import PostgresVisitDataSource from '../datasources/postgres/VisitDataSource';
import PostgresWorkflowDataSource from '../datasources/postgres/WorkflowDataSource';
import { eliEmailHandler } from '../eventHandlers/email/eliEmailHandler';
import { SMTPMailService } from '../eventHandlers/MailService/SMTPMailService';
import {
Expand Down Expand Up @@ -95,6 +97,8 @@ mapClass(
PostgresPredefinedMessageDataSource
);
mapClass(Tokens.StatusActionsLogsDataSource, StatusActionsLogsDataSource);
mapClass(Tokens.WorkflowDataSource, PostgresWorkflowDataSource);
mapClass(Tokens.StatusDataSource, PostgresStatusDataSource);
mapClass(Tokens.UserAuthorization, OAuthAuthorization);
mapClass(Tokens.ProposalAuthorization, ProposalAuthorization);

Expand Down
4 changes: 4 additions & 0 deletions apps/backend/src/config/dependencyConfigSTFC.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,12 @@ import PostgresScheduledEventDataSource from '../datasources/postgres/ScheduledE
import PostgresShipmentDataSource from '../datasources/postgres/ShipmentDataSource';
import PostgresStatusActionsDataSource from '../datasources/postgres/StatusActionsDataSource';
import StatusActionsLogsDataSource from '../datasources/postgres/StatusActionsLogsDataSource';
import PostgresStatusDataSource from '../datasources/postgres/StatusDataSource';
import PostgresSystemDataSource from '../datasources/postgres/SystemDataSource';
import PostgresTemplateDataSource from '../datasources/postgres/TemplateDataSource';
import PostgresUnitDataSource from '../datasources/postgres/UnitDataSource';
import PostgresVisitDataSource from '../datasources/postgres/VisitDataSource';
import PostgresWorkflowDataSource from '../datasources/postgres/WorkflowDataSource';
import StfcFapDataSource from '../datasources/stfc/StfcFapDataSource';
import StfcInstrumentDataSource from '../datasources/stfc/StfcInstrumentDataSource';
import StfcProposalDataSource from '../datasources/stfc/StfcProposalDataSource';
Expand Down Expand Up @@ -92,6 +94,8 @@ mapClass(
PostgresPredefinedMessageDataSource
);
mapClass(Tokens.StatusActionsLogsDataSource, StatusActionsLogsDataSource);
mapClass(Tokens.WorkflowDataSource, PostgresWorkflowDataSource);
mapClass(Tokens.StatusDataSource, PostgresStatusDataSource);
mapClass(Tokens.UserAuthorization, StfcUserAuthorization);
mapClass(Tokens.ProposalAuthorization, StfcProposalAuthorization);

Expand Down
4 changes: 4 additions & 0 deletions apps/backend/src/config/dependencyConfigTest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,13 @@ import ScheduledEventDataSourceMock from '../datasources/mockups/ScheduledEventD
import { ShipmentDataSourceMock } from '../datasources/mockups/ShipmentDataSource';
import { StatusActionsDataSourceMock } from '../datasources/mockups/StatusActionsDataSource';
import { StatusActionsLogsDataSourceMock } from '../datasources/mockups/StatusActionsLogsDataSource';
import { StatusDataSourceMock } from '../datasources/mockups/StatusDataSource';
import SystemDataSourceMock from '../datasources/mockups/SystemDataSource';
import { TechniqueDataSourceMock } from '../datasources/mockups/TechniqueDataSource';
import { TemplateDataSourceMock } from '../datasources/mockups/TemplateDataSource';
import { UnitDataSourceMock } from '../datasources/mockups/UnitDataSource';
import { UserDataSourceMock } from '../datasources/mockups/UserDataSource';
import { WorkflowDataSourceMock } from '../datasources/mockups/WorkflowDataSource';
import PostgresPredefinedMessageDataSource from '../datasources/postgres/PredefinedMessageDataSource';
import { essEmailHandler } from '../eventHandlers/email/essEmailHandler';
import { SkipSendMailService } from '../eventHandlers/MailService/SkipSendMailService';
Expand Down Expand Up @@ -66,6 +68,8 @@ mapClass(
Tokens.ProposalInternalCommentsDataSource,
PostgresProposalInternalCommentsDataSourceMock
);
mapClass(Tokens.WorkflowDataSource, WorkflowDataSourceMock);
mapClass(Tokens.StatusDataSource, StatusDataSourceMock);
mapClass(Tokens.StatusActionsDataSource, StatusActionsDataSourceMock);
mapClass(Tokens.QuestionaryDataSource, QuestionaryDataSourceMock);
mapClass(Tokens.RedeemCodesDataSource, RedeemDataSourceMock);
Expand Down
6 changes: 2 additions & 4 deletions apps/backend/src/context/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import ReviewMutations from '../mutations/ReviewMutations';
import SampleEsiMutations from '../mutations/SampleEsiMutations';
import SampleMutations from '../mutations/SampleMutations';
import ShipmentMutations from '../mutations/ShipmentMutations';
import StatusActionMutations from '../mutations/StatusActionMutations';
import StatusActionsLogsMutations from '../mutations/StatusActionsLogsMutations';
import StatusMutations from '../mutations/StatusMutations';
import TechniqueMutations from '../mutations/TechniqueMutations';
Expand All @@ -43,12 +42,12 @@ import PdfTemplateQueries from '../queries/PdfTemplateQueries';
import PredefinedMessageQueries from '../queries/PredefinedMessageQueries';
import ProposalEsiQueries from '../queries/ProposalEsiQueries';
import ProposalQueries from '../queries/ProposalQueries';
import ProposalSettingsQueries from '../queries/ProposalSettingsQueries';
import QuestionaryQueries from '../queries/QuestionaryQueries';
import ReviewQueries from '../queries/ReviewQueries';
import SampleEsiQueries from '../queries/SampleEsiQueries';
import SampleQueries from '../queries/SampleQueries';
import ScheduledEventQueries from '../queries/ScheduledEventQueries';
import SettingsQueries from '../queries/SettingsQueries';
import ShipmentQueries from '../queries/ShipmentQueries';
import StatusActionQueries from '../queries/StatusActionQueries';
import StatusActionsLogsQueries from '../queries/StatusActionsLogsQueries';
Expand Down Expand Up @@ -89,7 +88,7 @@ interface ResolverContextQueries {
internalReview: InternalReviewQueries;
statusActionsLogs: StatusActionsLogsQueries;
status: StatusQueries;
proposalSettings: ProposalSettingsQueries;
settings: SettingsQueries;
workflow: WorkflowQueries;
statusAction: StatusActionQueries;
}
Expand Down Expand Up @@ -122,7 +121,6 @@ interface ResolverContextMutations {
statusActionsLogs: StatusActionsLogsMutations;
status: StatusMutations;
workflow: WorkflowMutations;
statusAction: StatusActionMutations;
}
interface ResolverContextServices {
pdfServices: PDFServices;
Expand Down
6 changes: 2 additions & 4 deletions apps/backend/src/datasources/StatusActionsDataSource.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,11 @@ import { AddConnectionStatusActionsInput } from '../resolvers/mutations/settings
export interface StatusActionsDataSource {
getConnectionStatusActions(
proposalWorkflowConnectionId: number,
proposalWorkflowId: number,
entityType: ConnectionHasStatusAction['entityType']
proposalWorkflowId: number
): Promise<ConnectionHasStatusAction[]>;
getConnectionStatusAction(
proposalWorkflowConnectionId: number,
proposalStatusActionId: number,
entityType: ConnectionHasStatusAction['entityType']
proposalStatusActionId: number
): Promise<ConnectionHasStatusAction>;
updateConnectionStatusAction(
data: ConnectionHasStatusAction
Expand Down
5 changes: 1 addition & 4 deletions apps/backend/src/datasources/StatusDataSource.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,7 @@ export interface StatusDataSource {
createStatus(
newStatusInput: Omit<Status, 'id' | 'isDefault'>
): Promise<Status>;
getStatus(
statusId: number,
entityType: Status['entityType']
): Promise<Status | null>;
getStatus(statusId: number): Promise<Status | null>;
getAllStatuses(entityType: Status['entityType']): Promise<Status[]>;
updateStatus(proposalStatus: Omit<Status, 'entityType'>): Promise<Status>;
deleteStatus(statusId: number): Promise<Status>;
Expand Down
Loading

0 comments on commit de6b18a

Please sign in to comment.