Skip to content

Commit 31feaf3

Browse files
committed
eng-2003-converter-cross-app-node-to-LocalConcept
1 parent b96d227 commit 31feaf3

1 file changed

Lines changed: 21 additions & 1 deletion

File tree

packages/database/src/lib/crossAppConverters.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
CrossAppBase,
77
CrossAppNode,
88
} from "../crossAppContracts";
9-
import { LocalContentDataInput } from "../inputTypes";
9+
import { LocalContentDataInput, LocalConceptDataInput } from "../inputTypes";
1010
import { Enums, CompositeTypes } from "../dbTypes";
1111

1212
type InlineEmbeddingInput = CompositeTypes<"inline_embedding_input">;
@@ -55,6 +55,9 @@ const filterUndefined = <T extends Record<string, unknown>>(data: T): T => {
5555
) as T;
5656
};
5757

58+
const filterUndefinedArray = <T>(data: (T | undefined)[]): T[] =>
59+
data.filter((v) => v !== undefined);
60+
5861
const inlineCrossAppContentToDbContent = (
5962
content: InlineCrossAppContent | undefined,
6063
variant: Enums<"ContentVariant">,
@@ -89,3 +92,20 @@ export const crossAppNodeToDbContent = (
8992
variant,
9093
);
9194
};
95+
96+
export const crossAppNodeToDbConcept = (
97+
node: CrossAppNode,
98+
): LocalConceptDataInput => {
99+
return filterUndefined<LocalConceptDataInput>({
100+
...decodeLocalRef(node, "source_local_id"),
101+
name: node.content.direct.value,
102+
...decodeRef(node.author, "author_id", "author_local_id"),
103+
...decodeRef(node.nodeType, "schema_id", "schema_represented_by_local_id"),
104+
contents_inline: filterUndefinedArray([
105+
crossAppNodeToDbContent(node, "direct"),
106+
crossAppNodeToDbContent(node, "full"),
107+
]),
108+
created: node.createdAt?.toISOString(),
109+
last_modified: node.modifiedAt?.toISOString(),
110+
});
111+
};

0 commit comments

Comments
 (0)