44 LocalOrRemoteRef ,
55 CrossAppEmbedding ,
66 InlineCrossAppContent ,
7+ StandaloneCrossAppContent ,
78 CrossAppBase ,
89 CrossAppNode ,
910 CrossAppNodeSchema ,
@@ -15,6 +16,7 @@ import { LocalContentDataInput, LocalConceptDataInput } from "../inputTypes";
1516import { Enums , CompositeTypes } from "../dbTypes" ;
1617import { spaceUriAndLocalIdToRid , ridToSpaceUriAndLocalId } from "./rid" ;
1718
19+ type ContentDataInput = CompositeTypes < "content_local_input" > ;
1820type InlineEmbeddingInput = CompositeTypes < "inline_embedding_input" > ;
1921type InlineAbstractBase = Partial < CrossAppBase > ;
2022
@@ -45,6 +47,47 @@ const decodeRef = <DbVarName extends string, LocalVarName extends string>(
4547 return decodeLocalRef ( ref , localVarName ) ;
4648} ;
4749
50+ const decodeRefWithNulls = <
51+ DbVarName extends string ,
52+ LocalVarName extends string ,
53+ > (
54+ ref : Ref | undefined ,
55+ dbVarName : DbVarName ,
56+ localVarName : LocalVarName ,
57+ ) : Record < DbVarName , number | null > & Record < LocalVarName , string | null > => {
58+ return {
59+ [ dbVarName ] : ref && "dbId" in ref ? ref . dbId : null ,
60+ [ localVarName ] : ref && "localId" in ref ? ref . localId : null ,
61+ } as Record < DbVarName , number | null > & Record < LocalVarName , string | null > ;
62+ } ;
63+
64+ const decodeRefWithInlineNulls = <
65+ DbVarName extends string ,
66+ LocalVarName extends string ,
67+ InlineVarName extends string ,
68+ > ( {
69+ ref,
70+ dbVarName,
71+ localVarName,
72+ inlineVarName,
73+ } : {
74+ ref ?: Ref ;
75+ dbVarName : DbVarName ;
76+ localVarName : LocalVarName ;
77+ inlineVarName : InlineVarName ;
78+ } ) : Record < DbVarName , number | null > &
79+ Record < LocalVarName , string | null > &
80+ Record < InlineVarName , null > => {
81+ return {
82+ [ dbVarName ] : null ,
83+ [ localVarName ] : null ,
84+ [ inlineVarName ] : null ,
85+ ...decodeRef ( ref , dbVarName , localVarName ) ,
86+ } as Record < DbVarName , number | null > &
87+ Record < LocalVarName , string | null > &
88+ Record < InlineVarName , null > ;
89+ } ;
90+
4891const decodeLocalOrRemoteRef = <
4992 LocalVarName extends string ,
5093 DbVarName extends string ,
@@ -138,6 +181,43 @@ const inlineCrossAppContentToDbContent = (
138181 } ) ;
139182} ;
140183
184+ export const crossAppStandaloneContentToDbContent = (
185+ content : StandaloneCrossAppContent | undefined ,
186+ space : Ref ,
187+ ) : ContentDataInput | undefined => {
188+ if ( content === undefined ) return undefined ;
189+ return {
190+ source_local_id : content . localId ,
191+ text : content . value ,
192+ scale : content . scale || "document" ,
193+ content_type : content . contentType || "text/plain" ,
194+ variant : content . variant ,
195+ created : content . createdAt . toISOString ( ) ,
196+ last_modified : ( content . modifiedAt || content . createdAt ) . toISOString ( ) ,
197+ embedding_inline : crossAppEmbeddingToDbEmbedding ( content . embedding ) || null ,
198+ ...decodeRefWithInlineNulls ( {
199+ ref : content . author ,
200+ dbVarName : "author_id" ,
201+ localVarName : "author_local_id" ,
202+ inlineVarName : "author_inline" ,
203+ } ) ,
204+ ...decodeRefWithNulls ( space , "space_id" , "space_url" ) ,
205+ // provide other explicit null values for type completion
206+ ...decodeRefWithInlineNulls ( {
207+ dbVarName : "creator_id" ,
208+ localVarName : "creator_local_id" ,
209+ inlineVarName : "creator_inline" ,
210+ } ) ,
211+ ...decodeRefWithInlineNulls ( {
212+ dbVarName : "document_id" ,
213+ localVarName : "document_local_id" ,
214+ inlineVarName : "document_inline" ,
215+ } ) ,
216+ ...decodeRefWithNulls ( undefined , "part_of_id" , "part_of_local_id" ) ,
217+ metadata : null ,
218+ } ;
219+ } ;
220+
141221export const crossAppNodeToDbContent = (
142222 node : CrossAppNode | undefined ,
143223 variant : "full" | "direct" ,
0 commit comments