@@ -90,7 +90,7 @@ export class PostRepository extends AbstractRepository<PostModel> {
9090 price : number ,
9191 images : string [ ] ,
9292 user : UserModel ,
93- embedding : number [ ] ,
93+ embedding : number [ ] | null ,
9494 ) : Promise < PostModel > {
9595 const post = new PostModel ( ) ;
9696 post . title = title ;
@@ -561,12 +561,16 @@ export class PostRepository extends AbstractRepository<PostModel> {
561561 excludeUserId : string ,
562562 limit = 20 ,
563563 ) : Promise < PostModel [ ] > {
564+ if ( ! Array . isArray ( queryEmbedding ) || queryEmbedding . length === 0 ) {
565+ return [ ] ;
566+ }
564567 const lit = `[${ queryEmbedding . join ( "," ) } ]` ;
565568 return await this . repository
566569 . createQueryBuilder ( "post" )
567570 . leftJoinAndSelect ( "post.user" , "user" )
568571 . where ( "post.id != :excludePostId" , { excludePostId } )
569572 . andWhere ( "post.embedding IS NOT NULL" )
573+ . andWhere ( "CARDINALITY(post.embedding) > 0" )
570574 . andWhere ( "post.archive = false" )
571575 . andWhere ( "post.sold = false" )
572576 . andWhere ( "user.firebaseUid != :excludeUserId" , { excludeUserId } )
@@ -583,11 +587,15 @@ export class PostRepository extends AbstractRepository<PostModel> {
583587 excludeUserId : string ,
584588 limit = 10 ,
585589 ) : Promise < PostModel [ ] > {
590+ if ( ! Array . isArray ( embedding ) || embedding . length === 0 ) {
591+ return [ ] ;
592+ }
586593 const lit = `[${ embedding . join ( "," ) } ]` ;
587594 return await this . repository
588595 . createQueryBuilder ( "post" )
589596 . leftJoinAndSelect ( "post.user" , "user" )
590597 . where ( "post.embedding IS NOT NULL" )
598+ . andWhere ( "CARDINALITY(post.embedding) > 0" )
591599 . andWhere ( "user.firebaseUid != :excludeUserId" , { excludeUserId } )
592600 . orderBy ( `post.embedding::vector <-> CAST('${ lit } ' AS vector(512))` )
593601 . limit ( limit )
@@ -703,11 +711,15 @@ export class PostRepository extends AbstractRepository<PostModel> {
703711 excludeUserId : string ,
704712 limit = 10 ,
705713 ) : Promise < PostModel [ ] > {
714+ if ( ! Array . isArray ( avgEmbedding ) || avgEmbedding . length === 0 ) {
715+ return [ ] ;
716+ }
706717 const lit = `[${ avgEmbedding . join ( "," ) } ]` ;
707718 return await this . repository
708719 . createQueryBuilder ( "post" )
709720 . leftJoinAndSelect ( "post.user" , "user" )
710721 . where ( "post.embedding IS NOT NULL" )
722+ . andWhere ( "CARDINALITY(post.embedding) > 0" )
711723 . andWhere ( "post.archive = false" )
712724 . andWhere ( "post.sold = false" )
713725 . andWhere ( "user.firebaseUid != :excludeUserId" , { excludeUserId } )
0 commit comments