Skip to content

Commit 54a04e0

Browse files
author
Evan Greer
committed
feat: creates IterableEmbeddedPlacement and IterableEmbeddedMessage classes
1 parent c857da5 commit 54a04e0

2 files changed

Lines changed: 102 additions & 3 deletions

File tree

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import { IterableEmbeddedMessageMetadata } from './IterableEmbeddedMessageMetadata';
2+
import { IterableEmbeddedMessageElements } from './IterableEmbeddedMessageElements';
3+
4+
/**
5+
* IterableEmbeddedMessage represents an embedded message.
6+
*/
7+
export class IterableEmbeddedMessage {
8+
/** The metadata of the embedded message */
9+
metadata: IterableEmbeddedMessageMetadata;
10+
/** The elements of the embedded message */
11+
elements?: IterableEmbeddedMessageElements;
12+
/** The custom payload of the embedded message */
13+
payload?: Record<string, unknown>;
14+
15+
/**
16+
* Creates an instance of `IterableEmbeddedMessage`.
17+
*
18+
* @param metadata - The metadata of the embedded message.
19+
* @param elements - The elements of the embedded message.
20+
* @param payload - The custom payload of the embedded message.
21+
*/
22+
constructor(
23+
metadata: IterableEmbeddedMessageMetadata,
24+
elements?: IterableEmbeddedMessageElements,
25+
payload?: Record<string, unknown>
26+
) {
27+
this.metadata = metadata;
28+
this.elements = elements;
29+
this.payload = payload;
30+
}
31+
32+
/**
33+
* Creates an instance of `IterableEmbeddedMessage` from a dictionary object.
34+
*
35+
* @param dict - The dictionary object containing the properties to initialize the `IterableEmbeddedMessage` instance.
36+
* @returns A new instance of `IterableEmbeddedMessage` initialized with the provided dictionary properties.
37+
*/
38+
static fromDict(dict: Partial<EmbeddedMessageDict>): IterableEmbeddedMessage {
39+
if (!dict.metadata) {
40+
throw new Error('metadata is required');
41+
}
42+
const metadata = IterableEmbeddedMessageMetadata.fromDict(dict.metadata);
43+
const elements = dict.elements
44+
? IterableEmbeddedMessageElements.fromDict(dict.elements)
45+
: undefined;
46+
const payload = dict.payload;
47+
return new IterableEmbeddedMessage(metadata, elements, payload);
48+
}
49+
}
50+
51+
/**
52+
* An interface defining the dictionary object containing the properties for the embedded message.
53+
*/
54+
interface EmbeddedMessageDict {
55+
metadata: IterableEmbeddedMessageMetadata;
56+
elements: IterableEmbeddedMessageElements;
57+
payload: Record<string, unknown>;
58+
}
Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,52 @@
1+
import { IterableEmbeddedMessage } from './IterableEmbeddedMessage';
2+
13
/**
2-
* Iterable embedded placement
3-
* Contains placement id and the associated embedded messages
4+
* IterableEmbeddedPlacement represents an embedded placement.
45
*/
56
export class IterableEmbeddedPlacement {
7+
/** The placement id of the embedded placement */
68
readonly placementId: number;
9+
/** The messages associated with the embedded placement */
10+
readonly messages?: IterableEmbeddedMessage[];
711

8-
constructor(placementId: number) {
12+
/**
13+
* Creates an instance of `IterableEmbeddedPlacement`.
14+
*
15+
* @param placementId - The placement id of the embedded placement.
16+
* @param messages - The messages associated with the embedded placement.
17+
*/
18+
constructor(placementId: number, messages?: IterableEmbeddedMessage[]) {
919
this.placementId = placementId;
20+
this.messages = messages;
21+
}
22+
23+
/**
24+
* Creates an instance of `IterableEmbeddedPlacement` from a dictionary object.
25+
*
26+
* @param dict - The dictionary object containing the properties to initialize the `IterableEmbeddedPlacement` instance.
27+
* @returns A new instance of `IterableEmbeddedPlacement` initialized with the provided dictionary properties.
28+
*/
29+
static fromDict(
30+
dict: Partial<EmbeddedPlacementDict>
31+
): IterableEmbeddedPlacement {
32+
if (!dict.placementId) {
33+
throw new Error('placementId is required');
34+
}
35+
36+
const placementId = dict.placementId;
37+
const messages = dict.messages
38+
? dict.messages?.map((message) =>
39+
IterableEmbeddedMessage.fromDict(message)
40+
)
41+
: undefined;
42+
return new IterableEmbeddedPlacement(placementId, messages);
1043
}
1144
}
45+
46+
/**
47+
* An interface defining the dictionary object containing the properties for the embedded placement.
48+
*/
49+
export interface EmbeddedPlacementDict {
50+
placementId: number;
51+
messages?: IterableEmbeddedMessage[];
52+
}

0 commit comments

Comments
 (0)