@@ -81,13 +81,13 @@ export class SupabaseHocuspocus extends Database {
8181 . from ( "documents" )
8282 . update (
8383 { data : "\\x" + data . state . toString ( "hex" ) } , // add \x for postgres binary data
84- { count : "exact" }
84+ { count : "exact" } ,
8585 )
8686 . eq ( "nano_id" , data . documentName )
8787 . select ( ) ;
8888 if ( ret . data ?. length !== 1 ) {
8989 throw new Error (
90- "unexpected: not found when storing " + data . documentName
90+ "unexpected: not found when storing " + data . documentName ,
9191 ) ;
9292 }
9393 } ,
@@ -164,7 +164,7 @@ export class SupabaseHocuspocus extends Database {
164164 socketId : string ,
165165 documentId : string ,
166166 event : Y . YEvent < any > [ ] ,
167- tr : Y . Transaction
167+ tr : Y . Transaction ,
168168 ) => {
169169 const supabase = this . supabaseMap . get ( socketId ) ;
170170 if ( ! supabase ) {
@@ -191,9 +191,15 @@ export class SupabaseHocuspocus extends Database {
191191 . filter (
192192 ( r ) =>
193193 r . namespace === ChildReference . namespace &&
194- r . type === ChildReference . type
194+ r . type === ChildReference . type ,
195195 )
196- . map ( ( r ) => r . target as string ) ;
196+ . map ( ( r ) => {
197+ const target = r . target as string ;
198+ if ( ! target . startsWith ( "typecell:typecell.org/" ) ) {
199+ console . error ( "invalid target" , target ) ;
200+ }
201+ return target . split ( "/" , 2 ) [ 1 ] ;
202+ } ) ;
197203
198204 const refsIds = await serviceClient
199205 . from ( "documents" )
@@ -229,19 +235,20 @@ export class SupabaseHocuspocus extends Database {
229235
230236 if ( ret . error ) {
231237 throw new Error (
232- "error executing supabase request (remove) " + ret . error . message
238+ "error executing supabase request (remove) " + ret . error . message ,
233239 ) ;
234240 }
235241 }
236242
237243 if ( toAdd . length ) {
238- const ret = await supabase
239- . from ( "document_relations" )
240- . insert ( toAdd . map ( ( e ) => ( { parent_id : documentId , child_id : e } ) ) ) ;
244+ const ret = await supabase . from ( "document_relations" ) . upsert (
245+ toAdd . map ( ( e ) => ( { parent_id : documentId , child_id : e } ) ) ,
246+ { ignoreDuplicates : true } ,
247+ ) ;
241248
242249 if ( ret . error ) {
243250 throw new Error (
244- "error executing supabase request (add) " + ret . error . message
251+ "error executing supabase request (add) " + ret . error . message ,
245252 ) ;
246253 }
247254 }
@@ -259,7 +266,7 @@ export class SupabaseHocuspocus extends Database {
259266 data . socketId ,
260267 documentIdByDocument . get ( data . document ) ! ,
261268 event ,
262- tr
269+ tr ,
263270 ) ;
264271
265272 data . document . getMap ( "refs" ) . observeDeep ( refListener ) ;
0 commit comments