Skip to content

Commit c180ac6

Browse files
committed
patch(feat): octo-aws-cdk AwsEnvironment model.
1 parent a3d8f4e commit c180ac6

File tree

3 files changed

+32
-17
lines changed

3 files changed

+32
-17
lines changed

packages/octo-aws-cdk/src/models/environment/actions/add-environment.model.action.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import { Action, ActionOutputs, Diff, DiffAction, Environment, Factory, IModelAction, ModelType } from '@quadnix/octo';
1+
import { Action, ActionOutputs, Diff, DiffAction, Factory, IModelAction, ModelType } from '@quadnix/octo';
22
import { EcsCluster } from '../../../resources/ecs/ecs-cluster.resource.js';
33
import { AwsRegion } from '../../region/aws.region.model.js';
4+
import { AwsEnvironment } from '../aws.environment.model.js';
45

56
@Action(ModelType.MODEL)
67
export class AddEnvironmentModelAction implements IModelAction {
@@ -12,12 +13,15 @@ export class AddEnvironmentModelAction implements IModelAction {
1213

1314
filter(diff: Diff): boolean {
1415
return (
15-
diff.action === DiffAction.ADD && diff.model.MODEL_NAME === 'environment' && diff.field === 'environmentName'
16+
diff.action === DiffAction.ADD &&
17+
diff.model instanceof AwsEnvironment &&
18+
diff.model.MODEL_NAME === 'environment' &&
19+
diff.field === 'environmentName'
1620
);
1721
}
1822

1923
async handle(diff: Diff): Promise<ActionOutputs> {
20-
const environment = diff.model as Environment;
24+
const environment = diff.model as AwsEnvironment;
2125
const environmentName = environment.environmentName;
2226
const region = environment.getParents()['region'][0].to as AwsRegion;
2327
const clusterName = [region.regionId, environmentName].join('-');

packages/octo-aws-cdk/src/models/environment/actions/delete-environment.model.action.ts

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,14 @@
1-
import {
2-
Action,
3-
ActionInputs,
4-
ActionOutputs,
5-
Diff,
6-
DiffAction,
7-
Environment,
8-
Factory,
9-
IModelAction,
10-
ModelType,
11-
} from '@quadnix/octo';
1+
import { Action, ActionInputs, ActionOutputs, Diff, DiffAction, Factory, IModelAction, ModelType } from '@quadnix/octo';
122
import { EcsCluster } from '../../../resources/ecs/ecs-cluster.resource.js';
133
import { AwsRegion } from '../../region/aws.region.model.js';
4+
import { AwsEnvironment } from '../aws.environment.model.js';
145

156
@Action(ModelType.MODEL)
167
export class DeleteEnvironmentModelAction implements IModelAction {
178
readonly ACTION_NAME: string = 'DeleteEnvironmentModelAction';
189

1910
collectInput(diff: Diff): string[] {
20-
const environment = diff.model as Environment;
11+
const environment = diff.model as AwsEnvironment;
2112
const environmentName = environment.environmentName;
2213
const region = environment.getParents()['region'][0].to as AwsRegion;
2314
const clusterName = [region.regionId, environmentName].join('-');
@@ -27,12 +18,15 @@ export class DeleteEnvironmentModelAction implements IModelAction {
2718

2819
filter(diff: Diff): boolean {
2920
return (
30-
diff.action === DiffAction.DELETE && diff.model.MODEL_NAME === 'environment' && diff.field === 'environmentName'
21+
diff.action === DiffAction.DELETE &&
22+
diff.model instanceof AwsEnvironment &&
23+
diff.model.MODEL_NAME === 'environment' &&
24+
diff.field === 'environmentName'
3125
);
3226
}
3327

3428
async handle(diff: Diff, actionInputs: ActionInputs): Promise<ActionOutputs> {
35-
const environment = diff.model as Environment;
29+
const environment = diff.model as AwsEnvironment;
3630
const environmentName = environment.environmentName;
3731
const region = environment.getParents()['region'][0].to as AwsRegion;
3832
const clusterName = [region.regionId, environmentName].join('-');
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { Diff, Environment, Model } from '@quadnix/octo';
2+
import { EnvironmentVariablesAnchor } from '../../anchors/environment-variables.anchor.js';
3+
4+
@Model()
5+
export class AwsEnvironment extends Environment {
6+
constructor(environmentName: string) {
7+
super(environmentName);
8+
9+
const evAnchorId = `${this.environmentName.charAt(0).toUpperCase() + this.environmentName.slice(1)}EnvironmentEV`;
10+
this.anchors.push(new EnvironmentVariablesAnchor(evAnchorId, this));
11+
}
12+
13+
override async diff(previous?: AwsEnvironment): Promise<Diff[]> {
14+
// Skip diff of environmentVariables, since its done in ExecutionOverlay.
15+
return [];
16+
}
17+
}

0 commit comments

Comments
 (0)